线性回归系数每行R的结果

时间:2013-03-09 19:31:54

标签: r linear-regression

假设我使用以下数据

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

  • 第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

2 个答案:

答案 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