假設我已經有擬合迴歸模型中的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.new
和y.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個值(加上警告),所以不能正確。
'newdata' not'data' for'predict'。使用'預測(m,newdata = data.frame(x = x.new,y = y.new))' –