【问题标题】:Calculating grouped variance from a frequency table in R从R中的频率表计算分组方差
【发布时间】:2015-02-22 15:41:46
【问题描述】:

我如何在 R 中从如下所示的数据集中计算总体方差和每个组的方差(例如):

Group Count Value
A      3     5
A      2     8
B      1     11
B      3     15

我知道要计算整体方差,而忽略我会做的组: var(rep(x$Value, x$Count)), 但是我如何自动计算每组考虑频率的方差?例如,A 组、B 组等的方差...我希望我的输出具有以下标题:

Group, Total Count, Group Variance 

我也查看了此链接; R computing mean, median, variance from file with frequency distribution 不同(没有组组件)所以这不是重复的。

感谢大家的帮助。

【问题讨论】:

    标签: r frequency variance frequency-distribution


    【解决方案1】:

    一个选项是使用data.table。将data.frame转换为data.table(setDT),通过“Group”得到“Value”的var和“Count”的sum

    library(data.table)
    setDT(df1)[, list(GroupVariance=var(rep(Value, Count)),
                          TotalCount=sum(Count)) , by = Group]
    #    Group GroupVariance TotalCount
    #1:     A           2.7          5
    #2:     B           4.0          4
    

    使用dplyr 的类似方式是

    library(dplyr)
    group_by(df1, Group) %>% 
          summarise(GroupVariance=var(rep(Value,Count)), TotalCount=sum(Count))
    #     Group GroupVariance TotalCount
    #1     A           2.7          5
    #2     B           4.0          4
    

    【讨论】:

      【解决方案2】:

      这是一个带有基础 R 的快速包装器。第一步是按 Count 增长数据集,然后按组计算方差

      df1 <- df[rep(seq_len(nrow(df)), df$Count), ]
      with(df1, tapply(Value, Group, var))
      #   A   B 
      # 2.7 4.0 
      

      或者类似

      aggregate(Value ~ Group, df1, function(x) c(Var = var(x), Count = length(x)))
      #   Group Value.Var Value.Count
      # 1     A       2.7         5.0
      # 2     B       4.0         4.0
      

      【讨论】:

      • 我正在尝试解决这个问题 - 但聚合选项对我不起作用。不是错误,只是错误的值...您的第一个选项和“数据表”选项有效。
      • 您在aggregate 中使用的是df 还是df1。使用df1很重要
      • 啊,我明白了。谢谢。现在工作。因此,聚合是此处“with”选项的替代方案。谢谢您的帮助。很多不同的方法来做同样的事情——试图找出哪一个是直观的。
      • @DavidArenburg,是否可以在没有 rep() 函数的情况下使用基本 R 计算方差?我有概率但没有频率表?
      • @Nick rep 函数与var 无关。它用于扩展数据大小。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 2014-05-03
      • 2019-01-25
      • 2016-10-30
      • 2020-12-25
      • 2014-06-17
      • 2017-05-12
      相关资源
      最近更新 更多