r - 测量观察组之间值的“传播”
问题描述
这可能是一个相当基本的统计问题,因为我将在 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)
)
衡量群体之间传播的最佳方法是什么?是不是先取每组的平均值,然后测量这些平均值的标准差?直觉上这是有道理的,但我想知道我是否会通过首先取组平均值而以某种方式“丢失”在个人观察水平上可用的信息。
感谢您可能有的任何意见。
解决方案
我们可以用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)
推荐阅读
- python - Comparing date column values in one dateframe with two date column in another dataframe by row in Pandas
- java - Why my String is returning as a blank string?(JAVA)
- node.js - 带有本地 https 服务器的电子,重定向 POST 请求在飞行前失败
- javascript - 从登录页面路由后内容消失?React 路由器 Dom + Electron
- powerapps - 如何在 localhost 测试 PowerApps 自定义连接器 GET 请求?
- azure-ad-b2c - Azure B2C,在 IDP 启动的自定义提供程序配置上未设置对象引用错误
- psycopg2 - 具有不同空数据类型的 psycopg2 Copy_From
- ios - 无法访问我的单元格内容中的变量
- python - How to functionally compose futures?
- nlog - 归档文件大小超过指定大小,archiveAboveSize 与 NLog