1

假设我使用以下数据

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 obs 的结果。

  • 第 1 行:4.1905824 + obs1_petal.lenght*0.5417772 +obs1_petal.width*-0.3195506
  • 第 2 行:4.1905824 + obs2_petal.lenght*0.5417772 +obs2_petal.width*-0.3195506
  • ETC
4

2 回答 2

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)

你会得到相同的价值。

于 2013-03-09T19:34:40.013 回答
3

在线性模型对象上使用fitted将获得每个观察值的预测值

fitted(linearReg)

或者,您可以使用predict插入预测器以从模型中获取预测。在您的情况下,您可以插入原始数据集。

 predict(linearReg, newdata = iris)

这里的不同之处在于,使用 predict 可以获得对不在用于构建模型的数据集中的观察结果的预测。例如,如果您想对一些新数据进行预测,您只需要一个数据框,其中包含模型中使用的每个预测变量的列,然后将其用作 predict 中的 newdata 参数

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 
于 2013-03-09T19:36:08.877 回答