如何在R语言回归中调整分组变量的基准组?
调整DID回归中处理组与对照组的基准设定
问题原因
R 中因子类型变量默认按字母顺序确定基准组,你的treated变量里,NJ(首字母N)排在PA(首字母P)前面,所以回归时默认把NJ当作基准组,PA被识别为处理组,这和你的设定完全相反。
两种调整方法
方法1:重新指定因子的基准水平
直接修改treated变量的基准为PA,让回归以PA(对照组)为基准,NJ作为处理组:
cardkruger = read.csv('https://raw.githubusercontent.com/bandcar/Examples/main/cardkruger.csv') # 将treated转为因子,并指定PA为基准水平 cardkruger$treated = relevel(factor(cardkruger$treated), ref = "PA") reg = lm(fte ~ t*treated, cardkruger) summary(reg)
调整后,回归输出会出现treatedNJ项,代表处理组(NJ)相对于对照组(PA)的事前差异,交互项t:treatedNJ就是DID的核心政策效应估计量。
方法2:手动编码二元处理变量
直接创建新的二元变量,让NJ=1(处理组)、PA=0(对照组),回归时0自动作为基准(PA):
cardkruger = read.csv('https://raw.githubusercontent.com/bandcar/Examples/main/cardkruger.csv') # 手动生成处理变量:NJ=1,PA=0 cardkruger$treat = ifelse(cardkruger$treated == "NJ", 1, 0) reg = lm(fte ~ t*treat, cardkruger) summary(reg)
这种方式下,treat的系数代表处理组与对照组的事前差异,t:treat的系数就是政策对处理组(NJ)的净效应,完全匹配你的设定。
调整后结果说明
调整后的回归截距项代表对照组(PA)在政策实施前(t=0)的平均fte值,t的系数是对照组随时间的自然变化,处理组的时间效应为t系数加交互项系数,核心的DID估计量就是交互项的系数。
内容的提问来源于stack exchange,提问作者bandcar
相关产品推荐
相关产品推荐

