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

倾向得分加权分析疑问:分组建模是否正确划分氯氮平组与对照组?

问题分析与解决

为什么两个模型结果完全一致?

你的代码存在关键错误:在do()块的glm函数中,指定的data = df_all是完整的全量数据集,并没有使用group_by(clozapine.or.not)拆分出的分组子数据。这导致两个分组模型实际上都是用全部数据跑的,自然结果完全一致——分组操作根本没生效,数据也没被分配到氯氮平组和对照组。

修正后的分组建模代码

把data参数改成.(代表do()当前处理的分组子数据框)即可:

models <- df_all %>% 
  group_by(clozapine.or.not) %>% 
  do(model = glm(death_yn ~
                   Education +
                   Institution.Cluster +
                   SuicidalAttempt_yn,
                 data = .,  # 改用当前分组的子数据
                 family = binomial(logit)))
models$model

修正后,两个模型会分别基于氯氮平组和对照组的子数据运行,结果会出现差异。

关于分开/合并分析的建议

你要做的是倾向得分加权估计ATE,不需要分组建模,正确流程应该是:

  1. 估计倾向得分:用logistic回归,把clozapine.or.not作为因变量,协变量(Institution.Cluster、Education、SuicidalAttempt_yn)作为自变量,得到每个样本被分配到氯氮平组的概率。
  2. 计算加权权重:比如逆概率权重(IPW),处理组权重设为1/倾向得分,对照组权重设为1/(1-倾向得分)。
  3. 用加权数据集估计ATE:可以用加权的logistic回归(death_yn ~ clozapine.or.not,加上权重参数),或者直接计算两组加权后的死亡率差异。

如果只是想简单比较两组调整协变量后的死亡率差异,也可以直接在一个模型中加入分组变量和所有协变量:

glm(death_yn ~ clozapine.or.not + Education + Institution.Cluster + SuicidalAttempt_yn,
    data = df_all,
    family = binomial(logit))

这个模型中clozapine.or.not的系数,就是调整协变量后的组间对数优势比差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:05:27