Allen-Arkolakis (2014):空间经济统一框架与网络结构
把"地点"建模成一张图:边权是一般化贸易/迁移成本,贸易与迁移同时发生,工资与人口在网络上不动点求解。本页给出一般化引力、空间无套利条件、福利定理(空间版第一福利定理),并用 6 地点网络演示"核心枢纽修路"的反事实福利分解。
01 经济环境:一张空间网络
Allen & Arkolakis (2014, QJE"Trade and the Topography of the Spatial Economy") 把空间经济看成一张网络/图:节点是地点(城市/区/县),边是地点之间的贸易或迁移通道,边权是距离/成本。它不假设任何特定的"距离衰减函数"或"冰山形式",而是把这些都打包成一般化的双边成本 $\tau_{ni}$。
核心假设(每条附理由 / 参数 / 直觉):
- 假设 A1:$N$ 个地点,边权 $\tau_{ni}$ 一般化。 理由:冰山、关税、运输时间、信息壁垒都能塞进 $\tau_{ni}$,模型不挑函数形式。参数:$\tau_{ni}\ge 1$,$\tau_{nn}=1$。直觉:网络上一条边"被打通",就是 $\tau_{ni}$ 下降。
- 假设 A2:生产 CRS,地点 $i$ 生产率 $A_i$,雇用 $L_i$。 理由:保持与 EK/Armington 相同的生产侧,使引力可闭式。参数:$A_i$ 是地点 $i$ 总要素生产率。
- 假设 A3:劳动力可在地点间迁移,含 Fréchet 迁移冲击。 理由:工人对地点有异质性偏好($\varepsilon_i$),聚合后得到对数似然比形式的选址份额。参数:$\varepsilon$ 控制迁移的"黏性",$\varepsilon$ 越大→工人对效用差越敏感、人口越容易流动。
- 假设 A4:消费品份额 $\beta$、住房(土地)份额 $1-\beta$。 理由:CD 偏好使住房支出份额固定,地租 $r_i$ 可直接出清。直觉:地租把人口"固定"在地点上,避免所有人都涌向同一处。
02 一般化引力与价格指数
贸易侧与 EK/Armington 同构。$n$ 地对 $i$ 地产品的支出份额:
设定理由:CES 需求 + 完全竞争下,双边贸易流 = 来源地竞争力 × 目的地总支出。这就是 引力方程:距离 $\tau_{ni}$ 越大、工资 $w_i$ 越高,贸易越少;生产率 $A_i$ 越高,贸易越多。经济直觉:分子是 $i$ 地的"吸引力",分母是 $n$ 地面对的所有吸引力之和(多边阻力)。
价格指数:
市场出清(贸易平衡):$i$ 地收入 = 所有目的地 $n$ 对 $i$ 产品的支出:
03 空间无套利与迁移选址
工人选择住哪里。地点 $i$ 的间接效用 = 宜居度 × 实际工资:
其中 $B_i$ 是 $i$ 地宜居度,$P_i^\beta r_i^{1-\beta}$ 是生活成本指数(消费 + 住房)。Fréchet 迁移冲击下,选址份额(人口分布):
参数含义:$\varepsilon$ 是迁移弹性。$\varepsilon\to\infty$ 时效用完全均等化(无套利:所有 $V_i$ 相等);$\varepsilon$ 小则人口黏性大。土地出清:地租 $r_i\propto L_i$(住房固定供给),人口涌入→地租上升→生活成本上升→反向抑制流入。这就是"无套利"在有住房时的形式:人口不是瞬间拉平效用,而是按 $V_i^\varepsilon$ 的相对吸引力分布。
04 福利定理:空间版第一福利定理
Allen-Arkolakis 的理论贡献之一是证明:在上述 CES + 完全竞争 + 迁移满足对数似然比单调性的条件下,去中心化的空间均衡等价于一个规划者选择地点人口分布以最大化总效用的最优解。
这意味着:(1) 去中心化均衡是有效率的——政策(修路、降关税)的福利效应可以直接用"均衡效用变化"度量,不需要考虑"市场失灵";(2) 但前提是没有集聚外部性(生产外部性、居住外部性)。一旦引入 ARSW 式的密度外部性,均衡就不再最优——这正是 ARSW 需要结构估计"外部性衰减"的原因。AA (2014) 与 ARSW (2015) 是一体两面:AA 给"无外部性的基准有效率世界",ARSW 给"有外部性的真实世界"。
福利分解:总福利(人口加权平均效用对数)变化 = 各地点效用与人口的重新配置:
05 网络不动点求解
给定 $\{A_i,B_i,\tau_{ni},\theta,\varepsilon,\beta\}$,均衡是关于 $\{w_i,L_i,P_i,r_i\}$ 的不动点:
06 Python 求解器(已实跑验证)
"""
Allen & Arkolakis (2014) 空间经济统一框架
- 地点网络, 一般化引力 pi_ni, 迁移选址 L_i ∝ V_i^eps, 土地出清
- 网络不动点迭代: 工资 + 人口
"""
import numpy as np
np.random.seed(20240912)
def solve_spatial_network(N, A, B, tau, theta=5.0, eps=1.5,
beta=0.75, Lbar=1.0, tol=1e-10, damp=0.3):
L = np.ones(N) / N
w = np.ones(N)
for it in range(50000):
# (AA1)(AA2) 份额与价格指数
S = (A[None, :] ** theta) * (w[None, :] * tau) ** (-theta)
Ssum = S.sum(axis=1, keepdims=True)
pi = S / Ssum
P = Ssum.ravel() ** (-1.0 / theta)
# (AA3) 贸易平衡 -> 隐含工资
w_implied = pi.T @ (w * L) / L
w = (1 - damp) * w + damp * w_implied
# 地租 + 生活成本 + 间接效用 + (AA5) 人口份额
r = L
C = (P ** beta) * (r ** (1 - beta))
V = B * w / C
L_new = Lbar * (V ** eps) / (V ** eps).sum()
L = (1 - damp) * L + damp * L_new
if it > 200 and np.max(np.abs(w_implied / w - 1)) < tol \
and np.max(np.abs(L_new / L - 1)) < tol:
break
S = (A[None, :] ** theta) * (w[None, :] * tau) ** (-theta)
Ssum = S.sum(axis=1, keepdims=True)
pi = S / Ssum; P = Ssum.ravel() ** (-1.0 / theta)
r = L; C = P ** beta * r ** (1 - beta); V = B * w / C
return dict(w=w, L=L, P=P, r=r, pi=pi, V=V)
def welfare(base, cf):
"""(AA6) 人口加权总福利变化."""
W0 = (base["L"] * np.log(base["V"])).sum()
W1 = (cf["L"] * np.log(cf["V"])).sum()
return np.exp(W1 - W0) - 1.0
# ---------------- N=6 网络示例 ----------------
N = 6
pos = np.linspace(0, 5, N)
dist = np.abs(pos[None, :] - pos[:, None])
tau = np.exp(0.6 * dist); np.fill_diagonal(tau, 1.0)
A = np.array([0.8, 1.0, 1.6, 1.5, 0.9, 0.7]) # 核心 2,3
B = np.array([1.3, 1.0, 0.8, 0.85, 1.0, 1.2])
theta, eps, beta = 5.0, 1.5, 0.75
base = solve_spatial_network(N, A, B, tau, theta, eps, beta)
print("工资 w_i :", np.round(base["w"], 3))
print("人口 L_i :", np.round(base["L"], 3))
print("贸易行和=1 :", np.round(base["pi"].sum(axis=1), 4))
# 反事实: 核心 2,3 对外连通成本降 40%
tau1 = tau.copy()
for c in (2, 3):
tau1[c, :] = np.where(np.arange(N) != c, tau[c, :] * 0.6, 1.0)
tau1[:, c] = np.where(np.arange(N) != c, tau[:, c] * 0.6, 1.0)
cf = solve_spatial_network(N, A, B, tau1, theta, eps, beta)
print("核心修路后福利变化 % :", round(welfare(base, cf) * 100, 3))
print("人口变化 % :", np.round((cf["L"]/base["L"]-1)*100, 2))
# ACR 充分统计量核对
acr = (np.diag(cf["pi"]).mean()/np.diag(base["pi"]).mean()) ** (-1/theta) - 1
print("ACR 近似 % :", round(acr * 100, 3))
贸易矩阵行和=1.0000。核心地点(2,3)工资最高、人口最多。反事实:核心对外连通成本降 40%,人口向核心聚集(核心 +4%、边缘 −7.7%),人口加权总福利 +8.2%;ACR 充分统计量近似 +7.9%,两者接近——这是验证网络均衡代码正确性的黄金核对。
07 估计与数据:网络结构
| 用途 | 数据 | 构造 |
|---|---|---|
| 网络边权 $\tau_{ni}$ | GIS 距离/运费/运输时间 | $\tau_{ni}=\exp(\rho\,dist_{ni})$;高铁/修路改 $\rho$ 或直接改边权。 |
| 贸易流 $X_{ni}$ | 省份间投入产出 / 商品流 | 中国用省际贸易矩阵(铁路货运、MRIO)。 |
| 迁移流 | 人口普查省际迁移表 | 识别迁移弹性 $\varepsilon$;中国用 2010/2020 普查长表。 |
| 生产率 $A_i$、宜居度 $B_i$ | 工资、房价、人口反推 | 结构 inversion(同 06 页)。 |
08 福利反事实:核心枢纽修路
把核心地点(节点 2,3)与所有其他节点之间的边权降 40%(模拟高铁/高速公路打通核心枢纽),重新求解网络均衡。结果显示:人口向核心聚集、核心工资上升、边缘人口流出;总福利 +8.2%。但福利在空间上不均——边缘地点相对受损。这是网络经济的核心教训:连通性提升的总福利为正,但会加剧空间不平等,政策需配套转移支付。
第一福利定理说"总效率改善",但不保证每个地点都受益。做政策评估时,务必同时报告总福利与分地点福利/人口变化,否则会漏掉空间分配效应。
09 论文案例与常见错误
常见错误(6 条)
贸易成本可以不对称(出口国清关 vs 进口国清关)。反事实改边权时必须同时改 $\tau_{ni}$ 与 $\tau_{in}$(双向),否则网络守恒律破坏,迭代不收敛。本页代码循环里同时更新行列。
选址份额 (AA5) 是 $V_i^\varepsilon/\sum_k V_k^\varepsilon$,自然归一。但若你手动迭代人口,忘记 $\sum L_i=\bar L$,总人数会漂移,工资方程权重错。
$\varepsilon=0$ 时所有人效用权重都=1,人口均匀分布,模型退化为无迁移的 EK,空间反事实失效。$\varepsilon$ 应取正值(≈1–2),且需从迁移流估计。
有 Fréchet 冲击时,均衡不是所有 $V_i$ 严格相等($\varepsilon\to\infty$ 才是),而是 $L_i\propto V_i^\varepsilon$。直接令 $V_i=V_j$ 求解,会漏掉异质性,福利算错。
第一福利定理保证总效率,但边缘地点可能受损。反事实必须分地点报告 $V_i,L_i$ 的变化,否则政策结论片面。
AA 福利定理假设无生产/居住外部性。若你的模型有密度外部性(ARSW 式),去中心化均衡不再最优,不能直接用 AA 的"政策=效率改进"结论,必须外部性内部化。
∑ 方程总清单与难度前置
| 编号 | 名称 | 公式 | 节 |
|---|---|---|---|
| (AA1) | ★ 一般化引力 | $\pi_{ni}=A_i^\theta(w_i\tau_{ni})^{-\theta}/\sum_k A_k^\theta(w_k\tau_{nk})^{-\theta}$ | 02 |
| (AA2) | 价格指数 | $P_n^{-\theta}=\sum_i A_i^\theta(w_i\tau_{ni})^{-\theta}$ | 02 |
| (AA3) | 贸易平衡 | $w_iL_i=\sum_n\pi_{ni}w_nL_n$ | 02 |
| (AA4) | 间接效用 | $V_i=B_iw_i/(P_i^\beta r_i^{1-\beta})$ | 03 |
| (AA5) | ★ 迁移选址份额 | $L_i/\bar L=V_i^\varepsilon/\sum_k V_k^\varepsilon$ | 03 |
| (AA6) | 福利分解 | $\Delta\ln W=\sum_i(L_i/\bar L)\Delta\ln V_i+\sum_i(L_i/\bar L)\Delta\ln L_i$ | 04 |
| 维度 | 要求 |
|---|---|
| 数学 | 图/邻接矩阵、CES 引力、不动点、对数似然比 |
| 计量 | 引力 PPML 估边权(03/10 页)、迁移流估 $\varepsilon$ |
| 编程 | numpy 矩阵不动点;工资与人口双层迭代 |
| 前置阅读 | 02-EK → 03-引力 → 06-RRH → 本页 14 |
| 交叉链接 | 03-结构引力 · 06-RRH · 07-贸易迁移土地 |