作者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/m.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