1. 知识点介绍
空间杜宾模型(Spatial Durbin Model, SDM)是空间计量经济学中最常用且理论最完备的模型之一,由 Luc Anselin 等人发展完善。它通过同时引入因变量的空间滞后项和解释变量的空间滞后项,能够全面捕捉复杂的空间相互作用机制,是分析空间溢出效应的核心工具。
已经有文章将截面杜宾模型说的很详细了,此处主要详细讲一讲面板杜宾的做法,会在对应位置贴上截面的代码(没有测试过,可能有报错的问题)
空间溢出效应指一个空间单元(如省份、城市、区域)的经济变量(如经济增长、技术创新、环境污染、犯罪率)的变化,会通过空间相互作用机制(如贸易、要素流动、知识扩散、政策模仿、污染传输、社会网络等)影响其他空间单元相同或相关变量的现象。溢出的强度和范围通常随地理距离、经济距离或社会距离的增加而衰减(但并非绝对)。
1.1 核心工具:空间权重矩阵
空间权重矩阵用于定量化定义空间单元之间的“邻近”或“联系”程度,是建模空间依赖性的基石。 权重矩阵的选择对结果影响巨大,需要基于理论、研究问题和数据特征进行合理设定和稳健性检验。通常需要行标准化(每行元素和为1)。
根据邵帅等(2016)在经济研究发表的《中国雾霾污染治理的经济政策选择——基于空间溢出效应的视角》权重分为四种(还有其他的制作方法):
(1)地理距离权重矩阵:元素 表示
地区省会与
地区省会最近公路里程的倒数(此处为省份的权重,地级市或其他的类似);
(2)经济意义下的经济距离权重矩阵:元素用
区域人均GDP年均值与
区域人均GDP年均值绝对差值的倒数表示;
(3)地理经济距离空间权重矩阵:元素为地区省会与
地区省会最近公路里程的倒数与
地区人均GDP年均值占所有地区人均GDP 年均值比重的乘积
(4)地理与经济距离的嵌套权重矩阵:为前两种的加权平均,权重在0~1之间,文章中为了方便取0.5。
邵帅,李欣,曹建华,等.中国雾霾污染治理的经济政策选择——基于空间溢出效应的视角[J].经济研究,2016,51(09):73-88.
此外,常见的还有邻接矩阵(即,两个地方是否相邻。共享边界即视为邻接,则为1,否则为0)
1.2 杜宾模型简介
若基础回归公式为
则,杜宾模型公式为:
其中,是因变量,
为解释变量,
为空间权重矩阵,
为空间自回归系数(用于衡量邻近单位因变量
对本地因变量
的影响。此部分为内生交互效应的体现,反映因变量自身的空间依赖性,如邻近地区的经济增长互相促进),
为本地解释变量的系数,
为空间滞后解释变量系数(用于衡量邻近单元解释变量
对本地因变量
的影响。此部分为外生交互效应的体现,反应解释变量的空间溢出,如邻近地区基础设施投资对本地区经济的影响),
为随机误差项,满足
分布。
1.3 其他空间溢出模型
1.3.1 空间滞后模型
公式为,可以简单理解为杜宾模型中
时的建议版本。
1.3.2 空间误差模型(SEM)
公式为
空间依赖性体现在误差项
中。是空间误差系数。模型假设溢出是由未观测到的空间相关因素或模型误设(干扰性依赖)导致的。
SEM主要用于处理干扰性空间依赖性,而非直接建模实质性空间溢出(如因变量或解释变量的相互影响)。
1.4 空间依赖性检验方法简介
检验空间依赖性是空间计量分析的核心前置步骤,其目的是判断数据是否存在空间关联性,并指导后续模型选择(如SLM、SEM、SDM)。
常见方法包括:
-
Moran's I: 最常用的全局空间自相关检验统计量,检验因变量是否存在显著的空间聚类模式。
-
LM检验 (Lagrange Multiplier): 包括LM-Lag (检验SLM是否必要) 和 LM-Error (检验SEM是否必要),以及其稳健版本 (Robust LM-Lag, Robust LM-Error),用于指导模型选择。
-
LR检验 (Likelihood Ratio): 用于嵌套模型比较(如SDM vs SLM, SDM vs SEM)。
-
Wald检验: 用于非嵌套或约束检验(如检验SDM是否可以简化为SLM或SEM,即检验
H0: θ=0
或H0: θ + ρβ=0
)。
2. stata实证
2.1 涉及的包以及下载(详细说明spmat和spwmatrix)
实证中需要用到的包分为可以直接下载的内容(如下代码)以及需要手动下载的部分(包括spmat和spatwmat)
* 安装必要的空间计量包
ssc install spmatrix, replace // 空间矩阵工具
ssc install xsmle, replace // 空间面板模型
ssc install xtmoran, replace
spmat
输入代码help spmat,点开后点击蓝色的“st0292.pkg”找到了spmat.do,旁边有一个蓝色的安装命令(由于已经下载,没办法截图,类似的结构可以参考我主页关于门槛效应的部分,也涉及手动下载的命令)
spatwmat
跟上面的同理。
//1.输入命令 findit spatwmat
//2.点击界面链接 "sg162 from http://www.stata.com/stb/stb60"
//3.找到INSTALLATION FILES,点击 "click here to install"
这两个命令没记错的话都是用于做空间矩阵相关的,都是需要用到的。
2.2 空间矩阵
假设你是完全新手且不打算下载shp格式的相关文件,首先将某一年你所需要的所有地点(比如国家、省份、地级市等等)罗列出来,并且写出对应的经纬度。格式如下:
地级市 | 经度 | 维度 |
北京 | 116.40529 | 39.904989 |
天津 | 117.19018 | 39.125596 |
(*以上只是举例,不保真)
这个地方切记一定要跟自己的面板数据中的地点对应(顺序也要一致)!!!
保存后导入stata中。根据下面代码生成需要的矩阵,矩阵最终存放在excel表里面。建议在最前面cd一下当前目录,避免保存的时候找不到。
//导入经纬度坐标,lat纬度,lng经度,并重命名
rename lat x //纬度赋值x
rename lng y //经度赋值y
//1. 基于距离的邻接权重矩阵wbin_1、wbin
*spatwmat
//band()为邻接参数,可手动调整,band(0 10)即距离band在0~10之间的单位视为邻接,赋权重1,否则赋权重0,下述db(0 10)同理
spatwmat, name(wbin_1) xcoord(x) ycoord(y) band(0 10) binary
matrix list wbin_1 //查看权重矩阵wbin_1
putexcel set wbin_1, replace //将权重矩阵wbin_1导入excel文件中
putexcel A1 = matrix(wbin_1) //从A1单元格导入
*spwmatrix
spwmatrix gecon x y, wn(wbin) wtype(bin) db(0 10) cart //wtype()为权重矩阵类型,wtype(bin)为邻接权重矩阵,其他参数可参考 help spwmatrix
matrix list wbin
putexcel set wbin, replace
putexcel A1 = matrix(wbin)
// 2. 计算一阶反距离权重矩阵winv
spwmatrix gecon x y, wn(winv) wtype(inv) cart alpha(1)
matrix list winv
putexcel set winv, replace
putexcel A1 = matrix(winv)
更多类型的矩阵计算参考:空间权重矩阵构建(Stata代码)_spatwmat怎么安装-优快云博客
不过这位作者最后面的经济地理权重和反经济地理权重矩阵,我这边没办法直接使用,应该是需要自己准备数据,但是对于面板来说,每年的经济数据都会变动,所以我个人认为不太现实,矩阵太大stata也跑不完(不过我没有细究,如果有不同观点或者成功案例可以沟通)
2.3 面板莫兰指数
使用上述下载的xtmoran包很简单就可以进行
*命令语法
xtmoran varname, wname(matrix)[morani(numlist) graph symbol(varname)]
其中
- varname是需要检验是否存在空间自相关的变量,常常使用在被解释变量和核心解释变量上面。
- wname里面即为刚刚计算出来的空间矩阵,注意,此处的matrix格式最好为dta格式。
morani(numlist)
:填入计算局部莫兰指数的年份;graph
:绘制莫兰散点图;symbol(varname)
:填入莫兰散点图中地点标记名称变量。
对于截面的整体莫兰指数的代码可参考:
spatgsa y,weight(matrix) moran twotail
结果如下:
2.4 面板杜宾模型
这里跳过了一些关于模型设定的检验,大家可以参考下面资料进行。
参考资料:
[1]一文读懂空间杜宾_空间杜宾模型-优快云博客(这个是文字的内容,相对排版稍微差一点,但是写的很全面)
[2]空间权重矩阵创建stata 5种经济地理矩阵 01矩阵 地理反距离 经济距离等(最新版本!!)_哔哩哔哩_bilibili(这个是视频内容,框架性很好,有很多思维导图,关于整个空间溢出效应的框架比较清晰,着重点感觉偏空间矩阵和如何选择模型)
这个地方跟前面的内容比较类似,但是由于我目前找到的代码放到杜宾模型中的空间矩阵格式为txt(i guess)所以整个过程又重新跑了一次。杜宾模型无论面板还是截面都是使用xsmle函数来实现。跑回归的完整代码如下。
use 数据所涉及的地区和经纬度.dta, clear
rename lat x
rename lon y
spwmatrix gecon x y, wn(空间矩阵命名) wtype(inv) ///
r(20) alpha(1) ///
xport(导出空间矩阵,txt) row replace
spmat import 导出空间矩阵 using "导出空间矩阵.txt", replace
spmat save 导出空间矩阵 using "导出空间矩阵.spmat", replace
spmat use 空间矩阵 using "导出空间矩阵.spmat", replace
use 回归面板.dta, replace
xtset city year //面板声明
xsmle y x X, wmat(空间矩阵) model(sdm) nolog effects fe
关于xsmle的解释(目前我没有一个参数一个参数扒,看看后面有没有时间修改)
有几个变量比较重要需要简单说明一下:
- model():这里模型选择主要针对知识点中的三种空间溢出模型,sdm即为杜宾模型,sar为自回归,sem为误差(不过目前误差我没有跑成功,sar和sdm的参数设置基本保持一致,可以直接使用)
- effects/noeffects:这两个二选一,选择noeffects则不显示直接效应、溢出效应和总体效应,选择effects的话会显示上面的部分。
参考资料:空间面板数据模型及Stata实现
结果阅读
effects部分从上至下依次为直接效应、溢出效应和总效应。
以上是粗略的面板结构的杜宾模型实证回归总流程,欢迎大家批评指正!