我得到了以下回归模型,我正在尝试做一些预测,但是我总是会出错:
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
如何在不出现此错误的情况下对此新数据集进行预测?
答案 0 :(得分:0)
问题是您使用model
对象中的lm
插槽,该插槽不包含原始数据,而是其中已经扩展了多项式部分的矩阵:
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