🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春;张宏亮
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)
作者: 袁子晴 (香港大学)
邮箱: yzq0612@foxmail.com
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
目录
1. 问题背景
2. 理论介绍
2.1 基础 AoE 安慰剂检验
2.2 复杂 AoE 安慰剂检验
2.3 时空 AoE 安慰剂检验
3. Stata 实例
3.1 命令介绍
3.2 具体示例
4. 参考资料
5. 相关推文
1. 问题背景
随着地理信息系统 (Geographic Information Systems, GIS) 的应用和发展,包含地理位置信息的数据为研究空间背景下的社会现象和政策提供了新方法。然而,并非所有的政策都是在明确划分的行政区域层面上实施的,一些干预措施的实施区域可能是不精确的或局部的。因此,政策影响区 (Area-of-Effect, AoE) 的不确定性对相关政策有效性的估计具有一定影响。
这种不确定性与观察到的政策干预区的潜在设定偏误相关,我们可以沿着三个地理维度来研究实际政策区域的不确定性带来的影响,即位置、方向、以及规模。本推文将介绍由 Reinhard A. Weisser 编写的 Stata 命令 aoeplacebo
,该命令通过人为变换政策干预区的位置、方向和大小构造假政策干预区,来测试估计模型的稳健程度,即 AoE 安慰剂检验。
2. 理论介绍
2.1 基础 AoE 安慰剂检验
AoE 安慰剂检验的出发点是研究不同区域内事件的发生情况。在图 1 的虚构场景中,同时发生着以下三种无法区分的事件:
随机 (背景) 事件; 季节性事件 (在特定地区和季节发生); 重点事件,即在特定区域实施的政策干预,进而产生潜在的政策影响区(Area-of-Effect, AoE)。这种政策干预的真实地理范围可不会被完全观测到的。同时,政策实施可能与季节性事件的发生有明显的重叠,导致对政策有效性的低估。
为了控制重点事件附近的混淆因素 (confounding factors),我们可以分以下两步:
叠加一个 “自然” 网格 (如行政边界) 或一个 “人工” 网格 (如六边形); 计算某个网格内事件发生概率,这样就可以估算出高维 (网格单元和时间段) 的固定效应模型,或直接控制当地条件 (local conditions)。其中,事件发生在给定网格单元 和时间段 的概率如下:
上式中, 是虚拟变量,当网格 处于政策影响区内取值为 1,否则为0; 是对政策效果的估计; 和 分别是网格单元和时间的固定效应;向量 为一组控制变量。
2.2 复杂 AoE 安慰剂检验
考虑到政策在实际实施的过程中,可能产生以下四种效应,即滞后效应、先导效应、持续效应、以及交互效应。此时,事件发生的概率方程分别为下式:
其中,系数 反映了滞后的特定地区政策效果;系数 和 反映了在特定地区的政策实施时间段 () 内的累积政策效果,该效果可能是递减的或递增的 (取决于 的符号)。
2.3 时空 AoE 安慰剂检验
在安慰剂检验中,我们不仅可以在空间上构造虚假的政策作用区域,也可以在时间维度上构造假的政策实施时点。
若 ,变量 反映政策提前 个时间段开始实施的情况; 若 ,变量 反映政策推迟 个时间段开始实施的情况。
3. Stata 实例
3.1 命令介绍
aoeplacebo
命令可以实现地理安慰剂检验。其主要提供以下两种模式:
diagnostic
模式:首先将原始政策作用区域分别沿着位置、方向和大小三个维度修改,并可以指定最大设定偏误的程度;然后采用递增的方式接近最大程度,从而产生相应的安慰剂区域,之后基于安慰剂区域重新估计;最后,AoE 安慰剂测试结果以三种不同的诊断图显示,对应于三种区域错误设定。permutation
模式:允许同时考虑三个维度 AoE 区域设定偏误。通过定义带宽来决定安慰剂区域与实际观测区域的偏差程度,并基于随机抽取的特定维度的偏差。该模式提供了在复杂面积不确定情况下的 AoE 估计分布。
3.1.1 命令安装
. *安装命令 aoeplacebo
. local u1 "https://gitee.com/arlionn/data/raw/master/data01/aoeplacebo%20/aoeplacebo.ado"
. local u2 "https://gitee.com/arlionn/data/raw/master/data01/aoeplacebo%20/aoeplacebo.hlp"
. local u3 "`c(sysdir_plus)'/a"
. copy `u1' "`u3'/aoeplacebo.ado", replace
. copy `u2' "`u3'/aoeplacebo.hlp", replace
. *安装其他必要命令
. local pkgs "geoinpoly geodist kdens savesome ftools spmap"
. foreach pkg in `pkgs'{
ssc install `pkg', replace
}
3.1.2 命令语法
aoeplacebo design ,
areadata(filename) celldata(filename) estimation(string)
method(string)
grid(varname) tid(varname) etime(varname) evariable(newvarname)
[ position(# [#] [,*]) rotation(# [#] [,*]) scale([#] # [#]
[,*]) replications(#) seed(#)
complex(string) templacebo(# # [,*]) egridmatch(string)
multiarea(varlist [,*])
addstat(string) evreport(string) ovreport(string) tempreport(# #
[,*]) permreport(string)
cellpoly(filename) mapdb(filename) mapco(filename)
progress(string) output(foldername [,*]) outname(string) ]
aoeplacebo
命令主要有五种类型的选项,即关于地理设置 (坐标和地图数据)、估计方程、安慰剂区推导、程序设定和结果输出。具体来看:
指定坐标和地图数据
areadata(filename)
:指定原始政策干预区 (AoE) 的坐标数据集,该数据集的结构必须遵循由shp2dta
产生的坐标数据集;celldata(filename)
:指定网格单元坐标数据集,可以是自然网格或一个人工网格 (由命令spgrid
创建)。该数据集必须包含网格单元标识符,在选项grid(varname)
中指定,以及网格单元中心点 (以 x_cent 和 y_cent 形式存储)。最后,选项etime(varname)
中定义政策作用时间,如果 AoE 估计有任何控制变量,它们也应该包含在该数据集内;cellpoly(filename)
:指定用于连接网格单元和安慰剂区域的坐标数据集;mapdb(filename)
:用于绘制安慰剂区域的数据库数据集,前提是必须安装外部命令spmap
;mapco(filename)
:用于绘制安慰剂区域的坐标数据集。如果要创建所有创建的安慰剂区域的图形表示,则需要这个选项,为了能够使用这个功能,必须安装spmap
。
设定估计方程
estimation(str)
:设定估计方程,括号内的设定将会被原封不动地执行。例如,设定一个高维网格单元固定效应模型estimation(reghdfe Y gt AoE gt X, a(grid tid))
;complex(str)
:用来设定前文提及的四种复杂的 AoE 政策效,详见下表。具体事例:滞后效应:加入滞后一期到滞后三期,即 complex(L(1/3).AoE_gt)
;先导效应:加入提前一期到提前三期,即 complex(F(1/3).AoE gt)
;持续效应:指定特定地区政策实施期,即 total sum of time periods (TS) 或 number of consecutive time periods (TC),或者同时包括两者 complex(TS AoE gt TC AoE gt)
;交互效应:持续时间的平方项可以整合为 complex(c.TS AoE gt##c.TS AoE gt)
,另外也可以与其他选项进行组合,如complex(L(0/3).AoE gt c.L1.TS AoE gt##c.L1.TS AoE gt)
。
推导安慰剂区域
method(str)
:安慰剂区域的推导可以遵循以下两种方法:degree
:假定感兴趣的政策干预区域是在二维欧式空间,但是考虑到地球的形状,对现实的近似程度较低;geodetic
:该方案采用了更真实的地球三维模型;position(#1 [#2][, distribution])
:定义了 AoE 安慰剂区域如何位移,具体来看:在 diagnostic
模式下,position(2 0.5)
的含义是原始 AoE 区域将沿着原始中心点的经度或/和纬度以 50 公里的增量移动,直到达到 200 公里的最大位移距离;在 permutation
模式下,子选项distribution
定义了随机分布是uniform
(the default) 或centered
;rotation(#1 [#2][, distribution])
:定义了 AoE 安慰剂区域如何旋转,其他同上;scale([#1] #2 [#3][, distribution])
:定义了 AoE 安慰剂区域如何缩放,其他同上;templacebo(#1 #2 [, seriesmargin])
:定义了时空安慰剂区域设定方案;multiarea(varlist [, fixpoint])
:引入多个政策干预区域;
程序设定
grid(varname)
:指定识别唯一网格单元的变量;tid(varname)
:指定识别一段时间内唯一观测值的变量。这个标识变量也必须包含在单元数据集中;etime(varname)
:指定识别政策实施时间点的变量;evariable(newvarname)
:为特定网格和时点的受到政策干预定义变量;egridmatch(str)
:定义影响区中的网格单元如何被识别的链接程序,可以是中心点centroid
,也可以是顶点vertex
,这个程序需要安装外部命令geoinpoly
;replications(#)
:permutation
模式中抽样次数,这相当于在面积不确定性的三个维度上随机产生的安慰剂区域的数量;seed(#)
:为排列组合设计中使用的所有随机抽样定义一个特定的种子,这样可以在重新运行程序时再现相同的结果。
结果输出
addstat(str)
:输出存储在ereturn list
里额外的统计量;evreport(str)
:使用附加选项complex()
时必须要指定;ovreport(varname)
:输出其他控制变量的结果 (系数估计值、标准误 和 P 值);tempreport(#1 #2 [, line])
:使用templacebo()
时指定;permreport(str)
:将此选项设置为no
,结果不会输出permutation
模式的 AoE 估计值的核密度图;progress(str)
:显示进度,可以是yes
(默认)、no
或detail
;output(foldername [, replace])
:指定所有的输出保存在一个文件夹下,用子选项replace
覆盖现有的文件夹。在新生成的目录中,将创建三个子文件夹,即 aoe visualisations、aoe results 和 aoe areas;outname(str)
:安慰剂结果输出的命名。
3.2 具体示例
3.2.1 基本 AoE 安慰剂测试
这两个案例均采用 diagnostic
模式,只考虑 AoE 区域位移变换的,将原始区域的中心点分别沿着网格以 0.5 单位 (0.1 单位) 为步长移动,最大移动量为 2 单位 (0.5 单位),结果分别输出到文件夹 AOE1a 和 AOE1b。
. *下载相关数据
. local u1 "https://gitee.com/arlionn/data/raw/master/
> data01/aoeplacebo%20/AOE_TEST.zip"
. local u2 "`c(sysdir_stata)'/AOE_TEST"
. cap mkdir `u2'
. cd `u2'
. copy `u1' "AOE_TEST.zip", replace
. unzipfile AOE_TEST, replace
. erase AOE_TEST.zip
. *运行命令
. aoeplacebo diagnostic, area("observed_area.dta") ///
cell("grid_time_incidents.dta") ///
estimation(reghdfe I_incident Inc_parea, a(hex_ID mdate)) ///
evar(Inc_parea) grid(hex_ID) tid(mdate) egrid(centroid) ///
etime(op_act) position(2 0.5) method(degree) progress(detail) ///
output(AOE1a,replace)
. aoeplacebo diagnostic, area("observed_area.dta") ///
cell("grid_time_incidents.dta") ///
estimation(reghdfe I_incident Inc_parea, a(hex_ID mdate)) ///
var(Inc_parea) grid(hex_ID) tid(mdate) egrid(centroid) ///
etime(op_act) position(0.5 0.1) method(degree) ///
progress(detail) output(AOE1b,replace)
可以看到红色圆点代表负向显著,绿色代表正向显著,灰色代表统计意义上不显著,圆点的大小对英语估计系数的大小。
3.2.2 包含三个维度变换的 AoE 安慰剂测试
该案例采用 diagnostic
模式,同时考虑了安慰剂区域在位置、方向和规模三哥维度上的变换,然后基于生成的安慰剂区域进行回归分析。在结果中,第一行左图中的黑色边框代表位移后的 AoE 区域,右图是基于不同区域进行估计的结果。
. aoeplacebo diagnostic, area("observed_area.dta") ///
cell("grid_time_incidents.dta") ///
estimation(reghdfe I_incident Inc_parea, a(hex_ID mdate)) ///
evar(Inc_parea) grid(hex_ID) tid(mdate) egrid(centroid) ///
etime(op_act) position(1.5 0.5) rotation(180 15) ///
scale(2 0.2) method(degree) progress(detail) ///
mapdb("map_db.dta") mapco("map_co.dta") output(AOE2,replace)
3.2.3 AoE permutation 安慰剂检验
在 permutation
模式下,允许同时考虑三个维度 AoE 区域设定偏误,并通过定义带宽来决定安慰剂区域与实际观测区域的偏差程度。在本例中偏差服从均匀分布,即中心点在 200 公里半径内被随机重新定位,然后区域被随机旋转 度,并根据比例因子 重新缩放,生成的安慰剂区域如下图所示:
. aoeplacebo permutation, area("observed_area.dta") ///
cell("grid_time_incidents.dta") ///
estimation(reghdfe I_incident aoe wave, a(hex_ID mdate)) ///
evar(aoe) grid(hex_ID) tid(mdate) egrid(centroid) etime(op_act) ///
complex(L(0/3).aoe F(1/3).aoe c.TS_aoe##c.TS_aoe) ///
evreport(aoe) method(geodetic) progress(detail) ///
position(2) rotation(45) scale(0.5 1.5) ///
replications(100) seed(123456789) ///
mapdb("map_db.dta") mapco("map_co.dta") output(AOE3,replace)
通过设定随机抽样1000次,即 replications(1000)
,最终得到下图:
. aoeplacebo permutation, area("observed_area.dta") ///
cell("grid_time_incidents.dta") ///
estimation(reghdfe I_incident aoe wave, a(hex_ID mdate)) ///
evar(aoe) grid(hex_ID) tid(mdate) egrid(centroid) etime(op_act) ///
complex(L(0/1).aoe c.TS_aoe##c.TS_aoe) ///
evreport(aoe) method(degree) progress(detail) ///
position(1.5) rotation(45, centered) scale(0.5 1.5, centered) ///
replications(1000) seed(123456789) ///
permreport(p=(0 0.5) r=(0 20) s=(0.75 1.25)) output(AOE4,replace)
4. 参考资料
项目网站 -Link- 演示文稿 -Link- Weisser R A. Area-of-Effect placebo tests[C]//London Stata Conference 2019. Stata Users Group, 2019 (04). -PDF-
5. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh lianxh 安慰剂 稳健性 空间, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata命令 gcrobustvar:基于VAR的稳健性Granger因果检验 Stata:空间计量之用-spmap-绘制地图.md 专题:回归分析 稳健性检验!稳健性检验! 专题:倍分法DID 倍分法(DID)的标准误:不能忽略空间相关性 多期DID之安慰剂检验、平行趋势检验 专题:内生性-因果推断 安慰剂检验!安慰剂检验! Stata新命令:konfound - 因果推断的稳健性检验 专题:空间计量 Stata:批量获取经纬度数据-空间计量 Stata空间计量:STAR-时空自回归模型 Stata:一文遍览Stata官方空间计量命令:sp系列命令 刘迪:Stata空间溢出效应的动态图形-空间计量 空间面板数据模型及Stata实现 空间计量溢出效应的动态GIF演示 空间权重矩阵的构建 空间计量:地理加权归回模型-(GWR)-参数估计 直播课 - 空间面板模型及动态设定
🍉 扫码加入连享会微信群,提问交流更方便