预测R中的lm函数(多元线性回归)

时间:2015-04-15 18:43:49

标签: r lm predict

我使用函数lm在R中进行了多元线性回归,我想用它来预测几个值。所以我正在尝试使用函数predict()。 这是我的代码:

new=data.frame(t=c(10, 20, 30))
v=1/t
LinReg<-lm(p ~ log(t) + v)
Pred=predict(LinReg, new, interval="confidence")

所以我想在t=c(10,20,30...)时预测p的值。但是,这不起作用,我不明白为什么。我得到的错误信息是:

  

“model.frame.default中的错误(条款,newdata,na.action = na.action,xlev = object $ xlevels):变量长度不同(找到'vart')   另外:警告信息:   'newdata'有3行,但找到的变量有132行“

132是我运行回归的变量向量的长度。我检查了我的向量1 / t并且它是明确定义的并且具有正确数量的系数。令人好奇的是,如果我做一个简单的线性回归(一个变量),那么相同的代码效果很好......

new=data.frame(t=c(10, 20, 30))
LinReg<-lm(p ~ log(t))
Pred=predict(LinReg, new, interval="confidence")

任何人都可以帮助我!提前谢谢。

1 个答案:

答案 0 :(得分:1)

问题是,当您适合模型时,您将v定义为t的新变量。 R不记得如何创建变量,因此当您适合模型时,它不知道vt的函数。因此,当您预测值时,它会使用v的现有值,其长度与您指定的t的新值不同。

相反,你想要适合

new <- data.frame(t=c(10, 20, 30))
LinReg <- lm(p ~ log(t) + I(1/t))
Pred <- predict(LinReg, new, interval="confidence")

如果您确实希望v成为完全独立的变量,那么您需要在v data.frame中提供new的值,以便预测{{} 1}}。