欢迎光临寒舍

结构估计实操指南(进阶)

4067 字

结构估计实操全攻略:从"知道原理"到"条件反射"


第一部分:六大方法的"快速画像"

在深入之前,先给你一张"速查表",建立第一印象:

方法 一句话定位 直觉口诀
MLE 找到让观察数据"最可能发生"的参数 “数据分布我全知道”
GMM 让理论矩和样本矩尽量接近 “虽然分布不清楚,但我知道一些等式应该成立”
SMM 模拟一堆假数据,让假数据的统计量接近真数据 “似然写不出来,但我能模拟”
间接推断 先用简单模型拟合真数据,再模拟数据让简单模型给出相似结果 “我借一个’翻译器'”
CCP 两步法 先估计选择概率,再利用概率反推价值函数 “动态问题,静态解法”
贝叶斯法 用先验+数据=后验,不断更新信念 “我对参数有猜测,数据来修正”

第二部分:方法详解与场景匹配

方法一:最大似然估计(MLE)

核心思想

类比:你是一个老师,学生交了一份答卷(数据)。你有很多套出题规则(不同参数值),你要找到"最可能出这份答卷"的那套规则。

数学表达

$$\hat{\theta}_{MLE} = \arg\max_{\theta} \sum_{i=1}^{N} \ln f(y_i | x_i, \theta)$$

其中 $f(\cdot)$ 是数据的概率密度函数(似然函数)。

适用条件(条件反射触发器)

当你遇到以下情况时,想到 MLE:

  1. 能写出完整的似然函数(知道数据的分布形式)
  2. 模型相对简单,没有复杂的积分或求和
  3. 数据生成过程清晰,从选择到结果的映射明确
  4. 样本量较大,保证渐近性质成立

场景一:离散选择模型——城市交通方式选择

现实背景:北京市交通委想知道居民为什么选择地铁/公交/开车。

数据

  • 个体特征:收入 $inc_i$、年龄 $age_i$、是否有车 $car_i$
  • 选项特征:时间 $time_{ij}$、费用 $cost_{ij}$(j=1,2,3 代表三种方式)
  • 观察到的选择:$y_i \in \{1, 2, 3\}$

模型设定(随机效用模型):

个体 i 选择方式 j 的效用:

$$U_{ij} = \beta_1 \cdot time_{ij} + \beta_2 \cdot cost_{ij} + \gamma_1 \cdot inc_i \cdot \mathbf{1}(j=开车) + \varepsilon_{ij}$$

假设 $\varepsilon_{ij}$ 服从第一类极值分布(Gumbel 分布),则选择概率为著名的Logit 模型

$$P(y_i = j | x_i, \theta) = \frac{\exp(V_{ij})}{\sum_{k=1}^{3} \exp(V_{ik})}$$

其中 $V_{ij} = \beta_1 \cdot time_{ij} + \beta_2 \cdot cost_{ij} + ...$

I. 结构参数(代表偏好和制约)

参数 名称 经济含义 符号 来源
$\beta_1$ 时间的边际效用 多花 1 分钟时间,效用下降多少 结构 数据中时间变异估计
$\beta_2$ 费用的边际效用 多花 ¥1,效用下降多少 结构 数据中价格变异估计
$\gamma_1$ 收入对驾车的影响 收入每增加 1 倍,驾车吸引力增加多少 结构 收入-选择相关性估计
$\gamma_2$ 有车对驾车的影响 有车相比无车,驾车吸引力增加多少 结构 有车无车选择差异估计

具体例子

  • 早上 8 点,王先生有车,收入 ¥8000/月,从家到公司:
    • 地铁:40 分钟,¥2
    • 开车:30 分钟,¥10(油+停车)
    • 他选择地铁
  • 同日,李女士有车,收入 ¥3000/月:
    • 地铁:40 分钟,¥2
    • 开车:30 分钟,¥10
    • 她选择开车

从这个对比,我们推断:

  • $\gamma_1 > 0$(高收入人群更不愿意开车——反直觉!需要加解释)
  • 或者,模型遗漏了变量(如王先生没有驾照,但数据里有)

如何估计?数据中的变异

  • 当不同出发地有不同的出行时间时,时间变异帮助识别$\beta_1$
  • 当不同路线有不同的票价时,价格变异帮助识别$\beta_2$
  • 当同样家庭不同成员有不同收入时,收入变异帮助识别$\gamma_1$

数据来源

1
2
3
4
5
6
7
8
北京市交通出行调查 (2020)
├─ 个体信息:5000个受访家庭
│  └ 收入、年龄、教育、是否拥车、是否有驾照
├─ 出行信息:每个受访者记录一天的所有出行
│  └ 出发地、目的地、选择的方式
└─ 出行时间/费用:从交通部门数据库匹配
   └ 从A地到B地坐地铁需要多少时间/费用
   └ 开车需要多少时间/费用

识别的两大来源

识别来源 提供的变异 识别的参数
个体间变异 不同人对同一路线的选择不同 $\beta_1, \beta_2, \gamma_1, \gamma_2$
选择集内变异 同一人的不同出行有不同的时间/费用 $\beta_1, \beta_2$

似然函数

$$\mathcal{L}(\theta) = \prod_{i=1}^{N} \prod_{j=1}^{3} P(y_i = j | x_i, \theta)^{\mathbf{1}(y_i = j)}$$

对数似然

$$\ln \mathcal{L}(\theta) = \sum_{i=1}^{N} \sum_{j=1}^{3} \mathbf{1}(y_i = j) \cdot \ln P(y_i = j | x_i, \theta)$$

操作步骤

  1. 设定参数初始值 $\theta^{(0)}$
  2. 对每个观测计算选择概率 $P_{ij}$
  3. 计算对数似然
  4. 用数值优化(如牛顿-拉夫森法)找到使对数似然最大的 $\hat{\theta}$
  5. 用 Hessian 矩阵的逆计算标准误

陷阱与注意

  • 全局最优 vs 局部最优:多用几个不同初始值
  • 分离问题:如果某个变量完全预测了结果(比如有车的人 100%开车),参数会趋向无穷
  • IIA 问题:Logit 模型假设"无关选项独立性",可能不现实(需要考虑 Nested Logit 或 Mixed Logit)

估计过程步骤

第一步:数据整理和变量构造

从原始数据构造每个选择集:

1
2
3
4
5
6
受访者 i,出行 t:
- 选择:y_it = 2(选了公交)
- 地铁可用性:time_i1 = 40, cost_i1 = 2
- 公交可用性:time_i2 = 45, cost_i2 = 1.5
- 开车可用性:time_i3 = 30, cost_i3 = 10, car_i = 1
- 个体特征:inc_i = 8000, age_i = 35, ...

第二步:设定似然函数

$$\ln L = \sum_{i=1}^{N} \sum_{t=1}^{T_i} \ln P(y_{it} = j | X_{it}; \theta)$$

其中对于选择 2 的观测:

$$\ln P(y_{it} = 2 | X_{it}; \theta) = V_{i2} - \ln \left( e^{V_{i1}} + e^{V_{i2}} + e^{V_{i3}} \right)$$

第三步:参数初始化

1
2
3
4
5
6
β₁ ← -0.05  (负数:时间增加→效用下降)
β₂ ← -0.10  (负数:费用增加→效用下降)
γ₁ ← 0.00   (收入影响)
γ₂ ← 0.50   (有车→倾向开车)
α₂ ← -0.10  (公交相对地铁不那么吸引)
α₃ ← 0.50   (开车相对地铁更吸引)

第四步:数值优化

使用 BFGS 或牛顿法:

1
2
3
4
repeat until convergence:
    计算 ∇ln L(所有样本的对数似然梯度)
    更新:θ_new = θ_old + step_size × 梯度方向
    检查:如果 |∇ln L| < 容差,停止

第五步:计算标准误

$$\text{Var}(\hat{\theta}) = \left( -\frac{\partial^2 \ln L}{\partial \theta \partial \theta'} \right)^{-1}$$

为什么要选 MLE?

问题 答案
为什么不用线性概率模型? Y 是离散的({0,1}),线性概率会预测概率<0 或>1
为什么要建模概率而不是直接预测选择? 我们想要的不只是预测,而是理解参数(结构参数)
为什么 MLE 而不是 GMM? 我们有完整的模型(随机效用模型),知道误差分布(Gumbel),MLE 更有效
为什么 MLE 而不是 SMM? 这不是"似然写不出来"的情况,反而我们能直接写出

场景二:生存分析——企业存活时间

现实背景:你想研究初创企业为什么有的活 3 年就倒闭,有的能活 20 年。

代理人问题:一个企业存活多长时间,取决于什么?

经济学视角:企业每期面临倒闭风险,风险取决于企业特征和经济环境。

数据

  • 企业特征:初始资本 $K_0$、行业 $ind$、创始人学历 $edu$
  • 观察到的存活时间 $T_i$
  • 是否右删失(调查结束时还活着)$c_i$

模型设定(Weibull 生存模型):

假设存活时间的风险函数为:

$$h(t) = \alpha \gamma t^{\gamma - 1} \exp(X'\beta)$$

含义:在时刻 t,给定企业特征 X,存活到 t 的企业在下一个时刻倒闭的(条件)概率。

生存函数为:

$$S(t) = \exp\left( -\alpha t^{\gamma} \exp(X'\beta) \right)$$

企业存活超过 t 时刻的概率。

结构参数

参数 名称 经济含义 约束
$\beta_K$ 初始资本的生存效应 初始资本每增加 ¥100 万,存活概率如何变化 应为正
$\beta_{ind}$ 行业效应 科技行业企业比传统行业更容易存活吗 行业异质性
$\beta_{edu}$ 创始人教育的生存效应 高学历创始人的企业更容易存活吗 应为正
$\alpha$ 尺度参数 控制基础风险水平 正数
$\gamma$ 形状参数 控制风险是否随时间增加 $\gamma>1$:增加, $\gamma=1$:常数, $\gamma<1$:减少

数据来源**:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
工商注册数据库 (2005-2023)
├─ 企业层级信息:200万家
│  ├─ 注册时间 t_register
│  ├─ 注销时间 t_deregister(如果存在)
│  ├─ 初始注册资本 K_0
│  ├─ 行业分类 ind
│  └─ 创始人教育(部分数据)
└─ 观测规则:
   ├─ 如果2023年还存活 → 右删失(censored)
   └─ 如果已注销 → 完整观测(event)

关键特点:删失信息

这是生存分析的核心难点:

  • 2010 年注册,2015 年倒闭的企业 → 完整观测 T=5 年
  • 2010 年注册,2023 年仍存活的企业 → 删失观测 T≥13 年

如果忽视删失会怎样?

1
2
3
4
如果我们只分析已倒闭企业:
→ 偏向于低生存时间
→ 低估资本、教育等因素的存活效应
→ 高估企业倒闭风险

识别策略

变异来源 如何帮助识别参数
初始资本的变异 比较资本 ¥200 万 vs ¥500 万的企业生存曲线,识别$\beta_K$
行业变异 比较不同行业的生存曲线,识别$\beta_{ind}$
时间变异 用删失信息和完整观测,识别$\gamma$(风险随时间的变化)

似然函数

对于观测到死亡的企业,贡献密度 $f(T_i)$;对于右删失的,贡献 $S(T_i)$:

$$\mathcal{L} = \prod_{i=1}^{N} \left[ f(T_i) \right]^{1-c_i} \left[ S(T_i) \right]^{c_i}$$$$= \prod_{i=1}^{N} \left[ h(T_i) S(T_i) \right]^{1-c_i} \left[ S(T_i) \right]^{c_i}$$$$= \prod_{i=1}^{N} h(T_i)^{1-c_i} S(T_i)$$

为什么 MLE 适合这里

  • 分布假设明确(Weibull)
  • 能写出完整似然
  • 删失信息可以自然纳入

估计过程

第一步:数据整理

1
2
3
4
5
6
7
8
企业 i 的数据:
- 存活时间(或删失时间):T_i
- 删失指示:δ_i = {0 删失, 1 已倒闭}
- 特征:K_0i, ind_i, edu_i

示例:
企业A:T=5年,δ=1,K_0=300万,科技,本科创始人
企业B:T≥13年,δ=0,K_0=200万,传统,高中创始人

第二步:似然函数

对于已倒闭企业(δ=1),贡献密度:

$$f(T_i) = h(T_i) S(T_i) = \alpha \gamma T_i^{\gamma-1} \exp(X_i'\beta) \cdot \exp(-\alpha T_i^\gamma \exp(X_i'\beta))$$

对于删失企业(δ=0),贡献生存概率:

$$S(T_i) = \exp(-\alpha T_i^\gamma \exp(X_i'\beta))$$

总似然:

$$L = \prod_{i: \delta_i=1} f(T_i) \times \prod_{i: \delta_i=0} S(T_i)$$

第三步:对数似然

$$\ln L = \sum_{i=1}^{N} \left\{ \delta_i [\ln \alpha + \ln \gamma + (\gamma-1) \ln T_i + X_i'\beta] - \alpha T_i^\gamma \exp(X_i'\beta) \right\}$$

第四步:数值最大化

1
2
3
4
5
6
7
8
9
初始化:β ← (0.1, 0.2, ...), α ← 0.001, γ ← 1.2

repeat until convergence:
    对每个企业 i:
        计算 h_i, S_i
        计算似然贡献
    合并所有似然
    计算梯度
    更新参数

第五步:检验模型设定

验证 Weibull 假设:

  • 画 Kaplan-Meier 生存曲线(非参数)
  • 叠加参数模型的生存曲线
  • 如果不匹配 → 考虑其他分布

方法二:广义矩估计(GMM)

核心思想

类比:你去菜市场买西瓜,但不能切开看。你用了三个"测试":

  1. 拍一拍听声音(矩条件 1)
  2. 看瓜纹间距(矩条件 2)
  3. 掂一掂重量(矩条件 3)

你要找一个"成熟度参数",使得理论上的声音、纹路、重量和你实际观察到的尽量一致。

数学表达

设有 L 个矩条件:

$$E[g(y_i, x_i, \theta_0)] = 0$$

GMM 估计量:

$$\hat{\theta}_{GMM} = \arg\min_{\theta} \left[ \frac{1}{N} \sum_{i=1}^{N} g(y_i, x_i, \theta) \right]' W \left[ \frac{1}{N} \sum_{i=1}^{N} g(y_i, x_i, \theta) \right]$$

其中 $W$ 是权重矩阵。

适用条件(条件反射触发器)

当你遇到以下情况时,想到 GMM:

  1. 似然函数难以写出或计算复杂
  2. 但理论给出了一些矩条件(如 Euler 方程、正交条件)
  3. 有工具变量可用
  4. 矩条件数 ≥ 参数数(可识别)
  5. 可能存在异方差或序列相关

场景三:家庭消费与储蓄行为——跨期替代弹性估计

现实背景:央行想知道居民对利率变化的敏感度,以便制定货币政策。

代理人问题:一个家庭在多个时期进行消费和储蓄决策,目标是最大化生涯效用。

最优化问题

$$\max E_0 \sum_{t=0}^{\infty} \beta^t u(C_t)$$

约束条件:

$$A_{t+1} = (1 + r_t) A_t + Y_t - C_t$$

(每期财富 = 上期财富加利息 + 收入 - 消费)

一阶条件(Euler 方程

消费者在消费和储蓄间无差异:

$$u'(C_t) = \beta (1 + r_{t+1}) E_t[u'(C_{t+1})]$$

经济含义

  • 左边:今天少消费 ¥1 的成本(给出的边际效用)
  • 右边:存这 ¥1 一年,明年消费更多的收益(折现的未来边际效用增加)

数据

  • 家庭消费 $C_t$(来自消费者支出调查)
  • 实际利率 $r_t$(银行存款利率 - 通胀)
  • 收入、年龄等控制变量 $Z_t$

消费者最大化:

$$\max E_0 \sum_{t=0}^{\infty} \beta^t u(C_t)$$

Euler 方程(一阶条件):

$$u'(C_t) = \beta (1 + r_{t+1}) E_t[u'(C_{t+1})]$$

假设 CRRA 效用 $u(C) = \frac{C^{1-\sigma}}{1-\sigma}$,取对数并整理:

$$\ln C_{t+1} - \ln C_t = \alpha + \frac{1}{\sigma} \ln(1 + r_{t+1}) + \varepsilon_{t+1}$$

其中 $\sigma$ 是相对风险厌恶系数(也是跨期替代弹性的倒数)。

结构参数

参数 名称 经济含义 如何识别
$\sigma$ 相对风险厌恶系数 消费增加 1%,边际效用下降百分之几 消费增长与利率的协方差
$\beta$ 贴现因子 家庭有多"急不可耐"($\beta$小 = 很急) 消费增长的期望

问题:$\varepsilon_{t+1}$ 与 $r_{t+1}$ 可能相关(期望误差,但条件于 t 期信息)

GMM 矩条件:这里我们不估计似然函数,而是利用 Euler 方程给出的矩条件

$$E_t[\varepsilon_{t+1}] = 0$$

这意味着:$\varepsilon_{t+1}$ 与任何 t 期可观测变量都无关:

$$E[Z_t \cdot \varepsilon_{t+1}] = 0$$

样本等价物

$$\frac{1}{T} \sum_{t=1}^{T} Z_t \cdot \varepsilon_{t+1}(\theta) \approx 0$$

可选的工具变量 $Z_t$

  • 滞后消费增长 $\Delta \ln C_t$
  • 滞后利率 $r_t$
  • 收入增长 $\Delta \ln Y_t$
  • 年龄、教育等不随时间快速变化的特征
  • 宏观变量:失业率、通胀等

操作步骤

第一步:定义矩函数

$$g_i(\theta) = Z_i \otimes \left( \Delta \ln C_{i,t+1} - \alpha - \frac{1}{\sigma} \ln(1 + r_{i,t+1}) \right)$$

第二步:两步 GMM

  1. 第一步用单位权重矩阵 $W^{(1)} = I$,得到初始估计 $\hat{\theta}^{(1)}$
  2. 用 $\hat{\theta}^{(1)}$ 计算最优权重矩阵: $$\hat{W}^{opt} = \left[ \frac{1}{N} \sum_{i=1}^{N} \hat{g}_i \hat{g}_i' \right]^{-1}$$
  3. 第二步用 $\hat{W}^{opt}$ 重新估计

第三步:过度识别检验(Hansen J 检验)

$$J = N \cdot \bar{g}' \hat{W}^{opt} \bar{g} \xrightarrow{d} \chi^2(L - K)$$

其中 L 是矩条件数,K 是参数数。如果 J 统计量显著,说明模型设定可能有问题。

数据来源

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
中国家庭追踪调查 CFPS (2010-2020)
├─ 家庭层级:8000个家庭的时间序列
│  ├─ 消费支出(分类:食品、服装、教育等)
│  ├─ 储蓄(银行存款、理财产品)
│  ├─ 资产信息
│  └─ 人口学特征
├─ 收入数据:
│  └─ 工作收入、财产收入、转移收入
└─ 利率数据(匹配年份):
   └─ 一年期定期存款利率

识别策略

利率变异是关键!

  • 2008 年金融危机:利率下降 → 如果消费也下降,意味着$\sigma$高
  • 2015 年加息周期:利率上升 → 观察消费增长如何变化

具体例子

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
时期 t:利率 r_t = 3.25%, 消费增长 Δln C = 2%
时期 t+1:利率 r_{t+1} = 2.25%, 消费增长 Δln C = 4%

Δln C_{t+1} - Δln C_t = 4% - 2% = 2%
利率变化:Δr = 2.25% - 3.25% = -1%

如果 1/σ × (-1%) ≈ 2% → σ ≈ -0.5?(不对!)

问题在于:利率下降应该让消费平滑(储蓄减少),消费增长上升
但我们观察到的是反向:利率下降时,消费增长也上升

这可能是:
1. 消费者情绪变化(消费心理)
2. 收入期望改变(预期乐观)
3. σ 的估计结果是受到这些混淆因素

数据预处理

1
2
3
对每个家庭 i,计算每年的变量: C_{it} = 总消费支出 r_t = 实际利率(名义利率 - 通胀率) Y_{it} = 总收入

创建所需的变量: Δln C_{it} = ln(C_{it}) - ln(C_{i,t-1})

选择矩

选定 L 个工具变量,构造 L 个矩条件:

$$m_l(\theta) = E[Z_{tl} \cdot (Δln C_{t+1} - \alpha - \frac{1}{\sigma} \ln(1+r_{t+1}))]$$

常见选择(保守起见,通常选 3-5 个):

  • $Z_{t1} = 1$(常数:Δln C 的均值)
  • $Z_{t2} = \ln(1+r_t)$(滞后利率)
  • $Z_{t3} = Δ\ln Y_t$(收入增长)
  • $Z_{t4} = Δ\ln C_t$(滞后消费增长)

GMM

第一步:用恒等权重 $W^{(1)} = I$

$$\hat{\theta}^{(1)} = \arg\min_{\theta} \bar{g}(\theta)' I \bar{g}(\theta)$$

其中 $\bar{g}(\theta) = \frac{1}{NT} \sum_{i,t} Z_t \cdot \varepsilon_{it}(\theta)$

第二步:计算最优权重

$$\hat{W} = \left[\frac{1}{NT} \sum_{i,t} \hat{\varepsilon}_{it} Z_t Z_t' \hat{\varepsilon}_{it} \right]^{-1}$$

用最优权重重新估计:

$$\hat{\theta}_{GMM} = \arg\min_{\theta} \bar{g}(\theta)' \hat{W} \bar{g}(\theta)$$

第四步:Hansen J 检验(过度识别检验)

$$J = NT \cdot \bar{g}(\hat{\theta})' \hat{W} \bar{g}(\hat{\theta}) \sim \chi^2(L - K)$$

其中 L=4 个矩,K=2 个参数($\alpha, \sigma$),所以 J ~ χ²(2)

  • 如果 J < 5.99(5% 临界值),说明模型在过度识别约束下无法拒绝
  • 如果 J > 5.99,说明模型存在误设(比如 Euler 方程不成立)

陷阱与注意

  • 弱工具变量:如果工具变量与内生变量相关性弱,估计会不稳定
  • 过多矩条件:矩条件太多可能导致有限样本偏差
  • 序列相关:如果误差存在序列相关,需要用 HAC 标准误

实用技巧:选择矩条件时,问自己"这个变量在经济学上为什么应该与误差无关?"

结果解读

假设真实估计结果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
σ = 1.8
  (0.15)  标准误

含义:
- 如果消费增加1%,边际效用下降1.8%
- 或者,跨期替代弹性 = 1/σ = 0.56
  (一年期实际利率每上升1个百分点,消费增长下降0.56个百分点)

β = 0.97
  (0.02)

含义:
- 一年期贴现因子为0.97
- 年化贴现率 = 1/0.97 - 1 ≈ 3.1%

场景四:资产定价——GMM 估计消费 CAPM

现实背景:你是一个金融经济学家,想检验"高消费波动风险的资产应该有更高回报"。

代理人问题:资产如何定价?什么风险应该被补偿?

经济学理论:消费者是总体资产的持有者。资产定价应该反映其对消费风险的贡献。

数据

  • 资产超额收益 $R^e_{t+1}$ (多个资产)
  • 消费增长 $\Delta c_{t+1}$
  • 无风险利率 $r_f$

理论模型(Hansen-Singleton 1982):

资产定价 Euler 方程:

$$E_t\left[ \beta \left( \frac{C_{t+1}}{C_t} \right)^{-\gamma} (1 + R_{i,t+1}) \right] = 1$$

对于超额收益:

$$E_t\left[ \beta \left( \frac{C_{t+1}}{C_t} \right)^{-\gamma} R^e_{i,t+1} \right] = 0$$

结构参数

参数 名称 经济含义
$\gamma$ 相对风险厌恶系数 消费风险的"价格"——消费不确定性越高,风险溢价越大
$\beta$ 贴现因子 未来的权重——$\beta$越小,越看重现在

矩条件:每个资产给出一个条件,还可以用工具变量扩展:

$$E\left[ Z_t \cdot \left( \beta \left( \frac{C_{t+1}}{C_t} \right)^{-\gamma} R^e_{i,t+1} \right) \right] = 0$$

过程略,这个简单……

这里 GMM 的优势

  • 多个资产可以联合估计
  • 可以检验模型设定(过度识别检验)
  • 不需要假设收益率的具体分布

方法三:模拟矩估计(SMM)

核心思想

类比:你想知道一个工厂的生产参数,但生产过程太复杂,无法直接观察。于是你建了一个"虚拟工厂"(模拟模型),调整虚拟工厂的参数,直到它生产的产品统计特征和真实工厂一样。

数学表达

设真实数据的矩为 $\hat{m}^{data} = \frac{1}{N} \sum_{i=1}^{N} m(y_i^{data})$

模拟数据的矩为 $\hat{m}^{sim}(\theta) = \frac{1}{S} \sum_{s=1}^{S} m(y_s^{sim}(\theta))$

SMM 估计:

$$\hat{\theta}_{SMM} = \arg\min_{\theta} \left[ \hat{m}^{data} - \hat{m}^{sim}(\theta) \right]' W \left[ \hat{m}^{data} - \hat{m}^{sim}(\theta) \right]$$

适用条件(条件反射触发器)

当你遇到以下情况时,想到 SMM:

  1. 似然函数无法解析写出(涉及高维积分、复杂动态等)
  2. 但模型可以模拟(给定参数能生成数据)
  3. 有明确的目标矩可以匹配
  4. 数据量足够支持多次模拟

场景五:劳动力市场搜索匹配模型

现实背景:你想研究失业保险对求职行为的影响。传统简约式回归只能告诉你"失业保险与失业时长正相关",但无法回答"如果把保险金提高 10%,失业时长会增加多少?"

代理人问题:失业工人每期决定是否接受工作 offer。

模型架构(McCall 搜索模型):

状态:工人的失业状态,面临的工资 offer 分布

决策:给定 offer $w$,接受或继续搜索?

数据

  • 失业时长 $T_i$
  • 失业保险替代率 $b_i$(保险金/原工资)
  • 个人特征 $X_i$(教育、年龄、行业)
  • 再就业工资 $w_i$

模型设定(McCall 搜索模型):

失业工人每期可以:

  1. 接受当前工作 offer,获得工资 $w$,永久就业
  2. 拒绝,继续搜索,获得失业保险 $b$

Bellman 方程:

$$V^U = b + \beta E\left[ \max(V^E(w'), V^U) \right]$$

其中 $V^E(w) = \frac{w}{1-\beta}$(假设接受后永久就业)

保留工资(关键变量):使工人在接受和拒绝间无差异的工资

$$w^* = (1-\beta) V^U$$

决策规则:如果 $w \geq w^*$,接受;否则拒绝。

失业时长分布:给定保留工资,失业工人每个月接受 offer 的概率为:

$$p = \Pr(w \geq w^*) = 1 - F(w^*)$$

失业时长的累积分布函数 CDF:

$$G(T) = 1 - (1-p)^T$$

即,失业时长服从几何分布

结构参数

参数 名称 经济含义 如何识别
$\beta$ 贴现因子 工人多看重未来 保留工资随失业保险的变化
$\mu$ 工资分布均值 平均市场工资水平 再就业工资
$\sigma$ 工资分布标差 市场工资不确定性 失业时长的变异

问题:给定参数 $(\beta, b, F(w))$,我们可以计算 $w^*$ 并模拟失业时长。但似然函数涉及复杂的积分,难以直接写出。

数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
劳动力跟踪调查 LFS (2010-2023)
├─ 失业者子样本:失业者的详细信息
│  ├─ 何时开始失业 t_start
│  ├─ 何时找到工作 t_end(如果已就业)
│  ├─ 找到的工资 w
│  └─ 家庭背景:失业保险替代率 b/w_prev
└─ 就业者子样本:目前工作的人
   ├─ 当前工资 w
   ├─ 多久前找到这份工作
   └─ 接受工作前是否失业

关键识别思想

失业保险改革提供了自然实验

背景:2014 年中国调整失业保险(某些地区提高替代率)

识别逻辑

  • 受改革影响地区 A:替代率从 30% → 40%
  • 不受影响地区 B:替代率保持 30%

如果我们观察到

  • 地区 A 的平均失业时长从 2 个月 → 2.5 个月
  • 地区 B 的平均失业时长保持 2 个月

结论:失业保险替代率提高 0.1 个百分点 → 失业时长增加 0.5 个月

这是如何帮助我们识别 $\beta$ 的

在模型中:

$$\frac{\partial w^*}{\partial b} = (1-\beta)$$

如果替代率提高导致保留工资上升幅度大 → $\beta$ 高(未来权重大)

在这个例子中,$b$ 增加 ¥300,$w^*$ 增加多少?

  • 如果$w^*$增加 ¥300 → $\beta$ 接近 1(完全前向看)
  • 如果$w^*$增加 ¥100 → $\beta$ 接近 0.67(更多后向看)

SMM 操作步骤

第一步:选择要匹配的矩

这些矩应该对参数敏感且经济上有意义:

定义 经济意义
$m_1$ 平均失业时长 市场厚度和工资分布
$m_2$ 失业时长的标准差 工资风险和搜索难度
$m_3$ 再就业工资的均值 工资分布参数
$m_4$ 再就业工资的分位数 工资分布形状
$m_5$ 失业保险替代率与失业时长的相关性 $\beta$ 的度量

第二步:从真实数据计算这些矩

$$\hat{m}^{data} = (12.3个月, 5.6, ¥8000, 0.25, 0.72)$$

第三步:给定参数 $\theta = (\beta, \mu_w, \sigma_w)$,模拟模型

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
初始化
β₀ ← 0.95      (年化贴现率5%)
μ₀ ← 8000      (平均月工资¥8000)
σ₀ ← 2000      (工资标差¥2000)

对每个模拟个体 s=1,...,S:
    1. 计算保留工资 w*
    2. 在每个月,从F(w)抽一个offer
    3. 如果 w >= w*,接受,记录失业时长
    4. 否则继续,直到接受或达到最大期数

第四步:从模拟数据计算矩

$$\hat{m}^{sim}(\theta) = (m_1^{sim}, m_2^{sim}, m_3^{sim}, m_4^{sim}, m_5^{sim})$$

第五步:最小化距离

$$\hat{\theta}_{SMM} = \arg\min_{\theta} \left[ \hat{m}^{data} - \hat{m}^{sim}(\theta) \right]' W \left[ \hat{m}^{data} - \hat{m}^{sim}(\theta) \right]$$

第六步:计算标准误

需要考虑模拟误差,标准误公式调整为:

$$\text{Var}(\hat{\theta}) = \frac{1+1/S}{N} (\nabla m' W \nabla m)^{-1} \nabla m' W \Omega W \nabla m (\nabla m' W \nabla m)^{-1}$$

其中 S 是模拟次数,$1/S$ 项是模拟噪声的校正。

第七步:敏感性分析

检查参数的识别强度:

1
2
3
4
5
固定 β = 0.93, 改变 μ 和 σ:
- 当 μ 从7000增到9000时,m_3^sim 如何变化?(应该线性增加)
- 当 σ 从1000增到3000时,m_2^sim 如何变化?(应该增加)

如果某个矩对某个参数不敏感 → 识别问题

陷阱与注意

  1. 模拟次数不够:S 太小会引入过多模拟误差。经验法则:S ≥ 10N
  2. 目标函数不光滑:模拟引入的随机性可能导致优化困难
    • 解决:固定随机数种子、使用平滑模拟器
  3. 矩的选择
    • 太少:识别不充分
    • 太多:计算负担重,且可能过拟合模拟噪声
  4. 矩对参数的敏感性:如果某个矩对所有参数都不敏感,它只会增加噪声

实用技巧:做"敏感性图"——固定其他参数,变化一个参数,看每个矩如何变化。这帮助你理解识别来源。


场景六:企业动态——进入、退出与投资(重点

现实背景:产业政策制定者想知道:如果提高进入壁垒(如加大环保要求),对行业结构有什么长期影响?

代理人问题:一个企业每期决定投资多少,目标是最大化企业价值。

状态变量

  • 企业的资本存量 $K_t$
  • 企业的生产率 $\phi_t$(随机波动)

决策变量:投资 $I_t$

值函数

$$V(K_t, \phi_t) = \max_{I_t} \left\{ \pi(K_t, \phi_t) - I_t - C(I_t, K_t) + \beta E[V(K_{t+1}, \phi_{t+1})] \right\}$$

其中:

  • $\pi(K_t, \phi_t) = \phi_t K_t^\alpha - w L_t$ 是当期利润(生产函数减工资)
  • $C(I_t, K_t) = \frac{\psi}{2}(I_t/K_t)^2 K_t$ 是调整成本
  • $K_{t+1} = (1-\delta) K_t + I_t$ 是资本演化

关键:调整成本参数 $\psi$

  • $\psi = 0$:投资完全灵活(Jorgenson 模型)
  • $\psi > 0$:投资成本(企业不能立刻改变资本)
  • $\psi$ 越大,企业的投资行为越缓慢、越平滑

数据

  • 企业面板:资本 $K_{it}$、产出 $Y_{it}$、投资 $I_{it}$
  • 进入退出记录
  • 行业层面:企业数量、集中度

模型设定(Hopenhayn 型动态竞争模型):

现有企业每期:

  1. 观察生产率冲击 $\phi_{it}$
  2. 决定投资 $I_{it}$,形成下期资本 $K_{i,t+1}$
  3. 决定是否退出(如果价值 < 退出成本)

潜在进入者:

  • 支付进入成本 $c_e$,抽取初始生产率
  • 比较进入价值与成本

均衡条件:进入利润为零,市场出清。

结构参数

参数 名称 经济含义 重要性
$\psi$ 调整成本参数 企业改变生产规模有多难 最重要:对投资平滑性关键
$\alpha$ 资本的产出弹性 资本每增加 1%,产出增加多少% 识别资本的生产力
$\delta$ 资本折旧率 资本每年贬值多少% 识别企业更新需求
$\rho$ 生产率过程的自相关 生产率波动的持久性 识别不确定性
$\sigma_\phi$ 生产率冲击的标差 生产率冲击有多大 识别不确定性

外部设定

某些参数来自外部数据或假设

参数 来源
$\delta$ 0.05 国民经济核算年报
$\beta$ 0.95 标准假设(无风险利率~5%)
工资 $w$ 数据 直接观察

数据来源

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
工业企业数据库 (2003-2013)
├─ 企业面板数据:200万家企业
│  ├─ 资本存量 K_t(或有形资产)
│  ├─ 投资 I_t(固定资产增加额)
│  ├─ 产出 Y_t(营业收入)
│  ├─ 劳动力 L_t(员工数)
│  ├─ 行业 ind
│  └─ 年份 t
└─ 构造变量:
   ├─ 生产率 φ_t = Y_t / (K_t^α L_t^(1-α))(使用外部α)
   └─ 投资率 i_t = I_t / K_t

识别策略

参数 识别来源 变异
$\alpha$ 生产函数估计(OLS 或 GMM) 不同企业的产出/资本比率
$\delta$ 资本衡量(资本存量普查) 折旧官方数据
$\rho, \sigma_\phi$ 生产率的时间序列性质 同一企业多年的生产率变化
$\psi$ 投资对生产率的反应性 关键:当 φ 上升时,投资增加多少?

最关键的识别:为什么 $\psi$ 能被识别

在模型中,最优投资遵循"加速器"原理:

$$I_t = f(K_t, \phi_t; \psi)$$

如果 $\psi$ 大,这个函数很平缓(投资变化缓慢);如果 $\psi$ 小,函数很陡峭(投资快速反应)。

从数据看投资与生产率的协方差:

  • 在高 $\psi$ 经济中,$\text{Cov}(\Delta I_t, \Delta \phi_t)$ 低(投资平滑)
  • 在低 $\psi$ 经济中,$\text{Cov}(\Delta I_t, \Delta \phi_t)$ 高(投资灵活)

为什么 SMM

  • 涉及企业动态决策、进入退出、市场均衡
  • 似然函数几乎不可能写出
  • 但给定参数,可以模拟整个行业的演化

识别过程

第一步:定义要匹配的矩

1
2
3
4
5
6
7
8
从真实数据 (工业企业库) 计算:

m_1^data = E[投资率 i_t] = E[I_t / K_t]
m_2^data = SD[投资率]
m_3^data = Corr(投资率, 生产率)
m_4^data = Autocov[生产率, lag=1]
m_5^data = 企业生存概率
m_6^data = 企业规模分布的基尼系数(集中度)

这些矩对参数的敏感性

对 $\psi$ 的敏感性 对 $\rho$ 的敏感性 对 $\sigma_\phi$ 的敏感性
$m_1$ (平均投资率)
$m_2$ (投资波动)
$m_3$ (投资-生产率相关)
$m_4$ (生产率自相关)

关键:$m_2$ 和 $m_3$ 主要驱动 $\psi$ 的识别

匹配的矩

  • 企业规模分布(20 分位数、50 分位数、80 分位数)
  • 年进入率、退出率
  • 资本投资率的均值和方差
  • 企业年龄与规模的关系

第二步:模拟企业动态

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
初始化参数:β=0.95, α=0.3, δ=0.05, ψ, ρ, σ_φ

对 s = 1 to S 个企业(模拟):
    初始化:K_s,0 = 1, φ_s,0 ~ N(0, σ_φ²/(1-ρ²))

    for t = 1 to T:
        计算最优投资 I_s,t(通过求解一阶条件):
            μ·C'(I_s,t, K_s,t) = 1 - β·E[V_K(K_{s,t+1}, φ_{s,t+1})]
            (使用包络定理计算 V_K)

        更新:
            K_s,t+1 = (1-δ)K_s,t + I_s,t
            φ_s,t+1 = ρ·φ_s,t + ε_s,t+1, ε ~ N(0, σ_φ²)

        记录:投资率 i_s,t = I_s,t / K_s,t

第三步:计算模拟矩

1
2
3
4
m_1^sim = (1/ST) Σ_s Σ_t i_s,t
m_2^sim = SD of simulated i_s,t across s,t
m_3^sim = Corr(i_s,t, φ_s,t)
...

第四步:目标函数

$$\hat{\theta} = \arg\min_{(\psi, \rho, \sigma_\phi)} ||m^{data} - m^{sim}(\theta)||_W$$

方法四:间接推断(Indirect Inference)(重点

核心思想

类比:你想估计一个人的性格参数(内向/外向程度),但没法直接测量。于是你设计了一个简单的"社交测试"(辅助模型):记录他在 party 上和多少人说话。

  1. 用真实数据跑一遍这个测试,得到结果 $\hat{\beta}^{data}$
  2. 模拟不同性格参数的人去 party,跑同样的测试,得到 $\hat{\beta}^{sim}(\theta)$
  3. 找到让 $\hat{\beta}^{sim}(\theta) = \hat{\beta}^{data}$ 的性格参数

数学表达

设辅助模型为 $A(y, \beta)$,真实数据得到 $\hat{\beta}^{data}$,模拟数据得到 $\hat{\beta}^{sim}(\theta)$:

$$\hat{\theta}_{II} = \arg\min_{\theta} \left[ \hat{\beta}^{data} - \hat{\beta}^{sim}(\theta) \right]' W \left[ \hat{\beta}^{data} - \hat{\beta}^{sim}(\theta) \right]$$

与 SMM 的区别

SMM 间接推断
匹配什么 数据的矩(均值、方差等) 辅助模型的参数
辅助模型 不需要 需要选择
矩的选择 研究者主观选择 通过辅助模型隐含选择
优势 直观、矩有经济含义 辅助模型可以捕捉复杂特征

适用条件(条件反射触发器)

当你遇到以下情况时,想到间接推断:

  1. 结构模型复杂,但存在自然的简化描述方式
  2. 辅助模型估计快速稳定
  3. 辅助模型能捕捉数据的关键特征
  4. 想让估计对模型某些设定不敏感

场景七:宏观 DSGE 模型估计

现实背景:央行想用一个动态随机一般均衡(DSGE)模型来分析货币政策效果。

三方程新凯恩斯(NK)DSGE 模型

IS 曲线(产出方程)

$$\tilde{y}_t = E_t[\tilde{y}_{t+1}] - \sigma^{-1}(i_t - E_t[\pi_{t+1}] - r^n_t) + u_t^y$$

菲利普斯曲线(通胀方程)

$$\pi_t = \beta E_t[\pi_{t+1}] + \kappa \tilde{y}_t + u_t^\pi$$

泰勒规则(政策方程)

$$i_t = \rho_i i_{t-1} + (1-\rho_i)[\phi_\pi \pi_t + \phi_y \tilde{y}_t] + u_t^i$$

其中:

  • $\tilde{y}_t$ = 产出缺口(产出与潜在产出之差)
  • $\pi_t$ = 通胀率
  • $i_t$ = 名义利率
  • $r^n_t$ = 自然利率(对数形式的冲击)
  • $u_t$ = 各类冲击(需求、供给、政策)

问题

  • DSGE 模型有几十个方程、几十个参数
  • 直接 MLE 需要求解状态空间形式,计算 Kalman 滤波
  • 模型可能误设,直接 MLE 会把误设"硬拟合"到数据

结构参数

参数 名称 经济含义 范围
$\sigma$ 跨期替代弹性 实际利率上升,家庭将消费延后多少 0.5-3
$\kappa$ 菲利普斯曲线斜率 产出每增加 1%,通胀增加多少 0.01-0.05
$\beta$ 贴现因子 家庭看重未来的程度 0.95-0.99
$\rho_i$ 利率平滑 央行的利率决策有多"粘性" 0.7-0.95
$\phi_\pi$ 通胀反应 通胀每升高 1%,央行加息多少 >1(泰勒原则)
$\phi_y$ 产出反应 产出缺口每增加 1%,央行加息多少 0.1-0.5

间接推断思路

辅助模型:向量自回归 VAR(p)

$$Y_t = A_1 Y_{t-1} + ... + A_p Y_{t-p} + \varepsilon_t$$

其中 $Y_t$ 包括产出增长、通胀、利率等宏观变量。

步骤

  1. 选择辅助模型 真实数据 → 估计 VAR → 得到 $\hat{A}^{data}$(脉冲响应函数)采用向量自回归(VAR):

    $$Y_t = A_1 Y_{t-1} + A_2 Y_{t-2} + \varepsilon_t$$

    其中 $Y_t = (\tilde{y}_t, \pi_t, i_t)'$,假设 VAR(2)。用 OLS 估计 $\hat{A}_1^{data}, \hat{A}_2^{data}$,计算脉冲响应函数(IRF)。脉冲响应函数:如果通胀冲击+1%,接下来 4 个季度产出如何变化?

    • $\text{IRF}_{y,\pi}(0) = 0$(当期不反应,因为有粘性)
    • $\text{IRF}_{y,\pi}(1) = 0.3\%$(1 期后产出增加 0.3%)
    • $\text{IRF}_{y,\pi}(8) = -0.2\%$(8 期后产出转为负)
  2. DSGE 模型 → 给定结构参数 $\theta$,求解模型 → 模拟数据 → 估计 VAR → 得到 $\hat{A}^{sim}(\theta)$

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    1. 用perturbation方法求解模型
       → 得到状态空间:Y_t = f(Y_{t-1}, ε_t; θ)
    
    2. 模拟T个时期的数据
       Y_t^sim(θ) for t=1,...,T
    
    3. 对模拟数据估计相同的VAR
       → 得到 Â_1^sim(θ), Â_2^sim(θ)
    
    4. 计算模拟的脉冲响应函数
       IRF^sim(θ)
    
  3. 匹配:找 $\theta$ 使得 $\hat{A}^{sim}(\theta) \approx \hat{A}^{data}$

为什么用 VAR 作为辅助模型

  • VAR 估计简单快速
  • VAR 的脉冲响应函数是政策分析的核心
  • 即使 DSGE 有误设,我们仍能匹配 VAR 揭示的动态特征

“有限信息"视角:间接推断只要求模型能复制辅助模型捕捉的特征,而非完美拟合所有数据。


场景八:离散选择动态规划——如何简化复杂问题

现实背景:你研究女性的劳动参与决策,这是一个动态问题(今天工作会影响未来人力资本)。

结构模型:复杂的动态规划问题

辅助模型:简化的 probit/logit 模型

$$P(work_t = 1) = \Phi(\gamma_0 + \gamma_1 \cdot child + \gamma_2 \cdot wage + \gamma_3 \cdot work_{t-1})$$

匹配的参数

  • $\gamma_1$:孩子对劳动参与的影响
  • $\gamma_3$:状态依赖(上期工作对本期的影响)

好处:即使结构模型复杂,辅助模型仍能快速估计。


方法五:CCP 两步法(条件选择概率法)

核心思想

类比:想象你在观察一个棋手下棋。第一步,你统计他在各种局面下的实际走法概率(条件选择概率)。第二步,你用这些概率反推他的评估函数——他认为哪些局面更有价值。

核心洞见(Hotz-Miller 反演):在离散选择动态规划中,选择概率和价值函数有一一对应关系:

$$V_j(s) - V_k(s) = \ln P_j(s) - \ln P_k(s) + \text{常数}$$

(假设误差服从极值分布)

这意味着:如果我们知道选择概率,就知道了价值函数的差异,不需要解完整的动态规划!

适用条件(条件反射触发器)

当你遇到以下情况时,想到 CCP 两步法:

  1. 离散选择动态规划模型
  2. 选择集有限且可观测
  3. 状态空间可以离散化或较小
  4. 有足够数据估计条件选择概率
  5. 标准嵌套固定点方法太慢

场景九:公交车引擎更换决策(Rust 1987 的经典例子)

现实背景:公交公司的经理要决定何时更换老旧引擎。更换太早浪费钱,太晚会抛锚。

状态变量:引擎累计里程 $x_t$

选择:$d_t \in \{0: 继续用, 1: 更换\}$

即时收益

  • 继续用:$u(x_t, 0) = -c(x_t)$(维护成本,随里程增加)
  • 更换:$u(x_t, 1) = -RC + \varepsilon$(固定更换成本)

状态转移

  • 如果不更换:$x_{t+1} = x_t + \Delta x$(里程增加)
  • 如果更换:$x_{t+1} = 0$(里程归零)

Bellman 方程

$$V(x, \varepsilon) = \max_{d \in \{0,1\}} \left\{ u(x, d, \varepsilon_d) + \beta E[V(x', \varepsilon')] \right\}$$

传统方法(嵌套固定点)的问题

  1. 每次评估似然,都要解一遍动态规划
  2. 如果状态空间大,计算量爆炸

CCP 两步法操作

第一步:非参数估计条件选择概率

对每个里程区间 $x$,计算更换的经验概率:

$$\hat{P}_1(x) = \frac{\text{在里程} x \text{选择更换的次数}}{\text{在里程} x \text{的总观测次数}}$$

第二步:利用 Hotz-Miller 反演估计结构参数

选择概率与选择特定价值函数的关系:

$$v_d(x) = u(x, d) + \beta E[V(x')]$$

利用极值分布的性质:

$$V(x) = E_\varepsilon[\max_d\{v_d(x) + \varepsilon_d\}] = \ln \sum_d \exp(v_d(x)) + \gamma$$

其中 $\gamma$ 是 Euler 常数。

关键公式(Hotz-Miller 引理)

$$v_1(x) - v_0(x) = \ln P_1(x) - \ln P_0(x)$$

因此:

$$u(x, 1) - u(x, 0) + \beta E[V(0) - V(x')] = \ln \frac{\hat{P}_1(x)}{\hat{P}_0(x)}$$

代入 $u$ 的函数形式,可以直接估计结构参数 $(\theta, RC)$。

实践中的技巧

  • 平滑选择概率:如果某些状态观测很少,$\hat{P}$ 会很不稳定。可以用参数模型(如 logit)平滑。
  • 前向模拟:用估计的选择概率模拟未来路径,计算延续价值。
  • 迭代 CCP:用估计的参数更新选择概率,再重新估计(Aguirregabiria & Mira)。

陷阱

  • 第一步概率估计偏差会传导到第二步
  • 状态空间太大时,仍然有计算困难

场景十:动态产业组织——企业进入退出

现实背景:你研究电商平台上商家的进入和退出决策。

状态变量

  • 企业自身特征:经验 $e_{it}$、规模 $s_{it}$
  • 市场状态:竞争对手数量 $n_t$、总需求 $D_t$

选择:$d_{it} \in \{退出, 留下\}$(现有企业);$a_t \in \{进入, 不进入\}$(潜在进入者)

CCP 方法优势

  • 市场上可能有上百家企业同时决策
  • 传统方法需要计算所有可能的企业组合——维数诅咒
  • CCP 方法只需估计"一般企业"的选择概率

具体应用(Bajari, Benkard, Levin 2007):

  1. 估计单个企业的选择概率 $\hat{P}(d|s)$
  2. 用这些概率模拟行业演化
  3. 匹配模拟与真实数据的动态特征

方法六:贝叶斯估计

核心思想

类比:你是一个医生,要诊断病人是否得了某种罕见病。

  • 先验:人群中只有 0.1%的人得这种病($P(病) = 0.001$)
  • 数据:病人检测呈阳性(假设检测准确率 90%)
  • 后验:综合先验和数据,更新对"病人真的得病"的信念
$$P(病|阳性) = \frac{P(阳性|病) \cdot P(病)}{P(阳性)} = \frac{0.9 \times 0.001}{0.9 \times 0.001 + 0.1 \times 0.999} \approx 0.009$$

注意:即使检测阳性,得病概率也只有 0.9%!这就是贝叶斯思维的力量。

数学表达(贝叶斯定理):

$$p(\theta | Y) = \frac{p(Y | \theta) \cdot p(\theta)}{p(Y)} \propto p(Y | \theta) \cdot p(\theta)$$
  • $p(\theta)$:先验分布——估计前对参数的信念
  • $p(Y|\theta)$:似然函数——给定参数,数据出现的概率
  • $p(\theta|Y)$:后验分布——看到数据后,对参数的更新信念

适用条件(条件反射触发器)

当你遇到以下情况时,想到贝叶斯:

  1. 有合理的先验信息(来自前人研究、专家意见、理论约束)
  2. 样本量较小,纯粹依赖数据不稳定
  3. 想量化参数的不确定性(不只要点估计)
  4. 模型比较和选择是重要目标
  5. 参数有自然约束(如必须为正、在某区间内)

场景十一:DSGE 模型的贝叶斯估计

现实背景:你要估计一个新凯恩斯 DSGE 模型来分析货币政策。

模型(简化版三方程 NK 模型):

IS 曲线:

$$\tilde{y}_t = E_t[\tilde{y}_{t+1}] - \sigma^{-1}(i_t - E_t[\pi_{t+1}] - r^n) + \varepsilon_t^y$$

菲利普斯曲线:

$$\pi_t = \beta E_t[\pi_{t+1}] + \kappa \tilde{y}_t + \varepsilon_t^\pi$$

泰勒规则:

$$i_t = \rho_i i_{t-1} + (1-\rho_i)[\phi_\pi \pi_t + \phi_y \tilde{y}_t] + \varepsilon_t^i$$

待估计参数:$\theta = (\beta, \sigma, \kappa, \rho_i, \phi_\pi, \phi_y, ...)$

为什么用贝叶斯

  1. 参数多:典型 DSGE 有 20-50 个参数,纯 MLE 可能不稳定
  2. 有先验知识:$\beta$ 应该在 0.99 左右,$\phi_\pi > 1$(泰勒原则)
  3. 政策分析需要不确定性量化:政策建议应该考虑参数不确定性

先验设定示例

参数 先验分布 理由
$\beta$ Beta(0.99, 0.02) 贴现因子接近 1
$\sigma$ Gamma(1.5, 0.5) 跨期替代弹性为正
$\phi_\pi$ Normal(1.5, 0.25) 泰勒原则建议>1

操作步骤

第一步:状态空间表示

将 DSGE 模型写成状态空间形式:

$$s_t = A(\theta) s_{t-1} + B(\theta) \varepsilon_t$$

$$y_t = C(\theta) s_t + u_t$$

第二步:计算似然(卡尔曼滤波)

给定参数 $\theta$ 和数据 $\{y_t\}$,用卡尔曼滤波计算似然 $p(Y|\theta)$。

第三步:后验抽样(MCMC)

使用 Metropolis-Hastings 算法或其变体:

1
2
3
4
5
6
7
初始化:θ⁰
对于 m = 1, 2, ..., M:
    1. 从提议分布抽取候选值 θ* ~ q(θ*|θᵐ⁻¹)
    2. 计算接受概率
       α = min{1, [p(Y|θ*)p(θ*)] / [p(Y|θᵐ⁻¹)p(θᵐ⁻¹)] × q(θᵐ⁻¹|θ*)/q(θ*|θᵐ⁻¹)}
    3. 以概率 α 接受:θᵐ = θ*
       否则:θᵐ = θᵐ⁻¹

第四步:后验分析

  • 后验均值、中位数作为点估计
  • 后验分位数作为可信区间
  • 参数的联合后验用于分析参数间关系

模型比较:贝叶斯方法可以自然地比较模型

$$\text{贝叶斯因子} = \frac{p(Y | M_1)}{p(Y | M_2)} = \frac{\int p(Y|\theta_1, M_1) p(\theta_1|M_1) d\theta_1}{\int p(Y|\theta_2, M_2) p(\theta_2|M_2) d\theta_2}$$

这自动实现了"奥卡姆剃刀”——在拟合和复杂度间权衡。


场景十二:面板数据中的个体异质性

现实背景:你研究企业创新投入,认为不同企业有不同的"创新偏好",但这个偏好不可直接观测。

分层模型

$$R\&D_{it} = \alpha_i + \beta X_{it} + \varepsilon_{it}$$

$$\alpha_i \sim N(\mu_\alpha, \sigma_\alpha^2)$$

贝叶斯方法的优势

  1. 自然处理随机效应
  2. 可以估计 $\sigma_\alpha$(企业间异质性程度)
  3. 可以"借力"——数据少的企业借助整体信息

后验预测:对于观测少的企业,其 $\alpha_i$ 的后验会向总体均值 $\mu_\alpha$ “收缩”——这是贝叶斯估计的自动正则化。


第三部分:选择方法的"决策树"

现在让我们把所有方法整合成一个决策流程图:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
开始:我有一个结构模型,需要估计参数
【问题1】能否写出解析的似然函数?
    ├──→ 是 ──→ 【问题2】样本量是否足够大?
    │               │
    │               ├──→ 是 ──→ 使用 MLE ✓
    │               │
    │               └──→ 否,且有先验信息 ──→ 使用贝叶斯 ✓
    └──→ 否 ──→ 【问题3】模型是否可以模拟?
                    ├──→ 否 ──→ 需要简化模型
                    └──→ 是 ──→ 【问题4】是否是离散选择动态规划?
                                    ├──→ 是 ──→ 【问题5】状态空间大小
                                    │               │
                                    │               ├──→ 较小 ──→ CCP两步法 ✓
                                    │               │
                                    │               └──→ 较大 ──→ 考虑近似方法
                                    └──→ 否 ──→ 【问题6】有自然的矩条件吗?
                                                    ├──→ 是,来自Euler方程等 ──→ GMM ✓
                                                    └──→ 否 ──→ 【问题7】有自然的辅助模型吗?
                                                                    ├──→ 是 ──→ 间接推断 ✓
                                                                    └──→ 否 ──→ SMM ✓

第四部分:建立"条件反射"的速记口诀

为了帮你在面对具体问题时快速反应,这里提供一套"条件反射"口诀:

MLE 口诀

“分布全知道,似然能写好”

触发条件:

  • 看到 Probit/Logit/Tobit 等经典模型
  • 看到"假设误差服从 XX 分布"
  • 数据相对干净,模型相对简单

GMM 口诀

“分布不确定,矩条件撑门面”

触发条件:

  • 看到 Euler 方程、资产定价方程、正交条件
  • 看到工具变量、滞后变量作为排除限制
  • 担心分布误设,想要稳健估计

SMM 口诀

“似然写不出,模拟来帮助”

触发条件:

  • 模型有复杂的积分、期望
  • 模型有异质性代理人、不完全市场
  • 可以模拟但无法解析求解

间接推断口诀

“结构太复杂,简约来搭桥”

触发条件:

  • 有自然的降维工具(如 VAR、回归)
  • 关心的是可以被简化模型捕捉的特征
  • 想对模型误设有一定稳健性

CCP 口诀

“动态离散选,概率先估完”

触发条件:

  • 动态离散选择问题
  • 状态可观测、选择集有限
  • 嵌套固定点方法太慢

贝叶斯口诀

“先验有话说,后验来融合”

触发条件:

  • 有明确的先验信息
  • 样本较小
  • 需要完整的后验分布
  • 要做模型比较

第五部分:常见陷阱与诊断方法

陷阱一:识别问题

症状:估计结果对初始值敏感,标准误巨大,参数怪异

诊断

  • 画参数的 profile likelihood/目标函数图
  • 做敏感性分析
  • 检查 Hessian 矩阵是否接近奇异

解决

  • 增加数据变异
  • 固定部分参数
  • 添加约束或先验

陷阱二:计算问题

症状:优化不收敛,不同算法给出不同结果

诊断

  • 检查目标函数是否光滑
  • 打印迭代过程
  • 尝试多个起始点

解决

  • 对 SMM:固定随机种子,增加模拟次数
  • 使用更稳健的优化算法
  • 重参数化(如估计 log(σ)而非 σ)

陷阱三:误设问题

症状:拟合看起来好,但反事实预测不合理

诊断

  • 过度识别检验(GMM 的 J 检验)
  • 样本外验证
  • 检查模型隐含的其他矩

解决

  • 放松假设
  • 使用更稳健的方法(如间接推断)
  • 明确报告模型局限

第六部分:一个完整示例

让我们用一个完整的例子把所有内容串起来:

研究问题:大学生专业选择

现实意义:教育部想知道如何通过信息政策影响学生选专业

数据

  • 高考成绩、家庭背景、高中所在地
  • 选择的专业(理工/商科/人文)
  • 毕业后收入(只观察已毕业的)

模型:学生最大化期望效用

$$\max_j E[U_j] = E[wage_j | X] - \alpha \cdot (difficulty_j - ability_i) + \varepsilon_j$$

挑战

  1. 收入只对毕业生观察,存在选择偏差
  2. 学生的"能力"不可直接观测
  3. 专业"难度"与"收益"可能相关

选择方法的思考过程

方法 可行性 问题
MLE 需要假设 $\varepsilon$ 分布 可以用 Nested Logit
GMM 需要工具变量 可用高中所在地作 IV
SMM 需要模拟能力分布 可行但需要更多假设
CCP 不是动态问题 不适用
贝叶斯 可以放先验在能力分布上 适合处理异质性

最终选择:MLE + 控制函数法处理选择偏差

这只是一个思考框架,实际选择取决于具体细节和研究者偏好。


第七部分:进阶阅读路线图

如果你想深入学习,这是推荐的路线:

入门

  • Kenneth Train, Discrete Choice Methods with Simulation
  • Cameron & Trivedi, Microeconometrics

GMM

  • Hansen (1982), Econometrica
  • Hayashi, Econometrics, Chapter 3

SMM/间接推断

  • McFadden (1989), Econometrica
  • Gourieroux, Monfort & Renault (1993)

CCP

  • Hotz & Miller (1993), Review of Economic Studies
  • Aguirregabiria & Mira (2010), Journal of Econometrics (综述)

贝叶斯

  • An & Schorfheide (2007), Econometric Reviews(DSGE 应用)
  • Geweke, Contemporary Bayesian Econometrics

结语:从"知道"到"会用"的最后一步

最重要的建议:动手做一遍

选择一个你熟悉的经济问题,先用最简单的方法(如 MLE)实现一遍,再尝试用另一种方法(如 SMM)重新做。比较结果,理解差异。

记住:没有"最好的"方法,只有"最适合的"方法。好的结构估计者,是能够根据问题的特点、数据的局限、计算的可行性,灵活选择和组合方法的人。

现在,你已经有了完整的地图。剩下的,就是开始你的探索之旅了。

祝研究顺利!

找矩的"直觉和技巧"

6.1 常见的"矩的来源"

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
【来源1:数据性质】
数据告诉你的是什么?

例1:选择数据(y=0或1)
     →自然的矩:E[y - P(θ)] = 0
     或E[X(y - P(θ))] = 0

例2:市场份额数据
     →自然的矩:E[s - s_predicted(θ)] = 0
     或E[Z(δ - X'θ)] = 0

例3:连续数据(如销售额)
     →自然的矩:E[Y - f(X,θ)] = 0
     或E[X(Y - f(X,θ))] = 0

【来源2:经济理论】
理论告诉你什么应该为零?

例1:企业利润最大化
     →一阶条件:∂π/∂P = 0
     →矩:E[∂π/∂P] = 0

例2:消费者效用最大化
     →预算约束:P·Q ≤ 收入
     →拉格朗日乘数:E[λ(∂π/∂P)] = 0

例3:均衡条件
     →供给=需求
     →矩:E[供给 - 需求] = 0

【来源3:假设】
你假设了什么关于误差和变量的关系?

常见假设:
  ① 外生性:E[X·ε] = 0
  ② 工具变量:E[Z·ε] = 0
  ③ 正交性:E[特征·ε] = 0
  ④ 平衡:E[选择] = E[概率]
  ⑤ 无偏:E[ε] = 0
  ⑥ 不相关:E[ε·ε'] = σ²I

每个假设都对应一个矩条件!

6.2 “矩很多"但"参数很少"怎么办?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
情况:你有5个矩条件但只有2个参数

GMM的解决方案:
最小化 m'W m(加权矩的范数)

步骤:
1. 计算所有矩:m₁, m₂, m₃, m₄, m₅
2. 选择权重矩阵W(通常是协方差的逆)
3. 求参数最小化 [m₁, m₂, m₃, m₄, m₅]' W [m₁, m₂, m₃, m₄, m₅]
4. 做过度识别检验(Sargan)检查W是否适当

优点:
✓ 用了所有信息
✓ 参数估计更精确
✓ 可以检验假设(Sargan检验)

6.3 “矩很少"但"参数很多"怎么办?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
情况:你有1个矩条件但有3个参数
      (欠识别)

问题:无法估计所有参数

解决方案:
1. 寻找额外的矩条件
   - 是否遗漏了什么数据?
   - 是否遗漏了什么模型约束?

2. 加入先验信息
   - 贝叶斯方法:加入参数的先验分布
   - 校准:固定某些参数,只估计其他的

3. 简化模型
   - 删除参数
   - 加入参数约束

技巧:数据提示你是否足够识别
  如果不同样本下估计的参数差异很大
  →参数可能欠识别

6.4 如何检查你找的矩条件是否正确?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
检查清单:

□ 1. 基本检查
  在真实参数处,矩是否为0?
  m(θ_true) ≈ 0

  代码:
  m_check = moment_condition(theta_true, data)
  print(m_check)  # 应该都<0.01

□ 2. 梯度检查
  矩对参数的导数是否正确?
  数值导数 ≈ 解析导数

  代码:
  dm_numerical = (moment(theta+eps) - moment(theta-eps)) / (2*eps)
  dm_analytical = jacobian(moment)(theta)
  assert np.allclose(dm_numerical, dm_analytical)

□ 3. 估计收敛检查
  用模拟数据估计,能恢复真实参数吗?

  代码:
  data_sim = generate_data(theta_true, 10000)
  theta_est = estimate(data_sim)
  assert np.allclose(theta_est, theta_true, rtol=0.05)

□ 4. 尺寸合理性检查
  矩条件的量纲是否一致?
  例:E[X·ε] 的单位应该是 X和ε的乘积单位

□ 5. 经济学直觉检查
  矩的正负符号是否符合经济学预期?
  例:折扣增加,销售应该增加
      → 如果矩显示相反,有问题

□ 6. 敏感性检查
  改变数据,矩条件是否稳定?

  代码:
  m_full = moment_condition(theta, full_data)
  m_subsample = moment_condition(theta, subsample_data)
  ratio = m_subsample / m_full
  assert 0.8 < ratio < 1.2  # 不应该差太多

实战速查表

这是你最后应该反复看的表格:

7.1 按问题类型的矩条件速查表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
╔══════════════════════╦════════════════════════════╦═══════════════════╗
║ 问题类型             ║ 矩条件                     ║ 关键假设          ║
╠══════════════════════╬════════════════════════════╬═══════════════════╣
║ 线性回归             ║ m(β)=E[X(Y-X'β)]           ║ E[Xε]=0           ║
║ (外生X)              ║                            ║                   ║
╠══════════════════════╬════════════════════════════╬═══════════════════╣
║ IV估计               ║ m(β)=E[Z(Y-X'β)]           ║ E[Zε]=0           ║
║ (内生X)              ║                            ║ Z与X相关          ║
╠══════════════════════╬════════════════════════════╬═══════════════════╣
║ Logit选择            ║ m(β)=E[X(y-P(β))]          ║ 似然正确指定      ║
║ (个体选择)           ║                            ║                   ║
╠══════════════════════╬════════════════════════════╬═══════════════════╣
║ BLP市场份额          ║ m(β)=E[Z(δ(s)-X'β)]        ║ Z与ξ无关         ║
║ (聚合数据)           ║                            ║ δ反演正确        ║
╠══════════════════════╬════════════════════════════╬═══════════════════╣
║ 固定效应面板         ║ m(β)=E[ΔX(ΔY-ΔX'β)]        ║ E[ΔXΔε]=0        ║
║ (无动态)             ║                            ║                   ║
╠══════════════════════╬════════════════════════════╬═══════════════════╣
║ 动态面板(AB)         ║ m(β)=E[Y_{t-2}ΔY-...]      ║ E[Y_{t-2}Δε]=0    ║
║ (有滞后项)           ║                            ║ 无序列相关        ║
╠══════════════════════╬════════════════════════════╬═══════════════════╣
║ 工具变量选择         ║ m(β)=E[Z'(δ(s)-X'β)]       ║ Z外生             ║
║ (处理内生性)         ║                            ║ Z与X强相关        ║
╠══════════════════════╬════════════════════════════╬═══════════════════╣
║ 分位数回归           ║ m(β)=E[X·1{y<X'β}·sign]   ║ 分位数定义        ║
║                      ║                            ║ 成立              ║
╠══════════════════════╬════════════════════════════╬═══════════════════╣
║ 样本选择修正         ║ m(β)=E[X(Y-X'β-ρλ)]        ║ 选择机制模型      ║
║ (Heckman)            ║                            ║ 正确              ║
╚══════════════════════╩════════════════════════════╩═══════════════════╝

7.2 按数据维度的矩条件速查表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
┌─────────────────┬──────────────────────────┐
│ 数据结构        │ 推荐矩条件               │
├─────────────────┼──────────────────────────┤
│ 截面(N)      │ 标准:E[X·ε]=0           │
│ 单个Y,多个X    │ IV:E[Z·ε]=0             │
│                 │ 非线性:E[X(Y-f)]=0      │
├─────────────────┼──────────────────────────┤
│ 面板(N×T)     │ FE差分:E[ΔX·Δε]=0       │
│ 同一单位多期    │ AB动态:E[Y_lag·Δε]=0    │
│                 │ 随机效应:E[X(Y-f)]=0    │
├─────────────────┼──────────────────────────┤
│ 市场(J×T)     │ BLP:E[Z(δ-X'β)]=0       │
│ 产品×时间       │ 简单矩:E[s-s_pred]=0    │
│ 聚合份额        │                          │
├─────────────────┼──────────────────────────┤
│ 分层(clusters)│ 加聚类标准误              │
│                 │ 矩条件本身不变            │
│                 │ 但Var()需要调整           │
├─────────────────┼──────────────────────────┤
│ 不平衡面板      │ 用不缺失的观测           │
│ (某些缺失)      │ 矩条件不变                │
│                 │ 但样本数(n)动态变化      │
└─────────────────┴──────────────────────────┘

7.3 按参数类型的矩条件速查表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
┌──────────────────┬──────────────────────────┬─────────┐
│ 参数类型         │ 典型矩条件               │ 难度    │
├──────────────────┼──────────────────────────┼─────────┤
│ 线性系数(β)      │ E[X(Y-X'β)]=0            │ ★☆☆☆☆ │
│ 如:价格、收入   │                          │         │
├──────────────────┼──────────────────────────┼─────────┤
│ 非线性(β)        │ E[∂logL/∂β]=0            │ ★★☆☆☆ │
│ 如:Logit系数    │ 或 E[X(y-P(β))]=0        │         │
├──────────────────┼──────────────────────────┼─────────┤
│ 方差/异质性(σ)   │ E[X²·ε²-σ²]=0            │ ★★★☆☆ │
│ 消费者异质性     │ 或用协方差矩估计          │         │
├──────────────────┼──────────────────────────┼─────────┤
│ 固定效应(α)      │ α可以直接移除(FE)         │ ★☆☆☆☆ │
│                  │ 不需要单独估计            │         │
├──────────────────┼──────────────────────────┼─────────┤
│ 质量参数(ξ)      │ ξ=δ(s)-X'β (直接反演)   │ ★★☆☆☆ │
│ BLP不可观测特征  │ 不需要矩条件              │         │
├──────────────────┼──────────────────────────┼─────────┤
│ 成本参数(MC)     │ MC=P-s/ε (直接反演)      │ ★☆☆☆☆ │
│ 从定价推断       │ 从FOC推导                 │         │
├──────────────────┼──────────────────────────┼─────────┤
│ 动态参数(γ)      │ E[Y_lag(ΔY-γΔY_lag...)]=0│ ★★★★☆ │
│ 如:习惯效应     │ 使用Arellano-Bond         │         │
└──────────────────┴──────────────────────────┴─────────┘
使用 Hugo 构建
主题 StackJimmy 设计