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

能否采用R中weightthem包的ebal方法以交互项作为处理变量?

研究问题与分析方案咨询

研究背景

  • 核心目标:对比特定学校类型中接受处理的学生与其他学校类型中接受处理的学生的结果差异
  • 前期尝试:使用PSM分析处理效应,但特定学校处理组样本量小、协变量特征特殊,转而考虑R语言weightthem包的熵平衡(ebal)方法(同时用MI处理缺失值)
  • 遇到的困境:
    • 仅保留所有学校处理组的缩减数据集:PSM无法实现协变量平衡,ebal加权也无法收敛
    • 减少协变量能提升样本重叠性,但可能违反条件独立假设
  • 当前计划:使用包含大量未处理学生的完整数据集,执行以下代码:
    weighted_data <- weightthem(Given-schooltype*Treatment ~ X1 + X2+ X3+ Xn, imputed.data, approach = "within", method = "ebal", estimand = "ATT")
    
  • 补充信息:Treatment与given-schooltype均为二元虚拟变量(0/1);后续意识到应聚焦「特定学校处理组+其他学校处理组」样本以估计ATT,但这类学生特征特殊,平衡后有效样本量过小无法开展推断;同事建议全样本运行含主效应、交互项及控制变量的回归,但认为该方案不合理(样本中大量特定学校学生未接受处理);数据为非实验纵向数据,拥有处理的预处理值,特定学校入学的预处理值可大致估计

核心问题

  1. 基于交互项的矩来平衡数据集是否合理?
  2. 后续分析应如何开展?考虑构建回归模型:outcome ~ given-schooltype+ treatment+ given-schooltype*Treatment(可能添加额外控制变量)

问题解答

1. 基于交互项的矩做熵平衡是否合理?

这种做法是合理的,但需要明确平衡目标的精准性:

  • 你本质上是想让特定学校处理组与其他学校处理组的协变量分布(包括协变量与学校类型/处理的交互特征)匹配,通过交互项矩条件实现平衡,完全贴合你的研究需求。
  • 但要注意:当前代码中把Given-schooltype*Treatment作为处理变量,结合estimand = "ATT",默认是针对「所有处理组」的平均处理效应,这和你要对比「两类处理组」的目标不匹配。建议调整处理变量为given-schooltype,并限定样本为所有接受处理的学生,这样熵平衡的权重才会聚焦于两类处理组的协变量匹配。
  • 全样本的未处理组可以提供更多样本支撑,一定程度上缓解之前缩减数据集时的收敛问题,但要确保权重仅作用于处理组内部的对比。

2. 后续分析方案建议

方案一:聚焦处理组内部的加权对比(最贴合研究目标)

直接把样本限定为所有接受处理的学生,执行以下步骤:

  • 以given-schooltype为处理变量,用ebal给特定学校处理组加权,使其协变量分布与其他学校处理组匹配(estimand = "ATT",此处ATT指特定学校处理组相对于其他学校处理组的平均效应)
  • 加权后,可通过t检验或简单加权回归(outcome ~ given-schooltype)估计差异;若要进一步减少方差,也可加入已平衡的协变量做辅助控制
  • 若平衡后有效样本量仍不足,可考虑:合并相似协变量、放宽平衡矩条件(仅平衡一阶矩,不强制二阶矩),在条件独立假设与样本量之间做合理权衡

方案二:修正全样本回归思路(回应同事建议)

若一定要用全样本,需规避未处理组的干扰:

  • 先针对处理组子样本生成ebal权重,再将权重合并回全样本(未处理组权重设为0),仅对处理组开展加权回归:
    # 提取处理组子样本
    treat_subset <- imputed.data[imputed.data$Treatment == 1, ]
    # 生成针对学校类型对比的ebal权重
    weights <- weightthem(given-schooltype ~ X1 + X2 + ... + Xn, data = treat_subset, method = "ebal", estimand = "ATT")
    # 合并权重到全样本
    imputed.data$w <- 0
    imputed.data$w[imputed.data$Treatment == 1] <- get_weights(weights)
    # 仅对处理组跑加权回归
    model <- lm(outcome ~ given-schooltype, data = imputed.data, weights = w, subset = Treatment == 1)
    

方案三:利用纵向数据的预处理值优势

结合你拥有的预处理值,可尝试:

  • 双重差分(DID):若特定学校入学、处理实施均有明确时间节点,对比两类处理组在处理前后的结果变化差异
  • 固定效应模型:控制学生个体固定效应,减少不可观测异质性,再估计学校类型与处理的交互项效应(需确保处理/学校类型为随时间变化的变量)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:33:14