2013-03-09 171 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