我使用软件包Anova()
中的函数car
对类型III进行测试。但是我不知道如何提取残差或如何获得参数估计的信息。
是否可以通过类似residuals(model)
和summary.lm(model)
的方式来做到这些?
答案 0 :(得分:3)
Anova
的输出分别为class
anova
和data.frame
。
因此,如果我们将提取与行/列名称一起使用,则它应该起作用。使用?Anova
文档中的可复制示例
library(car)
mod <- lm(conformity ~ fcategory*partner.status, data=Moore,
contrasts=list(fcategory=contr.sum, partner.status=contr.sum))
out <- Anova(mod, type = 3)
str(out)
#Classes ‘anova’ and 'data.frame': 5 obs. of 4 variables:
# $ Sum Sq : num 5753 36 240 175 818
# $ Df : num 1 2 1 2 39
# $ F value: num 274.359 0.859 11.425 4.185 NA
# $ Pr(>F) : num 3.05e-19 4.31e-01 1.66e-03 2.26e-02 NA
# - attr(*, "heading")= chr "Anova Table (Type III tests)\n" "Response: conformity"
print
方法更改了打印输出的方式。但是,如果我们仅剥离anova
类。行名称中也有“残差”
row.names(out)
#[1] "(Intercept)" "fcategory" "partner.status"
#[4] "fcategory:partner.status" "Residuals"
因此,使用行/列名称进行提取
out["Residuals","Sum Sq"]
#[1] 817.764
答案 1 :(得分:0)
根据我对问题的理解,您正在寻找
mod$residuals
也检查
names(mod)
导致
[1] "coefficients" "residuals" "effects" "rank" "fitted.values" "assign" "qr"
[8] "df.residual" "contrasts" "xlevels" "call" "terms" "model"
您可以获得残差列表、系数列表 (mod$coefficients) 等。在 akrun 的示例中:
mod$residuals
1 2 3 4 5 6 7 8 9 10 11
-0.9000000 -8.6250000 -4.6250000 -1.9000000 1.1000000 -2.9000000 4.7500000 -3.2500000 4.1000000 3.1000000 -3.2500000
12 13 14 15 16 17 18 19 20 21 22
0.3750000 -1.9000000 1.7500000 -3.6250000 11.3750000 -2.9000000 -5.6250000 10.3750000 0.3750000 -0.9000000 3.1000000
23 24 25 26 27 28 29 30 31 32 33
7.1428571 -2.2727273 3.6000000 -2.8571429 5.6000000 -4.8571429 2.7272727 -0.2727273 -0.8571429 1.7272727 -2.4000000
34 35 36 37 38 39 40 41 42 43 44
5.7272727 -6.2727273 -5.4000000 2.1428571 -0.2727273 2.7272727 -7.2727273 2.7272727 1.1428571 -1.4000000 -1.8571429
45
0.7272727
和
mod$coefficients
(Intercept) fcategory1 fcategory2 partner.status1
12.0508117 0.1902597 1.0991883 2.4591450
fcategory1:partner.status1 fcategory2:partner.status1
-2.8430736 1.7908550