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