一、引言
双重差分法(Difference-in-Differences,DID)是评估中常用的一种方法。在使用 DID 进行分析时,安慰剂检验是一种重要的稳健性检验方法,用于验证估计结果是否是由于偶然因素或其他未观察到的因素导致的。
二、理论原理
DID 方法的基本原理是通过比较处理组在实施前后的变化与控制组在相同时间区间内的变化,来分离出的净效应。其核心假设是在没有干预的情况下,处理组和控制组的结果变量会遵循相同的时间趋势。
然而,我们所得到的 DID 估计结果可能会受到一些偶然因素或未观测到的因素的影响,导致结果出现偏差。安慰剂检验的理论基础就在于通过多次随机分配处理组和控制组,模拟出在没有真实影响下的估计结果分布。如果我们实际观测到的处理效应远远超出了这个随机分布的范围,那么就可以更有信心地认为我们所得到的估计结果是真实的效应,而非偶然因素导致的。
例如,假设我们研究一项教育改革对学生成绩的影响。在没有干预的情况下,学生的成绩可能会由于其他因素(如家庭环境、学校师资变化等)而自然波动。通过安慰剂检验,我们随机地指定一些学生为“处理组”,即使他们实际上没有受到影响,然后观察得到的“效应”。如果我们实际观测到的效应与这些随机产生的“效应”有显著差异,就更能确信是真正起作用的。
三、数据准备
首先,我们需要准备一份包含处理组和控制组、实施前后时间以及相关结果变量的数据。以下是一个简单的示例数据集,假设我们研究某对企业销售额的影响:
clear
input str10 firm treat time sales
"Firm1" 0 0 100
"Firm2" 0 0 120
"Firm3" 1 0 80
"Firm4" 1 0 90
"Firm5" 0 1 110
"Firm6" 0 1 130
"Firm7" 1 1 100
"Firm8" 1 1 120
end
在上述数据中,firm 表示企业名称,treat 表示是否为处理组(1 表示处理组,0 表示控制组),time 表示实施时间(0 表示实施前,1 表示实施后),sales 表示企业销售额。
四、安装所需命令
在进行 DID 安慰剂检验之前,我们需要安装相关的命令。在 Stata 中,可以使用以下命令安装:
ssc install diff
五、基础 DID 模型估计
首先,我们估计基础的 DID 模型,代码如下:
xtset firm time
diff sales, t(treat) p(time)
上述代码中,xtset firm time 用于指定个体变量 firm 和时间变量 time。diff sales, t(treat) p(time) 表示使用 diff 命令进行 DID 估计,其中 sales 是被解释变量,treat 是处理变量,time 是实施时间变量。
六、生成随机处理组变量
为了进行安慰剂检验,我们需要生成一个随机的处理组变量。以下是生成随机处理组变量的代码:
gen random_treat = runiform() > 0.5
上述代码使用 runiform() 函数生成一个在 0 到 1 之间均匀分布的随机数,然后通过与 0.5 比较来确定随机处理组。
七、进行安慰剂检验
接下来,我们使用随机生成的处理组变量进行 DID 估计,多次重复这个过程,并观察估计系数的分布。以下是一个循环进行安慰剂检验的示例代码:
复制
clear
set seed 123 // 设置随机数种子,保证结果可重复
local num_reps = 100 // 设置重复次数
forvalues i = 1/`num_reps' {
gen random_treat = runiform() > 0.5
xtset firm time
diff sales, t(random_treat) p(time)
// 存储每次估计的系数
scalar coef_`i' = _b[random_treat#time]
}
在上述代码中,我们设置了重复次数为 100 次,每次都生成新的随机处理组变量,并进行 DID 估计,将估计的系数存储在 coef_i` 中。
八、分析安慰剂检验结果
完成安慰剂检验后,我们可以对估计系数的分布进行分析。例如,计算系数的均值、标准差、绘制直方图等。
egen mean_coef = mean(coef_*)
egen std_coef = sd(coef_*)
hist coef_*, frequency normal
通过分析系数的分布,我们可以判断原 DID 估计结果是否在安慰剂检验的随机情况下是异常的。
九、结论
通过以上的 DID 安慰剂检验操作步骤,我们可以更全面地评估 DID 估计结果的可靠性。如果原估计结果在安慰剂检验中表现出明显的特殊性,那么我们对原结果的解释就更有信心;反之,如果原结果在随机情况下也容易出现,那么就需要进一步检查和改进模型设定或分析方法。