【问题标题】:predict lm function in R (multiple linear regression)预测 R 中的 lm 函数(多元线性回归)
【发布时间】:2015-06-21 21:22:08
【问题描述】:

我使用函数 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")

谁能帮帮我!提前致谢。

【问题讨论】:

    标签: r lm predict


    【解决方案1】:

    问题是您在拟合模型时将v 定义为与t 不同的新变量。 R 不记得变量是如何创建的,因此当您拟合模型时,它不知道 v 是 t 的函数。因此,当您预测值时,它使用 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。

    【讨论】:

      猜你喜欢
      • 2018-10-03
      • 2021-01-04
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      相关资源
      最近更新 更多