作者ror (回血375)
看板R_Language
标题[问题] 如何避免大量lm物件影响速度
时间Sun Nov 1 21:00:49 2015
文章分类提示:
- 问题: 当你想要问问题时,请使用这个类别
[问题类型]:
效能谘询(我想让R 跑更快)
[软体熟悉度]:
使用者(已经有用R 做过不少作品)
[问题叙述]:
请简略描述你所要做的事情,或是这个程式的目的
各位前辈好
想请教一个问题
目前我手上有大概几百万(快到千万)组资料 一组资料是两笔内容
现在要对每一组资料跑lm()回归後 取出相关系数与P-value 等等资讯
但因为要跑的量实在是太大量了 导致速度很慢 已经使用parallel
目前写法是 loop-> lm() ->summary-> 取出value
想请问是否有方式避免重复宣告lm()物件 ...或是其他可以提升速度的方式
感谢 Orz
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.36.55.90
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1446382852.A.422.html
1F:推 Edster: 写成function, 丢入 cmpfun. 写执行序列进入批次档 .bat 11/01 21:07
2F:→ Edster: 这样可以拉些时间起来. 11/01 21:08
3F:→ Edster: 最暴力就是多开几台电脑 用 cmd 呼叫 Rscript 跑 11/01 21:09
4F:→ Edster: 一两年前我就开20多台i7跑模式... 11/01 21:11
5F:→ ror: 感谢Edster cmpfun的方式我会试试看 只是没多余电脑 11/01 21:14
6F:→ ror: 20多台电脑 真是幸福QQ 11/01 21:14
7F:推 Edster: 还有 你可能要注意记忆体会不会吃太凶 11/01 21:19
8F:→ Edster: 我的经验是, 这种大档跑起来会比分成很多小档还慢. 11/01 21:20
9F:→ Edster: 我会执行个一段时间後 直接暴力用 for(1:10) gc() 11/01 21:22
10F:推 Edster: 写成 Rscript 也有手动多工的效果, 就像是多开很多个R一样 11/01 21:26
11F:→ ror: 太感谢了 很有用的建议@@ 我继续实验看看! 11/01 21:26
12F:→ celestialgod: 因为lm会把资料存下来,造成很多记忆体的浪费,建议 11/01 22:25
13F:→ celestialgod: 用rcpp做,直接得出你要的资讯比较快 11/01 22:25
14F:→ celestialgod: 我不确定lm可不可以设定不要存资料 11/01 22:25
15F:→ celestialgod: 而且r回圈真的满慢的…… 11/01 22:27
16F:→ ror: 感谢C大 我没研究过Rccp 会尝试看看! 感谢! 11/01 22:36
17F:推 obarisk: 用lm.fit或是.lm.fit,lm算太多东西了 11/02 13:28
18F:→ ror: 感谢O大回的慢了 有人指点後发现可以不用lm() or lm Orz 11/05 03:46
19F:→ ror: 简单线性回归的话直接取cor就好了 快很多QQ统计基础没学好 11/05 03:46
20F:推 Edster: 你没写最後要取哪些统计量, 我以为你还要系数的std, p 11/05 06:49
21F:→ Edster: 统计课本都会教系数用最小平方法求取的公式,还有系数的std 11/05 06:51
22F:→ Edster: 但是系数的 p值跟 t检定 课本就没写. 如果你不要的话, 11/05 06:52
23F:→ Edster: 自己写公式也是可以. 11/05 06:53
24F:→ ror: 感谢E大 我测试了一下 cor比lm()快了八倍 如果自己写formula 11/05 15:18
25F:→ ror: 效能差不多 ... 目前先用cor()了 然後他人帮助下再改进其他 11/05 15:28
26F:→ ror: 部分程式 等有成果再来回报XD! 感谢一直帮我的各位 11/05 15:29