使用did_multiplegt_dyn加控制变量后出现“无观测值”错误求助
问题描述
使用De Chaisemartin, C., & d'Haultfoeuille, X.(2024)开发的Stata命令did_multiplegt_dyn执行多期DID回归时,不加控制变量的命令可正常运行:
// 无控制变量的命令 did_multiplegt_dyn outcome PLZ year treat_dummy, effects(8) placebo(6) cluster(PLZ)
但只要加入控制变量(即使是无缺失值的单一变量如age),就会触发“no observations”错误,命令示例:
// 含控制变量的命令 did_multiplegt_dyn outcome PLZ year treat_dummy, effects(8) placebo(6) cluster(PLZ) controls(age)
更换不同控制变量后问题依旧。
可能的原因及解决办法
- 核心变量与控制变量的共同样本为空:单独检查控制变量无缺失不代表它和核心变量(
outcome、PLZ、year、treat_dummy)的共同观测都无缺失。可以先运行无控制变量的回归,然后用count if e(sample)得到有效样本量;再用count if !missing(outcome, PLZ, year, treat_dummy, age)计算所有变量都无缺失的样本量,对比两者是否一致。如果后者为0,说明存在隐性缺失。 - 命令强制要求平衡面板:部分DID命令在加入控制变量时会默认要求平衡面板,而无控制变量时允许非平衡数据。可以检查数据是否为平衡面板(用
xtset PLZ year后看输出),如果是非平衡,尝试添加命令支持的unbalanced选项(需查阅命令文档确认是否存在该参数)。 - 控制变量类型异常:确保控制变量是数值型,而非字符串类型。用
describe age查看变量类型,若为字符串,可尝试转换为数值型(如destring age, replace)。 - 命令版本或潜在bug:该命令为2024年新发布版本,可能存在未修复的样本筛选逻辑bug。尝试更新命令:
ssc install did_multiplegt_dyn, replace,同时查看作者提供的官方示例,确认控制变量的使用格式是否符合要求。
内容的提问来源于stack exchange,提问作者mf_uni
相关产品推荐
相关产品推荐

