[問題] 如何避免大量lm物件影響速度

作者: ror (回血375)   2015-11-01 21:00:49
文章分類提示:
- 問題: 當你想要問問題時,請使用這個類別
[問題類型]:
效能諮詢(我想讓R 跑更快)
[軟體熟悉度]:
使用者(已經有用R 做過不少作品)
[問題敘述]:
請簡略描述你所要做的事情,或是這個程式的目的
各位前輩好
想請教一個問題
目前我手上有大概幾百萬(快到千萬)組資料 一組資料是兩筆內容
現在要對每一組資料跑lm()回歸後 取出相關係數與P-value 等等資訊
但因為要跑的量實在是太大量了 導致速度很慢 已經使用parallel
目前寫法是 loop-> lm() ->summary-> 取出value
想請問是否有方式避免重複宣告lm()物件 ...或是其他可以提升速度的方式
感謝 Orz
作者: Edster (Edster)   2015-11-01 21:07:00
寫成function, 丟入 cmpfun. 寫執行序列進入批次檔 .bat這樣可以拉些時間起來.最暴力就是多開幾台電腦 用 cmd 呼叫 Rscript 跑一兩年前我就開20多台i7跑模式...
作者: ror (回血375)   2015-11-01 21:14:00
感謝Edster cmpfun的方式我會試試看 只是沒多餘電腦20多台電腦 真是幸福QQ
作者: Edster (Edster)   2015-11-01 21:19:00
還有 你可能要注意記憶體會不會吃太兇我的經驗是, 這種大檔跑起來會比分成很多小檔還慢.我會執行個一段時間後 直接暴力用 for(1:10) gc()寫成 Rscript 也有手動多工的效果, 就像是多開很多個R一樣
作者: ror (回血375)   2015-11-01 21:26:00
太感謝了 很有用的建議@@ 我繼續實驗看看!
作者: celestialgod (天)   2015-11-01 22:25:00
因為lm會把資料存下來,造成很多記憶體的浪費,建議用rcpp做,直接得出你要的資訊比較快我不確定lm可不可以設定不要存資料而且r回圈真的滿慢的……
作者: ror (回血375)   2015-11-01 22:36:00
感謝C大 我沒研究過Rccp 會嘗試看看! 感謝!
作者: obarisk (OSWALT)   2015-11-02 13:28:00
用lm.fit或是.lm.fit,lm算太多東西了
作者: ror (回血375)   2015-11-05 03:46:00
感謝O大回的慢了 有人指點後發現可以不用lm() or lm Orz簡單線性回歸的話直接取cor就好了 快很多QQ統計基礎沒學好
作者: Edster (Edster)   2015-11-05 06:49:00
你沒寫最後要取哪些統計量, 我以為你還要係數的std, p統計課本都會教係數用最小平方法求取的公式,還有係數的std但是係數的 p值跟 t檢定 課本就沒寫. 如果你不要的話,自己寫公式也是可以.
作者: ror (回血375)   2015-11-05 15:18:00
感謝E大 我測試了一下 cor比lm()快了八倍 如果自己寫formula效能差不多 ... 目前先用cor()了 然後他人幫助下再改進其他部分程式 等有成果再來回報XD! 感謝一直幫我的各位

Links booklink

Contact Us: admin [ a t ] ucptt.com