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

gtsummary包配对t检验报错求助:指定group仍提示每组仅一个观测

解决gtsummary中配对t检验的报错问题
  • 错误原因:
    你使用的lalonde数据集是独立样本设计,每个观测仅属于treat=0或treat=1中的一组,不存在配对标识(如配对ID)。配对t检验要求by参数指定的分组下,观测是一一对应的(同一配对的两个观测分属不同组),当前数据无法满足该条件,因此触发报错。

  • 修正方案1:使用独立样本t检验(适配当前lalonde数据)
    由于你的数据是独立两组设计,应替换为独立t检验,且无需指定group参数(by=treat已完成分组):

    install.packages("gtsummary")
    library(gtsummary)
    data(lalonde)
    variables <- lalonde %>% select(age, treat)
    
    table1 <-
      tbl_summary(
        variables,
        by = treat, # 按treat分组
        statistic = list(all_continuous() ~ "{mean} ({sd})"),
        digits = all_continuous() ~ 2,
        missing_text = "(Missing)"
      ) %>%
      add_n() %>%
      add_p(list(all_continuous() ~ "t.test")) %>% # 改用独立t检验
      modify_header(label = "Treatment") %>%
      bold_labels()
    
    table1
    
  • 修正方案2:构造配对数据后使用配对t检验
    若确实需要执行配对检验,需先准备带配对标识的数据集(如每个ID对应两个处理组的观测):

    # 构造配对示例数据
    set.seed(123)
    paired_data <- data.frame(
      id = rep(1:100, 2), # 配对ID
      treat = rep(c(0,1), each=100), # 每个ID对应两个处理组
      age = c(rnorm(100, 30, 5), rnorm(100, 32, 5)) # 配对的年龄数据
    )
    
    # 生成配对检验的汇总表
    table_paired <-
      tbl_summary(
        paired_data,
        by = treat,
        statistic = list(all_continuous() ~ "{mean} ({sd})"),
        digits = all_continuous() ~ 2,
        missing_text = "(Missing)"
      ) %>%
      add_n() %>%
      add_p(list(all_continuous() ~ "paired.t.test"), group = "id") %>% # 指定配对ID为group参数
      modify_header(label = "Treatment") %>%
      bold_labels()
    
    table_paired
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:15:27