从方差分析 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.
这很痒。我可以解决它,但方式很麻烦。我认为有更好的方法。 (?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.