全部版块 我的主页
› 论坛 › 计量经济学与统计论坛 五区 › 计量经济学与统计软件
222 1
2026-11-03
空间权重矩阵怎么设:Elhorst论文的复现数据与R代码

 

空间计量的第一道选择题不是模型,是 W:距离衰减参数取多少、几个 W 共用同一个参数还是各用各的。这个选择直接决定你报出来的直接效应与间接效应,尤其是间接效应——它往往是审稿人第一个追问的地方。

 

格罗宁根大学
J. Paul Elhorst 把这项研究的完整复现材料放到了 Harvard Dataverse(DOI: 10.7910/DVN/V9L9XC,2024 年 2 月 26 日存档,2024 年 8 月 5 日发布 v1.0),一个 10.8 MB 的 PAsubmissionR.zip,解压后 189 个条目、5 个顶层目录,模拟与实证的 R 代码、数据、结果表全部在内。下面按「先看包里有什么、再看代码怎么跑」的顺序拆。

 

这份复现包里到底有些什么

 

五个顶层目录,分工很直接:

 

目录条目数里面是什么
Estimation18实证估计主脚本(Table2/TableC1/Figure1)、144 国邻接矩阵、COW 面板数据、距离与坐标文件
Simulation65模拟主脚本与四个子目录(EX_RN/EX_SN/IN_RN/IN_SN)、结果 .RData、Table1 与附录 A 的 PDF
AdditionalSimulations46补充模拟的四个同构子目录,附附录 B 的 TableB1—B18 PDF
Empirical illustration Matlab57同一实证例子的 Matlab 实现(含 20 余个 .m 函数与结果 txt)
Results1附录 A 的 TableA1—A7 PDF

 

单看目录结构就能读出作者的组织逻辑:一个「估计」目录对应论文正文的实证表,一个「模拟」目录对应正文表 1 与附录 A,一个「补充模拟」目录对应附录 B,再加一份 Matlab 对照实现。这种「R 主实现+Matlab 复核」的双份结构,在空间计量这类涉及大量矩阵运算的研究里是稳妥做法——两种语言的优化器与行列式计算方法不同,结果能对上才说明不是代码 bug。

 

论文在解决什么问题

 

数据集的摘要原文写得很清楚(本包为论文的复现材料):

 

Spatial econometric models allow for interactions among cross-sectional units through spatial weight matrices. This paper parameterizes each spatial weight matrix in the widely used spatial Durbin model with a different instead of one common distance decay parameter, using negative exponential and inverse distance matrices.

 

三句话拆开看:一是研究对象是空间杜宾模型(SDM),这是应用里最常用的设定;二是常规做法给所有 W 一个共同的衰减参数,本文改成每个 W 各有一个;三是衰减函数取两种形式——负指数(negative exponential)与逆距离(inverse distance)。

 

方法上的贡献是联合估计衰减参数与响应参数(joint estimation of the decay and response parameters),并用蒙特卡洛模拟检验其表现;实证部分用的是军事支出(military expenditures)数据。摘要最后一句是全文结论里最该记住的:

 

Indirect effects in particular appear to be sensitive to different parameterizations.

 

间接效应对参数化的选择特别敏感。这句话解释了为什么这篇论文值得复现:如果你的 W 是随手设的,间接效应的估计就可能是设定带来的,而不是数据里的。

 

Estimation 目录:144 国邻接矩阵与 COW 数据

 

实证主脚本是 PA_Table2_TableC1_Figure1.R(35 KB),它的开头几行就把依赖和流程交代了:先装/载 11 个包(splm、spdep、spatialreg、plm、nlme、nloptr、pracma、readxl、writexl、ggplot2、tidyverse、ggpubr),再 source 六个自写函数(spmlb.
R、spfemlb.
R、likelihoodsFE.
R、fixed_effects.
R、eval_f_psfe.
R、psfe_multi.R/psfe_same.
R、lldistance.
R)。

 

数据侧有三份 Excel:BC1_144.xlsx(144×144 二进制邻接矩阵)、datasetcow2015.xlsx(COW 项目面板数据,脚本注明沿用 Yesilyurt and Elhorst (2017) 的数据集)、coor.xlsx(国家坐标,用于算距离);另有 worldcities.xlsx(约 1 MB)供城市层面距离计算。

 

脚本里有一段值得单独看:读入邻接矩阵后,作者手工把法国(第 45 列)、荷兰(92)、英国(136)、美国(137)与其他国家的若干相邻关系置零——因为海外领地或地理飞地会造成「跨洋相邻」的假连接。处理完再按行非零元素做行标准化(row standardization),得到 Wbasic。这一步是空间计量里最容易被忽略的细节:邻接矩阵不清理飞地,W 就带着结构性错误进入似然函数,后面所有效应分解都跟着错。

 

主脚本的其余部分是变量设定(kx = 5 个解释变量)、时间虚拟变量(用 kronecker 积构造,去掉最后一期)、缺失值处理(对 citizensmissing 在 Missing 标记下的对数化处理),然后调用各似然函数做估计。产出是 Table2 与 TableC1 的 txt,以及 Figure1 的 PDF。

 

多个
W、不同参数:函数是怎么分工的

 

六个函数的命名其实暴露了模型设定空间。psfe_multi.R/psfe_one.R/psfe_same.R 对应三种参数化:multiple(每个 W 各自一个衰减参数)、one(只用一个
W)、same(多个 W 共用一个参数)。likelihoodsFE.R(27 KB)是固定效应下的似然函数集合,fixed_effects.R 做组内变换去除个体效应,eval_f_psfe.R 是目标函数评估,lldistance.R 算对数似然所需的距离量,spfemlb.R(17 KB)与 spmlb.R 是空间面板的极大似然/LM 检验工具。

 

Empirical illustration Matlab 目录里能看到对应的 Matlab 版本,文件名把设定写进了名字:static_multi_alpha_loglik_Edist_me.m、static_one_alpha_loglik_Idist_rn.m、..._rhofixed.m 等等。规律是「设定(multi/one/same 与 rhofixed 与否)+距离类型(Edist 负指数/Idist 逆距离)+误差设定(me/rn)」。R 目录的四个模拟子目录 EX_RN/EX_SN/IN_RN/IN_SN 就是这套记法的另一套缩写(EX=负指数、IN=逆距离,RN/SN 区分随机系数或单一系数设定)。

 

如果只是想在自己的数据上跑一遍这套方法,最小的组合是:lldistance.R + fixed_effects.R + likelihoodsFE.R + eval_f_psfe.R + 一个 psfe_*.R,再按自己的 W 个数选 multi/same/one。

 

Simulation 目录:结果文件怎么读

 

模拟主脚本是 PA_Table1_TableA1toA6.R(19.6 KB),另有一个 4.8 KB 的精简版 PA_Table1.R,外加 replica.R(7638 字节,控制重复次数)与 DataCollection.R(收集每次重复的结果)。

 

结果文件按参数组合命名,例如 Res_200_0.25_2_1.5_
3.RData
、Res_200_0.5_2_1.5_
3.RData
、Res_800_0.5_2_1.5_
3.RData
——第一个数字是样本规模(200/800),后面几个是这个设定下的参数真值组合。每个 .RData 约 720 KB。四个子目录(EX_RN、EX_SN、IN_RN、IN_SN)各有一套同构的结果,对应两种距离函数 × 两种系数设定的 2×2 设计。

 

每个子目录里都带着一份 .Rhistory,这在复现包里算个彩蛋:能看到作者实际跑过的命令顺序,包括调试过程。对读代码卡住的人来说,这比注释更有用。

 

结果表与 PDF 的对应关系

 

包里的 PDF 是按论文的表格编号命名的,对照关系如下:

 

  • Simulation/Paper_Table1_Appendix_TableA1.pdf:正文表 1 与附录表 A1
  • Simulation/Paper_Appendix_TableA2toA6.pdf:附录 A2—A6
  • Results/Paper_Appendix_TableA1toA7.pdf:附录 A1—A7 合订
  • AdditionalSimulations/Paper_Appendix_TableB1toTableB18.pdf:补充模拟的 18 张表
  • Estimation/Paper_Figure1_Table2_Appendix_TableC1.pdf:实证部分图
    1、表 2 与附录 C1
  • Empirical illustration Matlab/Paper_Appendix_TableD1_TableD2.pdf + PAoutput_TableD1_TableD2.txt:Matlab 侧的附录 D 表与其原始输出

 

写论文时最有用的是最后一组:txt 是程序直接吐出的原始数字,PDF 是排版后的表。想核对「表里的数是不是代码跑出来的」,对一遍 txt 就知道。

 

跑之前要留意的几件事

 


第一,工作目录。主脚本里写死了 setwd('~/PAsubmissionR/Estimation'),解压后目录名必须保持一致,或者自己改这一行——这一句不改,后面所有 source() 都会失败。

 


第二,包版本。11 个包里 splm、spatialreg、spdep 的接口在近几年有过变动,脚本是按当时的版本写的;跑不通时先怀疑版本,而不是怀疑方法。

 


第三,残留文件。Estimation/~$Table4.xlsx 是 Excel 打开文件时生成的临时锁文件(165 字节),.Rhistory 是会话历史,两者都不参与计算,可以忽略但别误以为是数据。

 


第四,Matlab 与 R 双份实现不要混跑。两边的输入文件同名但处理路径不同,混用会得到对不上的中间结果。

 

────────────────

回复本帖,可见这份复现材料在 Harvard Dataverse 的官方页面与直接下载地址、DOI 与引用格式、完整文件清单(含各文件大小与用途)、许可条款原文,以及四个模拟子目录的参数命名规则对照表,方便你按目录结构直接定位要跑的那一段。


游客,如果您要查看本帖隐藏内容请回复

把经管之家装进你常用的 AI 智能体中

一键快捷安装经管之家 MCP/技能,让 AI 帮你查教程、找数据、读论坛帖子。

检索、阅读公开帖子不收费,安装可申请领取:3 通用积分+100 论坛币+3 元论坛资金

请点击查看安装教程与福利 →

说明: AI 算力按所用平台规则计算;附件按原帖条件获取;福利领取条件以活动页面为准。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2026-11-3 16:26:07
想拿这份W和数据跑一遍
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群