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

在MatchThem匹配后如何进行t检验并获取协变量平衡p值?

匹配后协变量平衡的t检验与p值输出方案

用cobalt包输出t检验和p值

cobalt的bal.tab()默认不展示t检验统计量和p值,通过参数配置即可开启。如果matched.datasets是MatchThem返回的多组匹配对象(列表格式),用lapply遍历处理:

library(cobalt)
library(MatchThem)

# 遍历每个匹配结果,生成带t检验和p值的平衡表
lapply(matched.datasets, function(match_obj) {
  bal.tab(match_obj,
          treat = "treat", # 替换为你的处理组变量名
          covariates = c("age", "gender", "bmi"), # 替换为你的协变量列表
          test = TRUE, # 启用统计检验
          statistic = "t", # 指定使用t检验
          un = FALSE) # 仅显示匹配后结果,可选
})

若为单组匹配对象,直接调用bal.tab():

bal.tab(matched.datasets[[1]], 
        treat = "treat", 
        covariates = c("age", "gender"), 
        test = TRUE, 
        statistic = "t")

手动提取数据做t检验

如果cobalt的输出不符合需求,直接从匹配对象中提取数据,用基础R的t.test()分析:

# 提取匹配后数据集
matched_data <- get_matches(matched.datasets[[1]])

# 1:1匹配用配对t检验
lapply(c("age", "gender", "bmi"), function(covar) {
  t.test(matched_data[[covar]] ~ matched_data$treat, paired = TRUE)
})

# 多对一匹配用独立样本t检验
lapply(c("age", "gender", "bmi"), function(covar) {
  t.test(matched_data[[covar]] ~ matched_data$treat)
})

补充说明

  • 协变量平衡评估中,**标准化均值差(SMD)**比p值更具参考价值,因为p值受样本量影响显著,SMD<0.1通常被认为平衡良好。
  • 配对t检验仅适用于1:1匹配的样本,多对一匹配需改用独立样本t检验,具体根据匹配方式调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:57:31