温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装命令如下:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
⛳ Stata 系列推文:
作者: 袁子晴 (香港大学)
邮箱: yzq0612@foxmail.com
目录
随着地理信息系统 (Geographic Information Systems, GIS) 的应用和发展,包含地理位置信息的数据为研究空间背景下的社会现象和政策提供了新方法。然而,并非所有的政策都是在明确划分的行政区域层面上实施的,一些干预措施的实施区域可能是不精确的或局部的。因此,政策影响区 (Area-of-Effect, AoE) 的不确定性对相关政策有效性的估计具有一定影响。
这种不确定性与观察到的政策干预区的潜在设定偏误相关,我们可以沿着三个地理维度来研究实际政策区域的不确定性带来的影响,即位置、方向、以及规模。本推文将介绍由 Reinhard A. Weisser 编写的 Stata 命令 aoeplacebo
,该命令通过人为变换政策干预区的位置、方向和大小构造假政策干预区,来测试估计模型的稳健程度,即 AoE 安慰剂检验。
AoE 安慰剂检验的出发点是研究不同区域内事件的发生情况。在图 1 的虚构场景中,同时发生着以下三种无法区分的事件:
为了控制重点事件附近的混淆因素 (confounding factors),我们可以分以下两步:
上式中,
考虑到政策在实际实施的过程中,可能产生以下四种效应,即滞后效应、先导效应、持续效应、以及交互效应。此时,事件发生的概率方程分别为下式:
其中,系数
在安慰剂检验中,我们不仅可以在空间上构造虚假的政策作用区域,也可以在时间维度上构造假的政策实施时点。
aoeplacebo
命令可以实现地理安慰剂检验。其主要提供以下两种模式:
diagnostic
模式:首先将原始政策作用区域分别沿着位置、方向和大小三个维度修改,并可以指定最大设定偏误的程度;然后采用递增的方式接近最大程度,从而产生相应的安慰剂区域,之后基于安慰剂区域重新估计;最后,AoE 安慰剂测试结果以三种不同的诊断图显示,对应于三种区域错误设定。permutation
模式:允许同时考虑三个维度 AoE 区域设定偏误。通过定义带宽来决定安慰剂区域与实际观测区域的偏差程度,并基于随机抽取的特定维度的偏差。该模式提供了在复杂面积不确定情况下的 AoE 估计分布。. *安装命令 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
}
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)
;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)
:安慰剂结果输出的命名。这两个案例均采用 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)
可以看到红色圆点代表负向显著,绿色代表正向显著,灰色代表统计意义上不显著,圆点的大小对英语估计系数的大小。
该案例采用 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)
在 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)
Note:产生如下推文列表的 Stata 命令为:
lianxh lianxh 安慰剂 稳健性 空间, m
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ <https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh