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

predict lm function in R (multiple linear regression)

我在 R 中使用函数 lm 进行了多元线性回归,我想用它来预测多个值。所以我正在尝试使用函数 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 的值。但是,这不起作用,我不明白为什么。我收到的错误消息是:

"Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : variable lengths differ (found for 'vart') In addition: Warning message: 'newdata' had 3 rows but variables found have 132 rows "

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

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

谁能帮帮我!提前致谢。

问题是您在拟合模型时将 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 成为一个完全独立的变量,那么您需要在 new data.frame 中提供 v 的值,以便预测 p.