【问题标题】:Measuring 'spread' of values between groups of observations测量观察组之间值的“传播”
【发布时间】:2020-05-05 22:24:56
【问题描述】:

这可能是一个相当基本的统计问题,因为我将在 R 中实现。

我想测量个人之间和组之间的测试分数“分布”(例如,查看哪个测试问题的结果差异最大)。我知道我可以使用标准差来比较个体之间的传播,但是群体之间呢?是不是最好先取每组的平均分,然后测量这些平均值的标准差?

举个具体的例子:

假设我正在收集 9 个人(p1 到 p9)的考试成绩,每个人都属于三个组(g1 到 g3)之一。将收集三个测试分数(metric1、metric2 和 metric3)。

这是一些示例数据:

library(tidyverse)
my_df <- data.frame(stringsAsFactors=FALSE,
      person = c("p1", "p2", "p3", "p4", "p5",
                 "p6", "p7", "p8", "p9"),
       group = c("g1", "g1", "g1", "g2", "g2", "g2",
                 "g3", "g3", "g3"),
      metric1 = c(34, 43, 9, 70, 95, 81, 70, 33, 49),
      metric2 = c(38, 83, 81, 53, 20, 41, 89, 65, 41),
      metric3 = c(39, 87, 76, 88, 35, 85, 63, 29, 54)
)

对于个人,我知道我可以使用标准差来衡量分数的分布;例如:

my_df %>% summarise(
  sd1 = sd(metric1), 
  sd2 = sd(metric2), 
  sd3 = sd(metric3)
  )

衡量组间分布的最佳方法是什么?是不是先取每组的平均值,然后测量这些平均值的标准差?直觉上这是有道理的,但我想知道我是否会以某种方式通过首先取组平均值而“丢失”在个人观察水平上可用的信息。

感谢您的任何意见。

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以使用summarise_at

    library(dplyr)
    my_df %>% 
        summarise_at(vars(starts_with('metric')), sd)
    

    如果我们需要按“组”来做

    my_df %>%
       group_by(group) %>%
       summarise_at(vars(starts_with('metric')), sd)
    

    【讨论】:

      猜你喜欢
      • 2020-06-28
      • 2020-07-13
      • 2015-04-22
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多