在R的did包att_gt()中纳入从未处理控制组的方法
解决did包多期DID中从未处理单元的纳入问题
不用手动给那些treatment_year为NA的从未处理单元赋值,直接设置control_group参数就能把它们留在分析里当控制组,具体操作如下:
修正后的代码
给你的att_gt()调用加上control_group = "never treated"参数即可:
att_results <- att_gt( yname = "ln_Pris", tname = "Year", idname = "id", gname = "treatment_year", data = clean_data, panel = FALSE, control_group = "never treated" )
原理说明
- 原代码中,
att_gt()默认会剔除treatment_year为NA的单元,因为它默认的控制组逻辑是「仅将尚未被处理的单元作为控制组」(对应参数默认值control_group = "not yet treated")。 - 当设置
control_group = "never treated"时,函数会自动识别treatment_year为NA的单元为「从未被处理」的控制组,不会剔除它们,而是将这类单元纳入分析用于估计处理效应。
额外注意事项
- 确保你的did包是较新版本(建议≥1.0.0),旧版本可能对该参数的支持存在局限。
- 提前确认数据中
treatment_year为NA的单元确实是从未被处理的,避免数据标记错误导致结果偏差。
内容的提问来源于stack exchange,提问作者lnn
相关产品推荐
相关产品推荐

