我想在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))
提前致谢!
答案 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)))
在这里,我们将price
和predictors
合并到一个data.frame中,使其命名与newdata
data.frame相同。我们使用公式中的.
来表示“所有其他列”,因此我们不必明确指定它们。
答案 1 :(得分:0)
首先需要构建模型,然后从中预测:
mod1 <- lm(price ~ predictor1 + predictor2)
predict( mod1 , data.frame(predictor1=3,predictor2=5))