2016-11-16 74 views
-1

假設我已經有擬合迴歸模型中的R的多個預測值變量,如以下玩具例如:將新數據輸入預測()進行多重回歸?

n <- 20 
x <- rnorm(n) 
y <- rnorm(n) 
z <- x + y + rnorm(n) 
m <- lm(z ~ x + y + I(y^2)) 

現在我有新的日期,由x和y值的,我想預測相應的z值:

x.new <- rnorm(5) 
y.new <- rnorm(5) 

問:我應該如何最佳的通話預測擬合的模型應用到新的數據?

這裏有幾件事情我想,這不工作:

嘗試1.嘗試使用x.newy.new作爲一個新的數據幀的列:

> predict(m, data=data.frame(x=x.new, y=y.new)) 
     1   2   3   4   5   6   7 
-0.0157090 1.1667958 -1.3797101 0.1185750 0.7786496 1.7666232 -0.6692865 
     8   9   10   11   12   13   14 
1.9720532 0.3514206 1.1677019 0.6441418 -2.3010431 -0.3228424 -0.2181511 
     15   16   17   18   19   20 
-0.8883275 0.4549592 -1.0377040 0.1750522 -2.4542843 1.2250101 

這給了20值而不是5,所以不可能是正確的。

嘗試2:也許predict感到困惑,因爲y^2值沒有提供?嘗試使用model.frame以正確的格式提供數據。

> predict(m, model.frame(~ x.new + y.new + I(y.new^2))) 
     1   2   3   4   5   6   7 
-0.0157090 1.1667958 -1.3797101 0.1185750 0.7786496 1.7666232 -0.6692865 
     8   9   10   11   12   13   14 
1.9720532 0.3514206 1.1677019 0.6441418 -2.3010431 -0.3228424 -0.2181511 
     15   16   17   18   19   20 
-0.8883275 0.4549592 -1.0377040 0.1750522 -2.4542843 1.2250101 
Warning message: 
'newdata' had 5 rows but variables found have 20 rows 

同樣,這會導致20個值(加上警告),所以不能正確。

+6

'newdata' not'data' for'predict'。使用'預測(m,newdata = data.frame(x = x.new,y = y.new))' –

回答

1

參數是newdata(而不是data)告訴predict什麼預測。

predict(m, newdata = data.frame(x = x.new, y = y.new)) 
+1

@Cath - 因爲這是一個簡單的答案,我不在乎或不想去搜索重複。他們提供了一個可重複的例子,所以我沒有立即討論這個問題,所以我想我會提供幫助。 – Dason

+3

@Cath他們是否應該在幫助頁面花更多時間?大概。但我給了人們這個懷疑的好處。誰沒有花費大量時間瀏覽幫助頁面,卻沒有意識到參數名稱與您的想法稍有不同,並且您在整個搜索過程中都忽略了這個小細節?問題應該關閉嗎?絕對。應該有降價嗎?我不這麼認爲,但你可以自由地不同意。 – Dason

+0

謝謝,這解決了我的問題。 – jochen

相關問題