为什么不像我的新数据的尺寸那样预测?

时间:2014-05-29 20:27:57

标签: r

我想在R中执行多元回归,并根据训练的模型进行预测。下面是我正在使用的示例代码:

price = c(10,18,18,11,17)
predictors = cbind(c(5,6,3,4,5),c(2,1,8,5,6))
predict(lm(price ~ predictors), data.frame(predictors=matrix(c(3,5),nrow=1)))

因此,基于5个样本训练的2变量回归模型,我想对测试数据点进行预测,其中第一个变量为3,第二个变量为5.但是我从上面的代码中得到警告说'newdata' had 1 rows but variable(s) found have 5 rows。我怎样才能纠正上面的代码?下面的代码工作正常,我将变量分别赋予模型公式。但由于我将有数百个变量,我必须在矩阵中给它们,因为使用+符号附加数百个列是不可行的。

price = c(10,18,18,11,17)
predictor1 = c(5,6,3,4,5)
predictor2 = c(2,1,8,5,6)
predict(lm(price ~ predictor1 + predictor2), data.frame(predictor1=3,predictor2=5))

提前致谢!

2 个答案:

答案 0 :(得分:2)

从协变矩阵到新数据data.frame列名匹配变量名的问题的最简单方法是将输入数据放入data.frame中。试试这个

price = c(10,18,18,11,17)
predictors = cbind(c(5,6,3,4,5),c(2,1,8,5,6))
indata<-data.frame(price,predictors=predictors)

predict(lm(price ~ ., indata), data.frame(predictors=matrix(c(3,5),nrow=1)))

在这里,我们将pricepredictors合并到一个data.frame中,使其命名与newdata data.frame相同。我们使用公式中的.来表示“所有其他列”,因此我们不必明确指定它们。

答案 1 :(得分:0)

首先需要构建模型,然后从中预测:

mod1 <- lm(price ~ predictor1 + predictor2)

predict( mod1 , data.frame(predictor1=3,predictor2=5))