【问题标题】: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')] 之类的东西,但仍然无法正常工作。

任何帮助将不胜感激!

【问题讨论】:

  • summ[[1]]$`F value` 可以工作
  • summ[[1]]["F值"][[1]][1]

标签: 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 方法,但如果它碰巧处理更复杂的模型对象,那么尝试它会非常有用。

    【讨论】:

      猜你喜欢
      • 2014-10-03
      • 2020-07-19
      • 2011-09-18
      • 1970-01-01
      • 2021-12-20
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多