空间计量的第一道选择题不是模型,是 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 代码、数据、结果表全部在内。下面按「先看包里有什么、再看代码怎么跑」的顺序拆。
这份复现包里到底有些什么
五个顶层目录,分工很直接:
| 目录 | 条目数 | 里面是什么 |
| Estimation | 18 | 实证估计主脚本(Table2/TableC1/Figure1)、144 国邻接矩阵、COW 面板数据、距离与坐标文件 |
| Simulation | 65 | 模拟主脚本与四个子目录(EX_RN/EX_SN/IN_RN/IN_SN)、结果 .RData、Table1 与附录 A 的 PDF |
| AdditionalSimulations | 46 | 补充模拟的四个同构子目录,附附录 B 的 TableB1—B18 PDF |
| Empirical illustration Matlab | 57 | 同一实证例子的 Matlab 实现(含 20 余个 .m 函数与结果 txt) |
| Results | 1 | 附录 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 算力按所用平台规则计算;附件按原帖条件获取;福利领取条件以活动页面为准。 |


雷达卡


京公网安备 11010802022788号







