2014-09-20 87 views
1

如果我們有爲什麼殘差不同

dd <- structure(list(x = c(-0.27461139896373, -0.36715415967394, -0.396878987664827, 
-0.46247810661517, -0.348554552166752, -0.312871287128712, -0.305359246171965, 
-0.297850026219192, -0.38399462004035, -0.4429, -0.436306074264866, 
-0.316390041493775), y = c(0.805840995132504, 1.9359410430839, 
0.820987654320988, 1.4328231292517, 0.91156462585034, 1.75308641975309, 
1.15646258503401, 1.42795138888889, 1.25575279421433, 3.13271604938272, 
0.825788751714678, 0.583974649162517), x2 = c(6.75, 4, 7.75, 
6.5, 5.33333333333333, 5.41666666666667, 5.16666666666667, 4.16666666666667, 
4.08333333333333, 2.83333333333333, 5.91666666666667, 5.75), 
    g = c("a1", "a3", "a5", "a6", "a2", "a1", "a2", "a1", "a2", 
    "a1", "a3", "a4")), .Names = c("x", "y", "x2", "g"), class = "data.frame", row.names = c(NA, 
-12L)) 

,並做模型:

mm <- lm(y ~ x + x2 + g, 
       data = dd) 
summary(mm) 

我們可以得到的殘差在兩個方面:

res <- residuals(mm,type="partial") 
partial.residuals <- resid(mm) + mm$coefficients["x"] * dd$x 

,爲什麼這些結果不同?

res[,1] 
partial.residuals 

我要繪製x上

+0

'lm'引發錯誤由於只對現有'g'一個級別。 – jbaums 2014-09-20 13:30:28

+0

現在應該修好對不起 – user1320502 2014-09-20 13:45:11

+1

他們有多少不同?請發佈*您的*結果,以便我們可以驗證它不只是浮點舍入。 – 2014-09-20 14:10:40

回答

4

resid(mm, type='partial')的列是等效於工作殘差(即mm$residuals)加上乘以相應模型係數居中迴歸量y的局部殘差。

例如:

mm <- lm(y ~ x + x2 + g, data=dd) 
residuals(mm,type="partial") 
     x   x2   g 
# 1 -0.18983646 -0.611273231 0.31089856 
# 2 0.23116764 0.790012984 0.01595798 
# 3 0.08354355 -1.069032332 0.46956893 
# 4 0.24117753 -0.522368071 0.37710616 
# 5 -0.02863590 -0.008204446 -0.38061524 
# 6 0.17430042 0.244034093 0.58309734 
# 7 0.14337349 0.340491370 -0.10480799 
# 8 -0.69749887 -0.045005009 -0.25260602 
# 9 -0.23111199 0.250821620 -0.66825343 
# 10 0.42415724 1.311203154 0.52049360 
# 11 -0.04076612 -0.486310617 -0.42214709 
# 12 -0.10987052 -0.194369515 -0.44869282 
# attr(,"constant") 
# [1] 1.336908 

resid(mm) + mm$coefficients['x'] * (dd$x - mean(dd$x)) 

#   1   2   3   4   5   6   7 
# -0.18983646 0.23116764 0.08354355 0.24117753 -0.02863590 0.17430042 0.14337349 
#   8   9   10   11   12 
# -0.69749887 -0.23111199 0.42415724 -0.04076612 -0.10987052 

resid(mm) + mm$coefficients['x2'] * (dd$x2 - mean(dd$x2)) 

#   1   2   3   4   5   6 
# -0.611273231 0.790012984 -1.069032332 -0.522368071 -0.008204446 0.244034093 
#   7   8   9   10   11   12 
# 0.340491370 -0.045005009 0.250821620 1.311203154 -0.486310617 -0.194369515 
+0

好吧,唯一的區別是居中 – user1320502 2014-09-21 14:45:28