2016-11-16 32 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