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

如何向cobalt包绘制的Love图中添加额外变量展示协变量平衡

cobalt包Love图同时展示模型内/外协变量平衡的实现方法

你原有的权重拟合逻辑不需要做任何修改,核心是通过addl参数传入未纳入倾向得分模型的变量,cobalt会自动计算这些变量的加权前后平衡统计量,和模型内的混杂变量一起呈现在图中。

可直接运行的修改后代码

W <- weightit(Y ~ X1 + X2 + X3,
              data = d1, 
              method = "cbps",
              over = FALSE)

love.plot(W, 
          stats = c("c"), 
          thresholds = c(cor = .1), 
          abs = TRUE, 
          wrap = 20,
          var.order = "unadjusted", 
          line = TRUE,
          # 核心新增参数:传入未纳入PS模型的额外变量
          addl = ~ Z1 + Z2 + Z3,
          # 可选配置:给两类变量加分组,提升可读性
          var.group = list(
            "倾向得分模型纳入的混杂变量" = c("X1", "X2", "X3"),
            "未纳入模型的其他协变量" = c("Z1", "Z2", "Z3")
          ))

参数说明

  • addl:接收单侧公式,右侧列出所有未放入weightit()拟合公式、但需要展示平衡结果的变量即可,该操作不会修改你原本计算得到的CBPS权重,只是额外补充这些变量的平衡统计量计算。
  • var.group:可选参数,用于给变量做分组归类,绘图时会在两组变量间增加分组标题,方便快速区分两类变量,不需要可以直接删除。

如果你习惯先计算平衡结果再绘图,逻辑完全一致,示例如下:

# 先计算包含额外变量的平衡统计结果
bal_result <- bal.tab(W,
                      stats = "c",
                      addl = ~ Z1 + Z2 + Z3,
                      thresholds = c(cor = .1))

# 传入平衡结果对象绘图即可
love.plot(bal_result,
          abs = TRUE, 
          wrap = 20,
          var.order = "unadjusted", 
          line = TRUE)

注意:不要把Z1-Z3加入weightit()的拟合公式,否则会改变原有倾向得分/权重的估计结果,和你原本的研究设计不符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:51:23