从方差分析 Table 中选取平方和 在 R 中保留变量名称

Picking Off Sum of Squares From Anova Table Keeping Variable Names in R

这很痒。我可以解决它,但方式很麻烦。我认为有更好的方法。 (?aov里面的信息不多。)

我正在尝试将方差分析中的平方和提取到向量中,同时保留变量名称。

f <- y ~ x1 + x2 + ... + xn
ss <- anova( aov( f ) )[,2]

给了我 SS,但丢失了变量名。 (我可以编写代码来重新附加公式或模型属性中的名称。)

as.data.frame(summary.aov(aov( f )))

保留变量 space 填充,并附加行名、方差分析属性等,而不仅仅是给我一个简单的命名向量。

两次调用 *anova*(aov()) 的方向是否正确?

还是我应该重写summary.aov()

还是我应该自己计算数字?

推荐的方式是什么?

如果你提供样本数据会更简单,但这里有一个例子 mtcars:

data(mtcars)
mtcars.aov <- aov(hp~cyl+vs+am+gear+carb, mtcars)
mtcars.ss <- summary(mtcars.aov)
table <- data.frame(mtcars.ss[[1]])[, 2, drop=FALSE]
table
#                  Sum Sq
# cyl         100984.1721
# vs             985.7296
# am            6606.3122
# gear          8275.5360
# carb          5323.6281
# Residuals    23551.4970

关注@dash2 的评论和@dcarlson 的回答:

library(dplyr)
library(broom)
mtcars.aov %>% tidy() %>% select(term,sumsq)
##   term        sumsq
##   <chr>       <dbl>
## 1 cyl       100984.
## 2 vs           986.
## 3 am          6606.
## 4 gear        8276.
## 5 carb        5324.
## 6 Residuals  23551.