【问题标题】:Access elements in summary() in R在 R 中的 summary() 中访问元素
【发布时间】:2016-08-24 13:16:47
【问题描述】:
我想在 R 中访问 Anova 摘要的一些元素。我一直在尝试类似这个问题 Access or parse elements in summary() in R 中的内容。
当我将摘要转换为字符串时,它会显示如下内容:
str(summ)
List of 1
$ :Classes 'anova' and 'data.frame': 2 obs. of 5 variables:
..$ Df : num [1:2] 3 60
..$ Sum Sq : num [1:2] 0.457 2.647
..$ Mean Sq: num [1:2] 0.1523 0.0441
..$ F value: num [1:2] 3.45 NA
..$ Pr(>F) : num [1:2] 0.022 NA
- attr(*, "class")= chr [1:2] "summary.aov" "listof"
如何访问 F 值?
我一直在尝试summ[c('F value')] 之类的东西,但仍然无法正常工作。
任何帮助将不胜感激!
【问题讨论】:
标签:
r
statistics
output
elements
【解决方案1】:
你有一个列表中的 anova 对象(str 输出的第一行是 List of 1)。所以你需要得到这个单个元素的“F值”,比如:
summm[[1]][["F value"]]
【解决方案2】:
作为上述答案的补充,当您想要访问/使用模型对象的各种元素时,我建议您开始使用 broom 包。
首先,通过使用str 命令,您不会将摘要转换为字符串,而只会看到摘要的结构,即列表。所以,str 表示“结构”。
broom 包使您可以将模型对象的信息保存为数据框,这样更易于操作。检查我的简单示例:
library(broom)
fit <- aov(mpg ~ vs, data = mtcars)
# check the summary of the ANOVA (not possible to access info/elements)
fit2 = summary(fit)
fit2
# Df Sum Sq Mean Sq F value Pr(>F)
# vs 1 496.5 496.5 23.66 3.42e-05 ***
# Residuals 30 629.5 21.0
# create a data frame of the ANOVA
fit3 = tidy(fit)
fit3
# term df sumsq meansq statistic p.value
# 1 vs 1 496.5279 496.52790 23.66224 3.415937e-05
# 2 Residuals 30 629.5193 20.98398 NA NA
# get F value (or any other values)
fit3$statistic[1]
#[1] 23.66224
我认为对于您提供的具体示例,您实际上并不需要使用broom 方法,但如果它碰巧处理更复杂的模型对象,那么尝试它会非常有用。