假设我使用以下数据
data(iris)
iris
进行以下回归:
linearReg <- lm(Sepal.Length ~ Petal.Length+Petal.Width, data=iris)
linearReg$coefficients
(Intercept) Petal.Length Petal.Width
4.1905824 0.5417772 -0.3195506
现在我想知道如何使用这些系数结果获取我的数据虹膜的每个150个的结果。
答案 0 :(得分:3)
您可以使用fitted.values
功能:
predictions = fitted.values(linearReg)
这会为您提供一个长度为150
的向量,并预测每个向量。例如,predictions[1]
等于4.1905824 + iris$Petal.Length[1]*0.5417772 + iris$Petal.Width[1]*(-0.3195506)
。
如果你想手动完成,你可以做到:
predictions = 4.1905824 + iris$Petal.Length*0.5417772 + iris$Petal.Width*(-0.3195506)
你会得到相同的价值。
答案 1 :(得分:3)
在线性模型对象上使用fitted
将获得每个观察的预测值
fitted(linearReg)
或者,您可以使用predict
插入预测变量来获取模型的预测。在您的情况下,您可以插入原始数据集。
predict(linearReg, newdata = iris)
这里的区别在于,通过预测,您可以获得不在用于构建模型的数据集中的观测值的预测。例如,如果您想对某些新数据进行预测,您只需要一个数据框,其中包含模型中使用的每个预测变量的列,然后将其用作预测中的新数据参数
newdat <- data.frame(Petal.Length = c(1,2,3), Petal.Width = c(2,3,4))
predict(linearReg, newdata = newdat)
# 1 2 3
#4.093258 4.315485 4.537712