2013-03-09 132 views
1

假设我用下面的数据线性回归COEF结果有R

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
+0

那些AREN”一些新的数据t线 - 这些只是预测。 – Dason 2013-03-09 19:33:14

回答

3

可以使用fitted.values功能:

predictions = fitted.values(linearReg) 

这给你长的矢量与每个的预测。例如,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) 

,你会得到相同的值。

+0

谢谢,我需要 – S12000 2013-03-09 19:37:47

+0

其实我只是认为你的手动公式也可以是:预测< - linearReg $ coef [1] + iris $ Petal.Length linearReg $ coef [2] + iris $ Petal.Width *(linearReg $ coef [3])// – S12000 2013-03-11 00:22:42

+0

@ Swiss12000:我知道,因为你把原始数字放在问题中,我只是说得更清楚。 – 2013-03-11 00:27:29

3

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

fitted(linearReg) 

或者您可以使用predict在预测插上摆脱的模型预测。在你的情况下,你可以插入原始数据集。

predict(linearReg, newdata = iris) 

的此不同的是,预测你可以得到对于未用于构建模型的数据集中观察的预测。例如,如果你想做出预测的,你只需要一个包含列每个模型中使用的预测数据帧,然后使用它作为在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 
+0

谢谢perfectely我需要什么 – S12000 2013-03-09 19:37:23