看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [問題敘述]: 各位好~! 我的資料型態是變數 >> 要預測的目標 (也就是變數的維度很高) 假設是 10x10000的資料 也就是由10000個變數作回歸 分析出10個對應結果 將資料丟進lm()做回歸分析時 發現會跑出一堆NA 但是如果我將變數做擷取 從原先的10000取前9行 (讓行數小於列數: 9 < 10) 在丟進lm() 這樣就可以正常運作 生出10個對應結果 但是這樣只是取原先資料的一小部份來做回歸 想請問lm()函式 或是R語言 要怎樣做才能對這種變數維度很高的資料回歸分析呢? 先感謝回答~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1420710646.A.60F.html
andrew43: 請提供例子以重現錯誤。 01/08 18:04
Wush978: 一般線性模型在變數超過資料筆數時,會略過超過的部份 01/08 18:20
Wush978: lm應該就是把變數的個數降到跟資料一樣,然後給你答案 01/08 18:20
Wush978: 你可能要先去找feature selection相關的方法 01/08 18:21
Wush978: 或是用如glmnet之類的套件跑Lasso來把多餘的變數壓到0 01/08 18:21
andrew43: 在數學上,這是不可能的。先降維度,或是RDA等類似方法 01/08 18:40
andrew43: 。 01/08 18:40
pornstar: 那我目前的資料已經先做過PCA了 原本有到上千萬行 01/08 18:43
andrew43: 否則未知數比等式多,無限多解 01/08 18:44
pornstar: 是否適合在做一次PCA? 或是接著再做RDA? 因為把資料縮 01/08 18:45
pornstar: 太小也會擔心不夠準... 01/08 18:45
Wush978: 就我所知,現在很多研究是用Lasso(L1-regularization) 01/08 19:01
Wush978: 來處理變數超過資料數的狀況(常見於基因相關研究) 01/08 19:01
Wush978: Lasso就是L1-regularized的lm,所以你可以先去找資料看 01/08 19:02
pornstar: 感謝樓上給關鍵字~ 01/08 19:03
andrew43: 降維後上千變數但只有十個重複,無論結果如何,仍需面對 01/08 19:11
andrew43: 無單一解的問題。請小心解釋結果。 01/08 19:11