ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Stata空间计量实战:莫兰指数与sp系列命令全流程解析

Stata空间计量实战:莫兰指数与sp系列命令全流程解析 做空间计量的朋友十有八九是从莫兰指数开始的。我当年第一次跑出显著为正的Morans I时激动得截图发了好几个群后来想想挺傻的——因为那只是万里长征第一步。现在回头看大部分人入门空间计量时最大的障碍不是模型本身而是Stata里那一堆sp开头的命令到底怎么搭配使用。你去知网随便翻一篇空间计量的实证论文方法部分几乎都是复制粘贴同一套话术先算莫兰指数再跑LM检验然后上SAR或SEM面板数据就spxtregress截面数据就spregress。这套流程听起来简单真正动手时却处处是坑。这篇文章我就把这套流程彻底拆开把Stata官方sp系列的命令按工作流重新串一遍尤其把莫兰指数从权重矩阵构建到结果解读的全过程讲透。当前Stata官方提供的sp系列命令加上社区常用的补充命令一共16个覆盖了从数据声明、权重矩阵创建、空间自相关检验到空间回归估计和预测的完整链条。不管你是写毕业论文的硕士生、做课题的博士生还是工作中需要用空间数据的从业者读完都能照着操作跑通自己的数据。1. 思路先行空间计量到底在解决什么问题sp系列命令怎么串起全流程1.1 莫兰指数的本质数据在空间上到底有没有“抱团”先说个最朴素的问题为什么要做空间计量因为传统计量模型默认样本之间是相互独立的但现实里几乎不存在完全独立的地理单元。一个城市的房价高隔壁城市的房价往往也不低一个地区的污染严重周边地区的空气通常也好不到哪去。这种“近朱者赤、近墨者黑”的现象在计量经济学里就叫空间自相关。莫兰指数就是衡量这种空间自相关程度的指标。它的逻辑和统计学里最经典的相关系数一脉相承——皮尔逊相关系数衡量的是变量x和y的线性相关莫兰指数衡量的则是位置i的观测值xi与位置j的观测值xj之间的相关只不过这里的“配对”不是按样本顺序而是按地理邻接关系。公式长这样I (N / S₀) × [ΣᵢΣⱼ wᵢⱼ(xᵢ - x̄)(xⱼ - x̄)] / [Σᵢ(xᵢ - x̄)²]其中wᵢⱼ是空间权重矩阵W的元素S₀是所有wᵢⱼ之和N是样本量。这个公式看着复杂拆开看其实就三块x的方差、x与均值的离差在空间上的协动、以及空间权重的调节。I的取值范围理论上在-1到1之间大于0表示正自相关即高值和高值相邻、低值和低值相邻小于0表示负自相关即高低值交错分布接近0则表示没有明显的空间模式。但这只是理论实践中莫兰指数的计算完全依赖于你选择的空间权重矩阵wᵢⱼ。权重矩阵不同同一个数据算出来的莫兰指数可能从显著变不显著。所以sp系列命令里spmatrix才是真正的核心——没有合理的权重矩阵后面的一切都是空中楼阁。1.2 为什么偏偏是sp系列命令成了事实标准早期的Stata空间计量主要靠两个民间命令撑场面spatreg和spatgsa再加上spmat这一套矩阵工具。用过的老人都知道这些命令的学习曲线相当陡峭而且不同命令对数据格式的要求还不一样经常出现“上一步生成的矩阵下一步用不了”的尴尬。Stata官方从第15版开始正式推出sp系列命令等于把这个领域“收编”了。官方命令最大的好处是格式统一、文档完整、报错信息清楚。更关键的是官方命令把空间计量的工作流标准化成了五个步骤声明空间数据spset、创建权重矩阵spmatrix、检验空间自相关sptest、估计空间模型spregress / spxtregress、结果可视化和解读。每一步都有专门的命令负责数据格式在整个链路中保持一致这比早期民间命令的各自为战成熟太多。从我的使用经验来看sp系列还有两个隐性优势。第一它在权重矩阵的处理上做了大量工程化优化比如矩阵标准化、矩阵导出导入、稀疏矩阵存储大数据量下也能跑得动第二它和Stata的estat框架深度集成回归后的Wald检验、LR检验、直接效应和间接效应分解都是一条命令的事不用自己手动算。所以我的建议很简单新用户直接学sp系列别再碰那些老命令了。1.3 一条完整空间计量流程应该长什么样把16个命令串起来看整个流程其实非常清晰。第一步是数据准备把普通的面板数据或截面数据通过spset声明成Stata认识的空间数据同时指定区域ID变量第二步是构建空间权重矩阵用spmatrix命令生成邻接矩阵或距离矩阵这个矩阵是后续所有检验和估计的基础第三步是做探索性空间分析用sptest计算莫兰指数判断数据是否存在空间自相关第四步是跑正式的回归模型截面数据用spregress面板数据用spxtregress根据检验结果在SAR、SEM、SDM等模型之间选择第五步是结果解读用estat impact计算直接效应和间接效应把空间溢出效应量化出来。这五步每一步都有对应的sp命令而且是环环相扣的。比如第3步莫兰指数检验这一步如果你发现数据根本没有空间自相关那就没有必要继续跑空间模型老老实实做普通OLS就行。很多论文不管三七二十一上来就堆空间模型其实是走了弯路。所以我这篇文章的叙事线也按这个流程来先讲16个命令的全貌再重点拆解莫兰指数的完整实操最后延伸到空间回归模型的衔接。2. 16个sp系列命令全景一张表理清每一条命令的定位2.1 命令清单与分组总览很多初学者最大的困惑是16个命令背都背不下来更别提搞清楚各自的用途。其实这些命令完全可以按功能分为四组数据管理与可视化、权重矩阵与距离计算、空间自相关检验与估计、预测与后估计。下面是完整的清单分组命令名称核心功能使用频率数据管理spset声明数据为空间数据指定ID和坐标必用数据管理spbalance平衡空间面板数据面板必用数据管理sprename重命名空间数据集中的变量偶尔数据管理spsummarize空间变量的描述统计推荐数据管理spplot绘制空间数据地图可视化推荐权重矩阵spmatrix创建和管理空间权重矩阵核心必用权重矩阵spweight快速生成常见权重矩阵备选权重矩阵spdistance计算点之间的地理距离辅助权重矩阵sppack打包和管理多个权重矩阵进阶权重矩阵spmat早期第三方矩阵命令兼容旧代码检验与估计sptest莫兰指数、LM检验等必用检验与估计spregress截面空间回归截面必用检验与估计spxtregress面板空间回归面板必用检验与估计spivregress含内生变量的空间回归进阶检验与估计spgenerate生成空间滞后变量辅助后估计sppredict空间回归预测推荐注意前面十四五个命令多数是Stata 15及以后版本的官方命令spmat和spweight是社区里广泛使用的第三方命令因为老用户太多现在依然经常出现在教程里所以我把它们也纳入这个体系一起讲。对于新用户我建议以spmatrix和spset为核心其余按需使用。2.2 数据管理与可视化spset是一切的开端spset这条命令是整个sp系列的起点。它的作用相当于告诉Stata这份数据里的每个观测对应哪个地理单元单元之间的相对位置是什么。最常用的写法有两种。如果你有经纬度坐标就写spset lon lat如果你的数据已经有区域ID和邻接关系可以直接spset province_id然后单独用spmatrix创建权重矩阵。spset这条命令的意义经常被低估。它不只是声明一下数据格式而是建立起一个“空间上下文”后续所有sp命令都会自动识别这个上下文。比如你在spset之后创建的任何权重矩阵、算出的任何莫兰指数都默认关联到这份数据的空间结构上。如果漏了这一步spsummarize、sptest这些命令都会直接报错。我见过不少新手在论坛上问“为什么我的sptest跑不了”多半是spset没设置。spplot则是最直观的一条命令可以把你的变量按地图填色可视化。比如你要看看各省GDP的空间分布spplot gdp就能画出一张色彩分明的分级地图高值区是不是抱团一眼就能看出来。这一步和莫兰指数是互补的地图看直观模式莫兰指数给统计证据。spbalance和sprename都是细碎但实用的工具命令面板数据非平衡时用spbalance补齐变量名不满意就用sprename没有太多技术含量用到时自然会查。2.3 权重矩阵构建spmatrix是贯穿全流程的“发动机”如果说整个sp系列是一台车那spmatrix就是发动机。空间权重矩阵的存在意义在于它把“地理关系”翻译成了“数学关系”让矩阵中的wᵢⱼ能够进入莫兰指数和空间回归的计算。你选择哪种权重矩阵本质上是在回答一个问题两个区域之间的影响到底是以什么方式传导的spmatrix create这个命令支持的权重类型很多但实证中最常用的无非三种。第一种是邻接权重contiguity相邻地区取1、不相邻取0适合行政区划数据第二种是距离倒数权重idistance距离越近权重越大适合连续空间中的点数据第三种是距离阈值权重distance设定一个临界距离临界距离内的取1、之外取0。选哪种没有绝对的对错但有一个基本要求是合理性最好在论文里说明选择理由而不是随便选一个能让结果显著的。权重矩阵的标准化也是一个必须理解的关键点。默认情况下spmatrix create生成的是原始权重矩阵行之和可能差别很大。如果不做标准化一个有很多邻居的地区会被赋予更大的总权重从而扭曲估计结果。Stata里用spmatrix create contiguity W, standardize就能生成行标准化矩阵让每一行的权重之和都等于1。行标准化的含义可以理解为一个地区的“外来影响”被平均分配给它所有的邻居而不是按邻居数量线性堆积。2.4 检验、估计与预测从莫兰指数到效应分解的完整链条sptest是莫兰指数的直接操作命令。写sptest moran y, weights(W)就能算出变量y的全局莫兰指数Stata会报告I值、期望值、方差、z统计量和p值。除了全局莫兰指数sptest还可以做局部莫兰指数检验和基于回归残差的检验这在后面的实操部分我会详细展开。估计命令里spregress是截面数据的空间回归命令spxtregress是面板数据的空间回归命令两者都支持SAR空间滞后模型、SEM空间误差模型和SARAR空间滞后加空间误差等多种规格。spivregress则处理内生性问题适合自变量存在内生性、又需要考虑空间效应的场景使用门槛较高建议先把前两个命令吃透再碰。估计完之后stata里还有一条配套的estat impact命令输出直接效应和间接效应。这个非常重要因为空间回归的系数不能直接解释为边际效应——变量x的变化会通过空间反馈循环影响邻居再传回本地区。直接效应是x对本地区y的影响间接效应才是真正意义上的空间溢出效应。很多论文只说系数显著却不报告效应分解这是不够专业的。3. 莫兰指数实操全流程从零开始构建权重矩阵到读懂检验结果3.1 数据准备别急着算莫兰先确认你的数据被Stata正确识别我见过太多人拿着数据就硬算莫兰指数结果报错信息都看不懂。第一步永远是先spset。假设你有一份省级面板数据变量包括省份编码province、年份year、核心解释变量x和被解释变量y那么第一行命令是spset province如果Stata提示“dataset not panel”你可能需要先xtset或者把数据转成截面。注意spset之后Stata会记住这个空间设定即使你后面再用xtset设置面板结构两者也不会冲突——sp系列命令会自动把面板数据按年份展开处理。如果是经纬度点数据比如城市级数据写法是spset lon lat, coordsys(latlong) id(city_id)这一步有几个坑要提醒。第一ID变量必须是数值型且唯一字符型的省份名必须先encode第二数据中不能有缺失的ID第三coordsys参数要选对经纬度坐标和平面投影坐标的处理方式不同选错了距离计算会有偏差。设定好之后强烈建议先跑一下spsummarize y, weights(W)看看数据的描述统计和空间结构再决定下一步。这个命令会报告变量的常规统计量以及莫兰指数所需的基本信息等于给数据做个全面体检。3.2 空间权重矩阵构建邻接权重与距离权重的取舍空间权重矩阵是整个分析的灵魂直接决定你算出来的莫兰指数是否有意义。我自己的习惯是至少构建两种权重矩阵看看结论是否稳健。邻接权重矩阵的构建最简单spmatrix create contiguity W_cont, standardize这条命令会自动识别spset中设定的空间单元只要两个区域边界相邻就赋值为1然后做行标准化。需要注意的是Stata默认的邻接规则是“皇后邻接”即只要共享边界或顶点就算相邻。对省界那种犬牙交错的数据来说顶点相邻的情况很少影响不大但对不规则网格数据你可能需要自定义更严格的“车邻接”规则。目前的官方命令不支持直接指定邻接规则如果你确实需要可以自己生成权重矩阵再导入。距离权重矩阵的构建稍微复杂一点spmatrix create idistance W_dist, standardize这个命令用区域质心之间的地理距离的倒数作为权重。如果省域面积很大、质心不能很好地代表区域之间的真实交互强度也可以设定距离阈值spmatrix create distance W_thresh, threshold(500) standardize表示只有质心距离在500公里以内的区域才被视为存在空间关联。这个500是假设的单位实践里通常根据研究对象设定合理阈值比如研究城市群经济外溢时用300-800公里不等研究传染性疾病传播时可能用更短的距离。这类设定需要在论文里给出敏感度分析而不是拍脑袋定一个值就完事。权重矩阵创建之后管理也很重要。spmatrix dir可以查看当前内存中有哪些权重矩阵spmatrix save把矩阵存到磁盘文件spmatrix export导出为矩阵数据格式。我强烈建议每次分析前把权重矩阵存成文件因为一旦关掉Stata再打开内存里的矩阵就没了重新构建又是一堆事。sppack的作用则是把几个矩阵打包成一个“矩阵组”方便在不同模型之间切换时快速调用这个命令在稳健性检验阶段特别实用。3.3 跑通莫兰指数全局莫兰、局部莫兰与回归残差检验权重矩阵建好之后莫兰指数只需要一行命令sptest moran y, weights(W_cont)输出结果中最重要的三列是Morans I值、z统计量和p值。如果你的p值小于0.05可以认为变量y存在显著的空间自相关。这时再拿spplot画一张变量分布地图基本就能给论文的第一张核心图表凑齐素材了。但这里要特别说一个很多文章犯过的错误全局莫兰指数显著并不代表你需要用空间模型。它只能说明y在空间上不是随机分布的至于这种空间关联是来自空间滞后效应邻居的y影响本地的y、空间误差效应不可观测因素在空间上相关还是仅仅因为x在空间上聚集全局莫兰指数回答不了。严谨的做法是在OLS回归之后对残差做空间检验看残差里是否还残留空间自相关。写法是先reg y x再sptest moran, residuals(reg), weights(W)。在Stata 15之后的版本里更推荐的做法是直接跑spregress然后使用estat moran因为它在估计模型的框架内处理检验系数估计和残差检验一步到位结果解释也更自然。局部莫兰指数则用来识别空间聚类的具体位置比如哪些省是高高聚类热点、哪些省是低低聚类冷点。Stata官方命令里没有直接的局部莫兰可视化但sptest moran命令支持局部指标的计算结合spmap或外部绘图可以画出LISA聚类图。这块内容更进阶新手可以先把全局莫兰吃透。3.4 结果解读示例一个简化的实证场景为了让上面的流程落到地上我模拟一个简化场景研究某省各地级市的创新产出用专利申请量y表示是否存在空间集聚是否受科技支出x影响。数据是截面数据50个地级市有经纬度坐标。完整命令流如下use innovation.dta, clear spset lon lat, id(city_id) spmatrix create idistance W, standardize spsummarize y x, weights(W) sptest moran y, weights(W) reg y x estat moran, weights(W) spregress y x, dvarlag(W) // 这里跑SAR模型 estat impact y x, weights(W)假设sptest moran的p值为0.01说明创新产出有显著空间集聚。接着OLS回归后estat moran的p值也小于0.05说明OLS残差仍有空间自相关这时就有充分的理由改用空间模型。上面第四步的spregress就是SAR模型的写法会输出ρ空间滞后系数如果ρ显著为正说明城市之间的创新产出存在正向溢出效应。这里的“正向溢出”可以通俗理解为一个城市创新产出提高会带动周围城市也跟着提高。4. 从莫兰指数到空间回归模型spregress与spxtregress的实战衔接4.1 决策路径莫兰显著之后到底该选什么模型很多新手到了模型选择这一步就卡住了SAR、SEM、SDM、SARAR到底选哪个我的建议是不要玄学判断按统计检验走。Stata在sptest命令里集成了基于OLS残差的LM检验和稳健LM检验sptest moran可以配合sptest lm使用报告的空间滞后LM和空间误差LM分别对应SAR和SEM的适用性。判断逻辑大致是这样如果空间滞后的LM统计量显著而空间误差的LM不显著优先考虑SAR模型这时误差项里没必要的空间结构可以忽略如果反过来空间误差的LM显著而空间滞后的LM不显著优先考虑SEM如果两个都显著再看稳健版LM谁稳健版更显著就先放谁进去如果两个稳健版也都不相上下那就直接上SARAR模型或者用SDM模型空间杜宾模型把x的空间滞后也放进去让数据告诉你哪个更合理。SDM模型在Stata里通过spregress的dvar和dvarlag同时指定来实现spregress y x, dvarlag(W) dvar(x, lag(W))意思是不仅y有空间滞后x也有空间滞后。SDM的价值在于它能捕捉“解释变量的空间溢出”效应即邻居的x也会影响本地的y。这在实证中非常常见。比如研究教育投入对产出的影响某省加大教育投入可能会培养出人才流向邻省从而对邻省产出产生正向作用这就不是SAR或SEM能捕捉的。4.2 截面数据的空间回归spregress的操作细节spregress最常用的写法是spregress y x, dvarlag(W) ml这里的dvarlag(W)表示被解释变量的空间滞后项ml表示使用最大似然估计。Stata默认的估计方法其实是GS2SLS广义空间两阶段最小二乘它的优点是稳健且不需要正态假设但输出里没有对数似然值也不方便做LR检验。如果你需要用似然比检验在SAR和SEM之间做选择记得加上ml选项。回归输出中需要重点看几个地方。首先是空间滞后系数ρ如果显著且为正说明被解释变量存在正向空间溢出。其次是个体变量的系数在空间模型里这些系数不能直接解释需要用estat impact分解。最后是模型整体拟合指标AIC和BIC在模型比较时有用处。estat impact是spregress和spxtregress的一条黄金搭配命令。用法是estat impact y x, weights(W)输出三张表直接效应、间接效应和总效应。举个例子假设x的系数是0.5ρ是0.4W是行标准化矩阵那么直接效应会和系数很接近但略小间接效应则等于直接效应乘以某个放大的空间乘数。实际输出里间接效应告诉你的是一个地区x变化1个单位会通过空间反馈导致所有地区的y平均变化多少。这才是空间溢出效应的真正体现。4.3 面板数据的空间回归spxtregress的固定效应与随机效应选择面板数据是实证中最常见的数据结构spxtregress因此成了最高频的主力命令。基本写法是spset province xtset province year spxtregress y x, re dvarlag(W) // 随机效应SAR spxtregress y x, fe dvarlag(W) // 固定效应SAR注意spxtregress的re和fe选项和普通xtregress的用法非常接近但有一个重要区别spxtregress的固定效应模型是通过在估计中直接加入个体虚拟变量实现的所以在省份很多时计算量会比较大。随机效应模型则假设个体效应与解释变量不相关在空间模型里这个假设往往比传统面板更难以满足。固定效应和随机效应的选择传统计量用豪斯曼检验。可惜的是spxtregress没有提供官方的hausman检验命令很多论文的做法是fe模型和re模型都跑一遍如果核心变量系数方向和显著性没发生质变就报告更符合理论预期的那个。这种做法不算严格但实证领域目前也没有更好的标准动作。更稳妥的做法是看模型设定的核心研究问题如果你只关心省内变量变化对省内结果的影响个体固定效应模型更安全如果你还想识别省际溢出的结构参数随机效应模型在统计上更有效率但必须警惕遗漏变量偏差。面板模型的结果解读和截面模型完全相同回归后必须用estat impact分解效应。在面板SAR模型里直接效应和间接效应的数值通常会比截面模型更稳定因为面板数据里的个体异质性已经被控制住了一部分。这样跑出来的间接效应才是真正意义上的空间溢出净效应。4.4 稳健性检验换权重矩阵、换模型、换样本量一个都不能少空间计量的实证里最容易被审稿人挑战的就是稳健性。权重矩阵是你自己选的凭什么这么选审稿人要是质疑你必须有备而来。我的标准做法是主回归用邻接权重或距离倒数权重中的一种然后至少用另一种权重矩阵重跑一遍回归核心系数的方向和显著性都不变就说一句结论稳健。同时把SDM模型也跑一遍如果SDM检验Wald或LR表明SDM不能退化成SAR或SEM那就说明模型选择是有依据的。这个检验在spregress之后可以用estat和test命令手动完成具体步骤是跑完SDM之后检验WX系数是否联合为零如果为零就可以退化到SAR检验WX加ρ是否为某种约束可以退化到SEM。逻辑上就是把SDM当成一般模型把SAR和SEM当成约束模型做常规的约束检验。最后局部莫兰指数和LISA聚类图也是论文里经常加的视觉证据可以展示某个具体区域的空间聚类状态。这些图不一定需要Stata画算出来之后用GIS软件或R画更灵活Stata这边把局部莫兰的值输出来就行。5. 常见报错与排查技巧实录5.1 报错速查表以下是我这些年收集到的最常见的sp系列报错基本覆盖了新手遇到的90%的情况。遇到问题先查这一张表常见报错信息原因分析解决方案variable not set忘记spset或spset语句被覆盖确认spset已执行重新执行一次matrix W not found权重矩阵未创建或已被删除用spmatrix dir检查重建权重矩阵weights matrix not positive definite权重矩阵有问题通常是距离矩阵含负值或非标准化重新用spmatrix create distance并加standardizetime variable not set面板数据但没xtset先xtset province yearunbalanced panel detected使用了非平衡面板数据用spbalance或先补全面板结构no observations缺失值太多或样本筛选过严检查数据缺失情况必要时用spbalancematrix has missing values权重矩阵在生成时含缺失检查距离计算中是否有无法匹配的坐标estimation sample varies不同命令用到了不同的样本范围确认所有回归变量无缺失权重矩阵覆盖全部样本cannot compute moran变量或权重矩阵中存在缺失用spmatrix describe和misstable summarize排查5.2 我踩过并值得你避开的几个坑第一个坑是权重矩阵和样本不匹配。你的数据共有31个省但某一两个省的数据缺失spset还是那31个权重矩阵还是31乘31可回归时只剩29个观测。这时候莫兰指数和回归结果完全可能对不上因为两个命令用了不同的样本。解决办法是回归前先drop掉有缺失的样本然后重新spset保证权重矩阵和样本严格一致。第二个坑是面板数据里的莫兰指数。很多人直接在面板数据上跑sptest moran y, weights(W)Stata默认是把你每个年份的y都当成一个独立截面来算这会严重高估莫兰指数。正确做法是对某一年的截面数据单独算或者把面板数据里的y先按年份拆开再分别计算。如果你硬要报告一个面板整体的莫兰值也需要说明这是按年分算后的平均值或范围而不是把多年数据混在一起算出来的单个值。第三个坑是权重矩阵标准化带来的“乘数陷阱”。行标准化之后如果你不理解它的含义很容易在解释空间溢出效应时被系数欺骗。举个极端例子某省只有1个邻居它的空间滞后项就是邻居的全部影响而另一个省有10个邻居它的空间滞后项是10个邻居影响的平均值。这两者在解释上代表的信息强度完全不一样。所以在论文里讨论空间溢出时最好不要只报系数还要结合权重矩阵的结构特征去解释以免误导读者。第四个坑是spset后更换数据源。有些人同时维护好几套数据在一个数据文件里spset之后直接use另一个文件忘记重新spset结果命令报错或者算出来的结果莫名其妙。每条空间命令都会检查spset的设定如果数据变了而spset没跟上宁可报错中断也比静默算错强。所以每次切换数据后第一步就是重新确认sp矩阵是否存在、spset是否对应。5.3 一篇完整复现的代码模板最后我把自己常用的模板贴出来新手可以在此基础上改变量名和数据即可跑通整个流程。模板同时覆盖截面数据和面板数据稳健性检验也一并写好了capture log close log using spatial_analysis.log, replace * 截面数据的空间分析流程 use cross_section.dta, clear spset region_id spmatrix create contiguity W_con, standardize spmatrix create idistance W_dis, standardize spplot y, cutpoints(10) // 画分布地图 sptest moran y, weights(W_con) reg y x1 x2 estat moran, weights(W_con) spregress y x1 x2, dvarlag(W_con) ml estat impact y x1 x2, weights(W_con) spregress y x1 x2, dvarlag(W_con) dvar(x1, lag(W_con)) ml * 用W_dis重跑一遍确认稳健性 spregress y x1 x2, dvarlag(W_dis) ml estat impact y x1 x2, weights(W_dis) * 面板数据的空间分析流程 use panel_data.dta, clear xtset region_id year spset region_id spmatrix create contiguity W_panel, standardize spxtregress y x1 x2, fe dvarlag(W_panel) estat impact y x1 x2, weights(W_panel) spxtregress y x1 x2, re dvarlag(W_panel) estat impact y x1 x2, weights(W_panel) log close这套流程大概可以应付90%的中文核心期刊论文需求。如果审稿人要求做LM检验就在OLS之后补一行sptest lm或者查sptest moran附带的稳健版输出按前面讲过的模型选择逻辑来。写在最后的一点心得从早期用spmat手搓权重矩阵到后来官方sp系列命令越来越成熟我能明显感觉到空间计量的技术门槛降了一大截。一个再明显不过的变化是五年前想跑通一个SDM模型光矩阵格式转换就可能折腾两三天现在spset加spmatrix再加spxtregress十分钟就能跑完主回归。但工具越方便反而越要警惕盲目使用。我见过不少论文把莫兰指数当成“开门仪式”算完就扔后面回归模型的具体选择完全靠拼凑也见过把空间权重矩阵调了七八种版本、只为了挑一个让结果显著的。这些都是本末倒置。空间计量的价值在于对经济机制提出合理的空间解释而不是给普通回归穿上空间外衣。你自己先想清楚“影响是怎么跨区域传导的”再去选权重矩阵和模型就会自然得多。根据我个人经验入门最快的方式不是背命令而是找一个你熟悉领域的数据集按上面模板完整跑一遍把每一步的输出都亲手读一遍有看不懂的再回来翻文档。跑通一轮之后16个命令的定位和用法基本就烂熟于心了。希望这篇整理能让你少走我当年走过的弯路。
返回列表