【问题标题】:New predictions in polynomial regression多项式回归的新预测
【发布时间】:2019-07-29 00:48:54
【问题描述】:

我得到了以下回归模型,我正在尝试做一些预测,但我总是得到一个错误:

model1 <- lm(Sepal.Length ~ Petal.Length +  poly(Sepal.Width, 2), data = iris)
predict(model1, model1$model)

poly(Sepal.Width, 2, coefs = list(alpha = c(3.05733333333333, : 找不到对象“Sepal.Width”

我知道我可以简单地访问预测的拟合值。 但是假设我的新数据如下所示:

newdata <- head(model1$model) + 1

我怎样才能对这个新数据集进行预测而不会出现此错误?

【问题讨论】:

  • 阅读文档:help("predict.lm")newdata 必须与传递给lmdata 具有相同的列名。这显然不是这里的情况。

标签: r regression prediction poly


【解决方案1】:

问题是您使用lm 对象中的model 槽,该槽不包含原始数据,而是包含多项式部分已展开的矩阵:

head(model1$model)
#   Sepal.Length Petal.Length poly(Sepal.Width, 2).1 poly(Sepal.Width, 2).2
# 1          5.1          1.4            0.083201357           -0.016039377
# 2          4.9          1.4           -0.010776079           -0.053252127
# 3          4.7          1.3            0.026814895           -0.056361540
# 4          4.6          1.5            0.008019408           -0.057805919
# 5          5.0          1.4            0.101996844            0.009397687
# 6          5.4          1.7            0.158383306            0.121697905

这当然行不通,因为predict 想要有一个Sepal.Width 列。您可以提供适当的数据参数:

predict(model1, head(iris[, 1:4]) + 1)
#       1        2        3        4        5        6 
# 6.306370 5.845728 5.973836 5.979895 6.406965 6.868732

【讨论】:

  • 是的,我知道,但假设我没有可用的实际数据集。我只是以鸢尾花为例
  • 我想我不太明白你的问题。您想获得哪个数据集的预测?如果是原版,请使用fitted(.),如果是其他的,您可以自己提供。
  • @user11143533 你在找cbind(1, as.matrix(model1$model)[,-1]) %*% coef(model1)吗?这将为您提供拟合值,并可用于使用新矩阵进行预测。
猜你喜欢
  • 2019-01-24
  • 2018-10-19
  • 2012-12-03
  • 1970-01-01
  • 2014-12-18
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
相关资源
最近更新 更多