2013-11-03 49 views
0

我有一個響應變量,我試圖找到一種方法來擬合使用1664個不同的解釋變量的多元線性迴歸模型。我對R相當陌生,並且通過使用公式中的每個解釋變量陳述公式來教導如何做到這一點。但是,因爲我有1664個變量,所以要花很長時間才能完成。有沒有更快的方法來做到這一點?如何擬合1664個解釋變量的多元線性迴歸模型R

謝謝!

+0

我不知道我知道你的意思,但我可能會寫一個腳本來生成我的代碼或把它們放到一個數組並在其上循環。 – duffymo

+1

你只是指'lm(response〜。,data = your_data)'?這是在SO上的其他地方評論的捷徑。 –

+0

這創建了一個包含1664個解釋變量的線性模型,我猜R^2非常接近1;)。 –

回答

3

我想你想從1664個變量中選擇一個有效的模型,即一個能夠用很少的解釋變量儘可能多地預測數據變化的模型。有幾種方法可以做到這一點:

  • 使用專家知識選擇已知相關的變量。這可能是由於其他研究發現這一點,或者是由於您現在使這個變量相關的某個基礎過程所致。
  • 使用某種逐步迴歸方法來選擇變量是基於他們如何很好地解釋數據。請注意,這種方法有一些嚴重的缺點。查看stepAIC,瞭解使用Aikaike信息標準進行此操作的方法。

如果您選擇純粹基於隨機性的95%顯着性水平(0.05 * 1664),將1664個變量與數據相關將產生83個顯着相關性。所以,請謹慎使用自動變量選擇。用專家知識或一些解相關技術(例如主成分分析)減少變量的數量將會有所幫助。

對於代碼示例,您首先需要包含您可以構建的自己的(數據+代碼)示例。

+4

Lasso/Ridge/Elastic Net呢?但是我們真的在CrossValidated地區... –

+1

+1 for @ AriB.Friedman的評論:請參閱'glmnet'軟件包。 –

+0

問題是我不確定哪些變量是相關的。這樣做的目的是基本上減少與相關的變量,從而表明它們對響應變量具有某種形式的重要性。我會嘗試先做逐步迴歸的方法,然後看看我在做線性迴歸之前得到了什麼,謝謝! – user2062207

2

我會回答編程問題,但要注意的是,經常有多個變量的迴歸可能會使用某種變量選擇過程(例如@ PaulHiemstra的建議)。

  1. 您可以構建一個data.frame只與您要運行的變量,然後用公式快捷鍵:form <- y ~ .,這裏的點表示尚未提到的所有變量。
  2. 您可以改爲手動構建公式。例如:form <- as.formula(paste("y ~", paste(myVars,sep="+")))

然後運行你的迴歸:

lm(form, data=dat)