从 Anova 表中提取平方和并在 R 中保留变量名称

时间:2021-05-10 20:58:49

标签: r anova

这是一个痒。我可以解决它,但方法很麻烦。我认为有更好的方法。 (?aov 中没有太多信息。)

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

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

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

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

将变量留为空格,并附加行名、anova 属性等,而不只是给我一个简单的命名向量。

*anova*(aov()) 的双重调用是否是正确的方向?

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

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

推荐的方式是什么?

2 个答案:

答案 0 :(得分:2)

如果您提供示例数据会更简单,但这里有一个带有 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

答案 1 :(得分:1)

遵循@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.
相关问题