You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

rstatix包wilcox_test配对检验如何识别个体样本列?

rstatix::wilcox_test 配对样本的识别逻辑

在你提供的示例中,wilcox_test能正确识别配对样本,核心原因是长格式数据的行顺序严格对应了个体的配对观测,具体逻辑如下:

1. 原数据的结构基础

datarium包的mice2是宽格式数据:每行代表1只小鼠(个体),包含before(给药前体重)和after(给药后体重)两列。当你用gather转成长格式时,每只小鼠的两个观测(before/after)会被转换成连续的两行,且所有个体的before在前、after在后,行顺序完全匹配个体配对关系。

2. wilcox_test(paired=TRUE)的默认配对规则

当未指定id参数时,wilcox_test会默认按照数据的行索引顺序一一配对:

  • 第1行与第2行配对
  • 第3行与第4行配对
  • ……
  • 第2n-1行与第2n行配对

这要求长格式数据满足两个前提:

  • 两组(group中的两个水平)的样本量完全相等
  • 同一配对的两个观测必须在数据中相邻排列,顺序一致

3. 验证:打乱顺序会导致配对错误

如果打乱mice2.long的行顺序,再运行检验,结果会完全错误,因为配对关系被破坏了:

# 打乱行顺序
set.seed(123)
mice2.long.shuffled <- mice2.long[sample(nrow(mice2.long)), ]
# 运行检验,结果会和原结果不同
mice2.long.shuffled %>% wilcox_test(weight ~ group, paired = T)

4. 更严谨的做法:显式指定id列

为了避免行顺序带来的配对错误,更稳妥的方式是显式指定个体id列,让函数明确识别配对关系:

# 转长格式时保留id列(原mice2数据默认有id列)
mice2.long <- mice2 %>% 
  gather(key = "group", value = "weight", before, after) %>%
  arrange(id) # 确保按id排序

# 显式指定id参数
mice2.long %>% wilcox_test(weight ~ group, paired = T, id = id)

此时函数会根据id列分组,将同一id下的两个观测作为配对样本,不受行顺序影响。

内容的提问来源于stack exchange,提问作者Wandering_geek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 05:33:18