假设我已经有拟合回归模型中的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))' –