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

关于R语言COBALT包bal.tab函数p值统计检验及结果矛盾的问询

倾向得分匹配后bal.tab平衡判定的矛盾与统计检验疑问

我采用最近邻法进行倾向得分匹配,使用COBALT包的bal.tab()函数设置均值差阈值为0.05来评估匹配后的组间平衡,执行代码如下:

# Balance tables with thresholds for mean differences and means pre and post matching
bal.tab(m.outtest, continuous = "std", binary = "raw", disp = c("means"), un = TRUE, stats = c("m"),thresholds = c(m = .05))

得到的平衡结果中,duration_h的匹配后均值差(Diff.Adj)为0.0774,被标记为“Not Balanced, >0.05”;但通常p值>0.05表示组间无显著差异,这与当前标记逻辑存在矛盾。同时我未找到bal.tab()函数中判定平衡的p值所基于的统计检验方法,现寻求对该矛盾及统计检验依据的解释。


问题解释与解答

  • 关于平衡标记与p值的矛盾
    这里不存在逻辑矛盾:bal.tab()的不平衡标记完全基于你设定的均值差阈值(0.05),和假设检验的p值没有关系。你通过thresholds = c(m = .05)指定了判断标准——只要标准化均值差(因你设置continuous = "std",连续变量用标准化均值差)超过0.05,就会标记为不平衡。
    均值差是描述性的差异大小度量,反映组间实际差异的幅度;而p值是统计显著性指标,反映的是“在原假设成立时观察到当前差异的概率”,两者评估维度完全不同:大样本下极小的均值差也可能得到显著p值,小样本下较大的均值差也可能p>0.05。bal.tab()此处的判定逻辑只遵循你设定的均值差阈值,和p值无关。

  • 关于统计检验方法
    你当前的代码中stats = c("m"),仅要求输出均值差(m代表mean difference),bal.tab()并没有计算p值,所以你找不到对应p值的检验方法是合理的。若要调用p值统计量,需将stats参数设为c("m", "p")。此时默认的检验规则为:

    • 连续变量:匹配前用两样本t检验,匹配后根据匹配类型(如最近邻匹配为配对样本)使用配对t检验;
    • 分类变量:使用卡方检验,当单元格期望频数过小时自动切换为Fisher精确检验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:15:55