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
相关产品推荐
相关产品推荐

