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

R语言rstatix包输入数据格式要求及配对t-test报错求助

解决rstatix包t_test配对检验的数据格式问题

核心要求:必须使用长格式数据

rstatix的t_test()执行配对t检验时,要求数据为长格式(long format),结构必须包含:

  • 1列存储所有观测数值(比如你的pre/post测量值)
  • 1列存储分组标识(比如"pre"和"post")
  • 1列存储配对个体的ID(确保每组配对关系一一对应)

你的两次尝试都不符合该要求:

  1. 第一次用的是宽格式(pre和post各占一列),公式写法完全错误——配对检验的公式逻辑是「观测值 ~ 分组标识」,而非两列数值直接对比
  2. 第二次的格式混乱,分组和数值拆分错误,且缺少配对ID,导致函数无法识别配对关系

正确数据格式转换示例

先构建带个体ID的宽格式数据,再转换为符合要求的长格式:

# 带个体ID的宽格式数据
df_wide <- data.frame(
  id = 1:5,          # 配对个体的唯一标识
  pre = 1:5,
  post = 2:6
)

# 用tidyr转换成rstatix要求的长格式(rstatix与tidyverse生态兼容)
library(tidyr)
df_long <- pivot_longer(df_wide, cols = c(pre, post), names_to = "group", values_to = "value")

转换后的长格式数据如下:

# A tibble: 10 × 3
      id group value
   <int> <chr> <int>
 1     1 pre       1
 2     1 post      2
 3     2 pre       2
 4     2 post      3
 5     3 pre       3
 6     3 post      4
 7     4 pre       4
 8     4 post      5
 9     5 pre       5
10    5 post      6

正确调用t_test的方式

使用长格式数据,指定公式、配对参数及配对ID:

library(rstatix)
# 配对t检验:观测值value按group分组,基于id配对
t_test(df_long, formula = value ~ group, paired = TRUE, pair = id)

执行后会输出正确的检验结果:

# A tibble: 1 × 8
  .y.   group1 group2    n1    n2 statistic    df     p
* <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl> <dbl>
1 value pre    post       5     5    -11.2      4 0.000269

关于官方ToothGrowth示例的说明

你提到的ToothGrowth示例中,t_test(ToothGrowth, formula = len~dose, paired=T)能运行,是因为函数默认按行位置配对,但这并非严谨的配对检验用法——实际场景中必须通过pair参数指定明确的配对ID,否则配对关系会混乱。

rstatix通用数据格式总结

rstatix多数统计函数(t检验、方差分析等)的通用格式要求:

  • 配对检验:长格式数据,需包含「观测值列」「分组列」「配对ID列」,公式为观测值列 ~ 分组列,并指定paired=TRUE和pair=配对ID列
  • 独立样本/单样本检验:长格式数据,仅需「观测值列」「分组列」(单样本可省略分组列)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:45:30