欢迎光临寒舍

结构估计实操攻略(高级)

5828 字

学了那么多,大家等的肯定是这样一份实操指南。

结构估计的参数空间与数据空间完整映射指南

第一部分:基础概念澄清

1.1 什么叫"参数空间与数据空间的映射"?

这个问题的关键在于理解一个函数关系

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
参数空间 θ ∈ Θ ⊂ ℝ^k
           ↓ (通过经济模型)
映射函数 h(·)
数据空间 D ∈ ℝ^n

具体地:
h: Θ → D
θ ↦ h(θ)

这个映射告诉我们:
给定参数θ,模型预测的数据应该是什么?

反向问题(我们要解决的):
给定观测到的数据D,
参数θ应该是什么?

这就需要找h的"逆"
或至少找到使模型预测与实际数据最接近的θ

一个具体的小例子

想象一个简单的供给-需求模型:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
需求:Q_d = α - β·P
供给:Q_s = γ + δ·P
均衡:Q_d = Q_s

参数θ = (α, β, γ, δ)
数据D = {(P_1, Q_1), (P_2, Q_2), ..., (P_n, Q_n)}

映射h的含义:
给定θ = (100, 2, 10, 3)
模型预测的均衡价格和产量应该是什么?

求解均衡:
α - β·P = γ + δ·P
P* = (α - γ)/(β + δ) = (100-10)/(2+3) = 18
Q* = 100 - 2×18 = 64

所以h(100,2,10,3) = (P*=18, Q*=64)

现在反过来:
如果我观测到P=20, Q=60
参数应该是什么?

这就是估计问题

1.2 为什么需要"结构"估计?

简单估计的局限

 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
假设数据:商品销售价格(P)和销量(Q)的100个观测

简单办法:
直接做Q对P的回归
Q = a + b·P + ε
用OLS估计a和b

Q_hat = 20 - 0.5·P

问题:这个估计有什么含义?
这是需求曲线吗?不一定!

因为观测的(P,Q)对可能是以下情况的混合:
1. 需求曲线上的点(消费者改变需求)
2. 供给曲线上的点(供给者改变供给)
3. 两条曲线同时移动的均衡点

简单回归混淆了这些:
如果P上升是因为需求增加(向上移动需求曲线)
那么观测到的是需求曲线上的不同点
这反映的是真实的需求曲线

但如果P上升是因为供给减少(向左移动供给曲线)
那么观测到的是需求曲线上的不同点
但这是由于供给变化引起的

结果:OLS估计可能完全错误!
可能估计的既不是需求也不是供给

系统偏差来自:
价格既影响购买量,也被购买量影响
(内生性问题)

简单回归的假设(X外生)被违反

结构估计的优势

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
结构估计的思路:

步骤1:建立完整的经济模型
描述所有参与者(消费者、供给者)的行为
包括他们如何相互影响(均衡条件)

步骤2:从模型推导出观测数据的含义
给定参数,模型预测什么样的数据?

步骤3:找参数使预测与现实最接近
不是简单地回归,而是比较模型预测与数据

步骤4:解释参数
因为参数来自明确的经济模型
所以有清晰的经济学含义

优势:
✓ 可以区分需求和供给(内生性正确处理)
✓ 可以进行反事实分析(改变参数看会怎样)
✓ 参数有清晰的经济学解释
✓ 可以处理复杂的均衡互动

第二部分:参数类型与来源

2.1 参数的三种来源

在结构估计中,参数来自三个不同的来源:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
参数θ = {θ_model, θ_identified, θ_estimated}

1. θ_model:模型约束参数(从经济理论来)
   - 来源:经济学理论、模型设定
   - 例:消费者效用函数的函数形式
        企业的利润函数形式
   - 你的选择:你设定这些,决定了模型结构

2. θ_identified:识别参数(从模型逻辑推出)
   - 来源:不直接从数据估计,而是从θ_model推出
   - 例:某些成本参数可从一阶条件反演
   - 你的选择:取决于θ_model,但需要技巧来识别

3. θ_estimated:待估参数(从数据学习)
   - 来源:最大似然或矩估计等方法
   - 例:需求曲线的斜率、消费者对特征的偏好
   - 你的选择:数据和估计方法决定

一个具体的例子:离散选择模型

 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
45
46
47
48
49
50
产业:汽车市场
产品:多种车型
数据:消费者的购买选择

模型设定(θ_model):

消费者h购买产品j的效用:
U_{hj} = V_{hj} + ε_{hj}

其中:
V_{hj} = α_h·ln(Price_j) + β_h·Size_j + ξ_j

参数含义:
- α_h:消费者h对价格的敏感性(价格系数)
- β_h:消费者h对车型大小的偏好
- ξ_j:产品j的不可观测特征(品质等)
- ε_{hj}:消费者特有的随机项

假设ε_{hj}服从Gumbel分布
→ 模型(Logit)给出:
P(h选择j) = exp(V_{hj}) / Σ_k exp(V_{hk})

这个概率形式就是θ_model的结果
(Gumbel假设导致Logit)

识别参数(θ_identified):

从一阶条件反演边际成本(供给侧)
给定企业的定价一阶条件:
∂π_j/∂P_j = 0

可以推导出边际成本MC_j:
MC_j = Price_j - (市场份额_j)/(价格弹性_j)

这个MC不是直接估计的
而是从模型约束推出的

待估参数(θ_estimated):

从数据估计需求参数(α, β)
使用购买选择数据和价格数据

估计方法:用极大似然法
最大化购买选择的概率

实际上,这些参数的源头是:
- α, β:来自消费者偏好(经济学理论确定形式)
- ξ_j:来自市场的不可观测特性(经济学说有但具体值未知)
- 那些会被估计的是什么呢?
  就是α和β的具体数值!

2.2 参数的维度

理解参数的"大小"很重要:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
参数维度 k = 参数总数

影响估计难度:
- k很小(<10):相对简单
- k中等(10-100):中等难度
- k很大(>100):困难,可能需要特殊方法

参数来源决定维度:

简单模型:
- 需求曲线斜率:1个参数
- 供给曲线斜率:1个参数
- 总共:k=2

复杂模型(如BLP):
- 消费者对每个产品特征的偏好:5-10个
- 消费者对特征偏好的异质性方差:5-10个
- 不可观测特征:n个(产品数量)
- 供给侧成本参数:10-20个
- 总共:k=100+

维度的后果:
- 小k:精确估计,推断容易
- 大k:识别困难,估计复杂,需要强假设

第三部分:参数空间到数据空间的详细映射

3.1 映射函数的三个层次

第 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
给定参数θ
个体h在面对产品集合J时的选择

映射:θ → P(h选择j | θ)

例如在Logit模型中:

P(choose j | X, θ) = exp(δ_j(X,θ)) / Σ_k exp(δ_k(X,θ))

其中δ_j(X,θ) = V(X_j, θ)是产品j的"吸引力"

具体例子:
θ = (α=-1, β=0.5, ξ_1=0.2, ξ_2=-0.1, ξ_3=0)
产品特征:
  产品1:Price=20, Size=1.5
  产品2:Price=25, Size=2.0
  产品3:Price=30, Size=2.5

计算吸引力:
δ_1 = -1×ln(20) + 0.5×1.5 + 0.2 = -2.996 + 0.75 + 0.2 = -2.046
δ_2 = -1×ln(25) + 0.5×2.0 - 0.1 = -3.219 + 1.0 - 0.1 = -2.319
δ_3 = -1×ln(30) + 0.5×2.5 + 0 = -3.401 + 1.25 = -2.151

选择概率:
exp(-2.046) ≈ 0.129
exp(-2.319) ≈ 0.098
exp(-2.151) ≈ 0.116
总计 ≈ 0.343

P(choose 1) = 0.129/0.343 ≈ 37.6%
P(choose 2) = 0.098/0.343 ≈ 28.6%
P(choose 3) = 0.116/0.343 ≈ 33.8%

映射完成:参数θ → 个体选择概率向量

第 2 层:市场层的映射

从个体选择到市场观测数据:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
市场数据 = 聚合的个体选择

映射:P(h选择j) → 市场份额s_j

如果有H个消费者,独立同分布:

s_j = (1/H) × Σ_h I{h选择j}

在大样本下:
E[s_j] = P(choose j | θ)

具体例子(续上):
假设有1000个消费者

产品1:预期有376人选择 → 市场份额37.6%
产品2:预期有286人选择 → 市场份额28.6%
产品3:预期有338人选择 → 市场份额33.8%

实际观测(由于随机性):
产品1:380人 → 市场份额38.0%
产品2:275人 → 市场份额27.5%
产品3:345人 → 市场份额34.5%

映射完成:参数θ → 市场份额向量s

第 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
25
26
27
28
利用模型约束反演供给侧参数

给定:
- 需求参数(已估计):α, β
- 市场份额:s_j
- 价格:P_j

反演:边际成本MC_j

使用一阶条件(企业利润最大化):

∂π_j/∂P_j = 0

对于Bertrand(价格竞争):
P_j - MC_j = -s_j / ε_{jj}

其中ε_{jj}是自身价格弹性

重排得到:
MC_j = P_j + s_j / ε_{jj}

具体例子:
产品1:P_1=20, s_1=0.38
价格弹性:ε_{11} = -1.5

MC_1 = 20 + 0.38/(-1.5) = 20 - 0.253 = 19.747

映射完成:需求参数θ_demand → 供给参数θ_supply

3.2 完整的参数空间到数据空间映射

让我用一个旅游目的地选择的例子完整演示整个映射过程:

问题设定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
背景:
游客在三个景点中选择去哪个

数据:
- 500个游客的选择记录
- 每个景点的特征:门票价格(P)、旅行时间(T)、美景评分(A)
- 观测到的市场份额:景点1选中40%,景点2选中35%,景点3选中25%

参数空间θ:
待估:θ = (α, β_T, β_A, ξ_1, ξ_2, ξ_3)

含义:
- α:游客对价格的敏感性(必须是负数)
- β_T:游客对时间的敏感性(必须是负数)
- β_A:游客对美景的敏感性(必须是正数)
- ξ_1, ξ_2, ξ_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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
第0步:初始化参数
假设EM算法的某个迭代:
θ^(t) = (α=-0.1, β_T=-0.05, β_A=0.3, ξ_1=0.2, ξ_2=0.1, ξ_3=-0.3)

第1步:景点特征数据
景点1:P_1=100, T_1=1小时, A_1=8分
景点2:P_2=150, T_2=2小时, A_2=7分
景点3:P_3=80, T_3=3小时, A_3=9分

第2步:计算游客的"吸引力"
对一个"代表性游客"(代表性消费者假设):

V_1 = α·P_1 + β_T·T_1 + β_A·A_1 + ξ_1
    = (-0.1)×100 + (-0.05)×1 + 0.3×8 + 0.2
    = -10 - 0.05 + 2.4 + 0.2
    = -7.45

V_2 = α·P_2 + β_T·T_2 + β_A·A_2 + ξ_2
    = (-0.1)×150 + (-0.05)×2 + 0.3×7 + 0.1
    = -15 - 0.1 + 2.1 + 0.1
    = -13.0

V_3 = α·P_3 + β_T·T_3 + β_A·A_3 + ξ_3
    = (-0.1)×80 + (-0.05)×3 + 0.3×9 + (-0.3)
    = -8 - 0.15 + 2.7 - 0.3
    = -5.75

解释:
- 景点1因为便宜且有3.0分的潜在价值,吸引力中等
- 景点2虽然最漂亮(A=7),但贵且远(P高,T高),吸引力最低
- 景点3虽然最便宜且最近,但要1小时(T)抵消了优势

第3步:转换为选择概率(Logit)
分母 = exp(-7.45) + exp(-13.0) + exp(-5.75)
     = 0.00562 + 0.0000226 + 0.00316
     = 0.00881

P(choose 1 | θ^(t)) = 0.00562/0.00881 ≈ 63.8%
P(choose 2 | θ^(t)) = 0.0000226/0.00881 ≈ 0.26%
P(choose 3 | θ^(t)) = 0.00316/0.00881 ≈ 35.9%

注意:模型预测景点1吸引力最高(63.8%)
     但实际观测是景点1只有40%

这个差异就是估计需要优化的地方!

第4步:市场份额的预测与实际对比

预测:s = (63.8%, 0.26%, 35.9%)
实际:s = (40%, 35%, 25%)

差异:
Δs_1 = 40% - 63.8% = -23.8%
Δs_2 = 35% - 0.26% = +34.74%
Δs_3 = 25% - 35.9% = -10.9%

景点2的预测严重偏低!
这提示参数需要调整

可能的调整:
- α应该更负(价格敏感性更大)→ V_2会下降更多
- β_T应该更负(时间敏感性更大)→ V_2会下降更多
- ξ_2应该更大(景点2有不可观测的吸引力)→ V_2会上升

第5步:参数优化
使用最大似然法或矩估计
逐步调整参数直到拟合

最终估计的参数:
θ^* = (α=-0.15, β_T=-0.1, β_A=0.25, ξ_1=-0.5, ξ_2=1.2, ξ_3=0)

验证:新的选择概率变为
P(choose 1 | θ^*) ≈ 40%
P(choose 2 | θ^*) ≈ 35%
P(choose 3 | θ^*) ≈ 25%

完全匹配实际观测!

参数空间到数据空间的完整映射图

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
参数空间 Θ
│  (α=-0.15, β_T=-0.1, β_A=0.25)
│  + (ξ_1=-0.5, ξ_2=1.2, ξ_3=0)
├─→ [映射h:计算V_j]
│   V_1=-7.9, V_2=-13.2, V_3=-5.5
├─→ [映射:计算概率]
│   exp(V_1)=...
│   P(1)=40%, P(2)=35%, P(3)=25%
├─→ [映射:聚合]
│   市场份额 s=(0.40, 0.35, 0.25)
└──→ 数据空间 D
     (500个游客中:
      200个选景点1,
      175个选景点2,
      125个选景点3)

第四部分:哪些参数需要估计,为什么?

4.1 参数可估计性分析

不是所有参数都需要从数据估计。有的能够识别,有的不能。

可识别 vs 不可识别

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
定义:
如果两个不同的参数向量θ₁和θ₂
产生相同的数据分布,
则这两个参数不可区分(不可识别)

在我们的景点例子中:

情景1:α=−0.1, ξ_1=0.2
      → V_1 = -10 + ... + 0.2

情景2:α=−0.2, ξ_1=1.2
      → V_1 = -20 + ... + 1.2

如果两个产生相同的V_1,
就是不可识别的

解决方法:规范化约束
ξ_3=0(某个景点的不可观测特征设为0)
这样其他ξ相对于ξ_3就是可识别的

4.2 参数的三个关键问题

问题 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
不可识别的参数类型:

1. 效用的水平(基准点)
   只有相对差异能被识别

   例:U_1 = V_1 + ε vs U_1 = V_1 + 5 + ε
   如果ε是固定分布,这两个模型给出相同的选择概率

   解决:固定某个基准(如ξ_3=0 或 V_3=0)

2. 效用的缩放
   只有相对权重能被识别

   例:U = 2V + ε vs U = V + ε/2
   如果ε的分布也缩放,结果相同

   解决:固定某个系数(如α=-1或σ_ε=1)

3. 选择集中不存在的产品的参数

   例:如果没有消费者选择产品2,
      产品2的某些参数特征无法识别

   解决:添加外部信息或使用只有被选中产品才重要的参数

4. 供给侧的某些成本参数

   如果只观测均衡价格和产量
   无法区分"高成本+竞争少"vs"低成本+竞争多"

   解决:添加成本的直接数据或工具变量

问题 2:哪些参数需要从数据估计?

 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
需要从数据估计的参数类型:

1. 偏好参数(Preference Parameters)

   这些来自消费者的选择行为
   只能从消费者如何选择来推断

   例:α(对价格的敏感性)
      β(对特征的偏好)

   为什么必须估计?
   - 因为偏好因人而异
   - 不同市场可能不同
   - 随时间变化
   - 只能从行为中看出(无法直接问)

2. 不可观测特征(Unobserved Heterogeneity)

   这些是产品的"隐藏质量"

   例:ξ_j(各景点的"神秘魅力")

   为什么必须估计?
   - 定义上不可观测
   - 但会影响消费者选择
   - 必须从选择数据反演

   反演方式:
   如果消费者选的比模型预测更多
   说明有正的ξ
   反之则负

问题 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
25
26
27
28
29
30
31
32
33
34
35
不用从数据估计的参数类型:

1. 已知的外生变量系数

   例:景点的确切门票价格P_j
      旅行时间T_j

   为什么不用估计?
   - 因为我们直接观测到
   - 企业/政策制定者选择的
   - 不是我们要推断的未知数

2. 可从一阶条件反演的参数

   例:供给侧的边际成本MC_j

   为什么不用直接估计?
   - 因为有经济学约束
   - 给定需求参数,成本被唯一确定
   - 无需单独估计

   反演方式:
   从企业一阶条件
   MC_j = P_j - (...)
   直接计算出来

3. 从模型设定固定的参数

   例:Logit中随机项ε~Gumbel
       Gumbel分布的方差已固定为π²/6

   为什么不用估计?
   - 因为模型设定决定了
   - 无法从数据中识别
   - 实际上是模型约束的一部分

4.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
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
问题:房租为什么不同?
数据:200个房屋的租金、大小、位置等

完整参数集合:

需求侧参数(消费者):
θ_d = (
  α,        # 租金敏感性 ← 需要估计(反映偏好)
  β_size,   # 对大小的偏好 ← 需要估计
  β_loc,    # 对位置的偏好 ← 需要估计
  ξ_j,      # 房屋j的不可观测品质 ← 需要估计(反演)
  σ_α       # 消费者对租金敏感性的异质性 ← 需要估计
)

供给侧参数(房东):
θ_s = (
  MC_j,     # 房屋j的维护成本 ← 不需要直接估计,反演
  F_j       # 固定成本 ← 可能不可识别
)

外生变量(可观测,不估计):
X = (
  Rent_j,   # 观测到的租金(外生给定)
  Size_j,   # 房屋大小(外生给定)
  Loc_j     # 位置特征(外生给定)
)

现在:

参数1:α(租金敏感性)
- 来源:消费者理论(价格越高选择越少)
- 需要估计吗?YES
- 为什么?因为α的大小决定了需求曲线有多陡
         只能从观察消费者如何回应租金变化来学习
- 用什么估计?
  用消费者的租赁选择
  比较"租金高的房子"vs"租金低的房子"
  看消费者如何权衡
  MLE或矩估计

参数2:β_size(对大小的偏好)
- 来源:消费者理论(偏好大房子)
- 需要估计吗?YES
- 为什么?不同消费者对大小的偏好不同
         只能从他们的选择学习
- 用什么估计?
  看消费者是否愿意为更大的房子付更多租金
  使用MLE

参数3:ξ_j(房屋j的隐藏品质)
- 来源:模型设定(有不可观测的特征)
- 需要估计吗?YES
- 为什么?尽管不可观测,但影响租金
         必须反演出来
- 怎么反演?
  步骤1:估计α和β(从选择数据)
  步骤2:给定α和β,模型预测某房屋的相对吸引力
  步骤3:比较模型预测与实际选择
  步骤4:差异就是ξ_j

  数学上:
  ξ_j = ln(市场份额_j) - E[V_j | X_j, α, β]
  这被称为"BLP inversion"

参数4:MC_j(维护成本)
- 来源:经济学约束(企业最大化利润)
- 需要估计吗?NO
- 为什么不估计?
  企业的定价选择(P_j)反映了它对成本的预期
  一旦知道需求(α和β),
  企业的一阶条件唯一决定了MC_j

- 怎样反演?
  企业FOC(Bertrand):
  P_j - MC_j = (市场份额_j)/(价格弹性_j)

  已知:P_j(观测的租金)
       市场份额_j(从选择数据计算)
       价格弹性_j(从α推导)

  求解:MC_j = P_j - ...

  这样,MC_j被唯一确定,无需额外估计

参数5:σ_α(消费者异质性)
- 来源:模型设定(不同消费者对租金敏感性不同)
- 需要估计吗?YES(如果使用随机系数Logit)
- 为什么?异质性的大小影响替代弹性
          必须从数据学习
- 用什么估计?
  看交叉价格弹性是否与直接的模型预测匹配
  调整σ_α直到交叉弹性合理

总结参数的估计决策:

┌─────────────────┬──────────┬─────────────────┐
│ 参数            │ 估计否   │ 为什么          │
├─────────────────┼──────────┼─────────────────┤
│ α(租金敏感)   │ 是       │ 消费者偏好     │
│ β_size(偏好)  │ 是       │ 消费者偏好     │
│ ξ_j(隐藏品质) │ 是       │ 必须反演       │
│ σ_α(异质性)   │ 是       │ 模型参数       │
│ MC_j(成本)    │ 否       │ 由FOC决定     │
│ Rent_j          │ 否       │ 直接观测       │
│ Size_j          │ 否       │ 直接观测       │
└─────────────────┴──────────┴─────────────────┘

第五部分:用什么数据怎么估计

5.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
一个经常的误解:
数据=原始观测

正确的理解:
数据=经过适当汇总和转化的原始观测

例子:

原始数据(微观层):
100个个体的选择记录
person_id | product_choice | characteristics
1         | product_A      | ...
2         | product_B      | ...
...

转化后的数据(市场层):
市场份额、价格、特征
product | market_share | price | size | quality
A       | 0.35         | 100   | 1.5  | ...
B       | 0.40         | 150   | 2.0  | ...
C       | 0.25         | 120   | 1.8  | ...

两者都有效,但用法不同:
- 微观数据:直接用MLE
- 市场数据:用矩估计或逆问题方法

数据空间的维度

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
在我们的景点例子中:

微观数据维度:
n_obs = 500(观测数)
维度 = 500(每个选择是一个观测)

市场数据维度:
J = 3(产品数)
维度 = 3(市场份额向量)

一般地:

完整数据向量D ∈ ℝ^m
m = 市场份额维度 + 价格维度 + ...

对于有T个时期,J个产品的面板数据:
m = T×J(市场份额)+ T×J(价格)+ J×k(不变特征)
  = T×J×(2+k/J)

5.2 具体的估计方法及其与数据的关系

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

 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
何时用MLE:
- 有微观层的个体选择数据
- 数据包含个体h是否选择产品j

MLE的数据形式:

微观数据:
Y_{hj} ∈ {0,1}表示消费者h是否选择产品j

或者(等价):
Y_h ∈ {1,2,...,J}表示消费者h选择的产品编号

似然函数:
L(θ) = ∏_h P(Y_h | X_h, θ)
     = ∏_h P(choose j_h | X_h, θ)

其中j_h是消费者h实际选择的产品

对于Logit:
L(θ) = ∏_h [exp(V_{h,j_h}) / Σ_k exp(V_{h,k})]

对数似然:
ℓ(θ) = Σ_h log P(choose j_h | X_h, θ)
      = Σ_h [V_{h,j_h} - log(Σ_k exp(V_{h,k}))]

MLE估计:
θ̂ = arg max_θ ℓ(θ)

求解方法:
梯度下降或牛顿法
∂ℓ/∂θ = 0

数据流程:

原始微观数据
构建似然函数(包含每个个体的实际选择)
计算梯度(使用所有个体)
迭代更新参数
收敛后输出θ̂

方法 2:矩估计(Method of Moments)

 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
45
46
47
48
49
50
何时用矩估计:
- 有市场层面的聚合数据(市场份额)
- 没有个体层的选择数据(隐私、成本等)
- 想要解析解或快速估计

矩估计的数据形式:

市场数据:
s_j = 市场份额(可观测)
X_j = 产品特征(可观测)
P_j = 价格(可观测)

模型预测的矩:
E[s_j | θ] = P(choose j | θ)(来自Logit等)

样本矩:
m̂_j = s_j(实际观测)

理论矩:
m(θ) = E[s_j | θ]

矩估计:
找θ使得 m̂ ≈ m(θ)
即 s_j ≈ P(choose j | θ)

求解方法:
直接求解方程组
或最小化距离:min_θ ||m̂ - m(θ)||²

例子(景点选择):

观测:s_1=0.40, s_2=0.35, s_3=0.25

模型预测(参数为θ):
m_1(θ) = exp(V_1) / Σ_k exp(V_k)
m_2(θ) = exp(V_2) / Σ_k exp(V_k)
m_3(θ) = exp(V_3) / Σ_k exp(V_k)

矩条件:
s_1 = m_1(θ) → 等式1
s_2 = m_2(θ) → 等式2
s_3 = m_3(θ) → 等式3

但注意:s_1+s_2+s_3=1,m_1+m_2+m_3=1
所以只有2个独立等式(3-1=2)

需要2个未知参数(如α和β_A,固定β_T)

解方程:s_1 = m_1(α, β_A), s_2 = m_2(α, β_A)
得到:α̂, β̂_A

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

 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
何时用GMM:
- 有多个矩条件(超度数据)
- 想要利用工具变量处理内生性
- 需要处理测量误差

GMM的矩条件:

通常的形式:
E[g(Y, θ)] = 0

其中g是"矩条件函数"

例如,在需求估计中:
g(θ) = Z'·(s_observed - s_predicted(θ))

其中Z是工具变量

GMM估计:
θ̂ = arg min_θ [ḡ(θ)]'·W·[ḡ(θ)]

其中ḡ(θ) = (1/m)Σ_j g_j(θ)是样本均值
W是权重矩阵

数据流程:

原始数据{Y_j, X_j, Z_j}
计算矩条件g_j(θ)(包含Z)
计算样本矩ḡ(θ)
最小化GMM目标函数
收敛后输出θ̂和标准误

优点:
- 可以处理多个矩条件(超度)
- 自动进行统计检验(Sargan检验)

方法 4:逆问题方法(BLP Inversion)

 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
何时用逆问题方法:
- 需要反演不可观测特征ξ
- 有市场份额数据和产品特征
- 用于两步估计

逆问题的核心:

给定:需求参数θ(已估计)
      市场份额s_j(可观测)
      产品特征X_j(可观测)

要求:ξ_j(不可观测特征)

关系:
s_j = h_j(ξ_j, θ, X_j)

其中h是映射函数(如Logit)

反演:
ξ_j = h_j^{-1}(s_j, θ, X_j)

在Logit中:
δ_j(市场势能)满足:
s_j = exp(δ_j) / (1 + Σ_k exp(δ_k))

反解:
δ_j = log(s_j) - log(1 - Σ_k s_k)
δ_j = log(s_j / s_0)(其中s_0是outside option)

然后:
ξ_j = δ_j - X_j'β(分离出观测特征部分)

具体例子:

观测:s_1=0.4, s_2=0.35, s_3=0.25(都在市场内)
      outside option s_0 = 1-0.4-0.35-0.25 = 0

估计的β = [β_P, β_Size, β_A] = [-0.1, 0.5, 0.3]
产品特征:
  X_1 = [100, 1.5, 8]
  X_2 = [150, 2.0, 7]
  X_3 = [80, 2.5, 9]

步骤1:计算市场势能δ
δ_1 = log(0.4) - log(1-0.4-0.35-0.25) = log(0.4/1) = -0.916
δ_2 = log(0.35/1) = -1.050
δ_3 = log(0.25/1) = -1.386

(如果有outside option:s_0≠0,使用log(s_j/s_0))

步骤2:计算观测特征的贡献
X_1'β = (-0.1)×100 + 0.5×1.5 + 0.3×8 = -10+0.75+2.4 = -6.85
X_2'β = (-0.1)×150 + 0.5×2.0 + 0.3×7 = -15+1+2.1 = -11.9
X_3'β = (-0.1)×80 + 0.5×2.5 + 0.3×9 = -8+1.25+2.7 = -4.05

步骤3:反演不可观测特征
ξ_1 = δ_1 - X_1'β = -0.916 - (-6.85) = 5.93
ξ_2 = δ_2 - X_2'β = -1.050 - (-11.9) = 10.85
ξ_3 = δ_3 - X_3'β = -1.386 - (-4.05) = 2.66

解释:
- 景点2有最高的隐藏品质(ξ_2=10.85)
  可能是很出名或有特殊魅力
- 这解释了为什么s_2相对较高
  尽管P_2最贵

5.3 三个具体案例的完整数据到参数映射

案例 A:汽车市场的 BLP 估计

 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
45
46
47
48
49
50
51
52
问题:估计消费者对汽车特征的偏好

数据:
- 时间:2000-2019年(20年)
- 产品:200个车型
- 变量:
  * 销量和市场份额
  * 价格
  * 特征(马力、燃油效率、大小等)
  * 厂商/品牌

参数空间θ = (α, β_X, σ_β)
- α:对价格的敏感性
- β_X:对各特征的偏好
- σ_β:偏好的异质性(标准差)

估计过程:

第1步:设定模型
U_{ijt} = V_{ijt} + ε_{ijt}
V_{ijt} = α_i·ln(P_{jt}) + X_{jt}'β_i + ξ_{jt}

随机系数:
α_i ~ N(ᾱ, σ²_α)
β_i ~ N(β̄, Σ_β)

第2步:构建似然或矩条件
如果用MLE(有微观选择数据):
L(θ) = ∏_i P(Y_i | X_i, θ)

如果用GMM(只有市场份额):
矩条件:E[Z·(s_j - s_j(θ))] = 0
其中Z是工具变量(如其他车型的特征)

第3步:参数估计
使用优化算法(如Nelder-Mead或BFGS)
最大化似然或最小化GMM目标函数

结果输出:
θ̂ = (ᾱ=-0.25, β̂_X=[...], σ̂_β=[...])
加上标准误和置信区间

第4步:反演不可观测特征
ξ̂_{jt} = δ_{jt} - X_{jt}'β̂

第5步:供给侧估计
从FOC反演边际成本:
MC_{jt} = P_{jt} - (s_{jt})/(ε_{jt})

第6步:反事实分析
改变参数(如兼并),重新求解均衡
比较新旧均衡下的福利

案例 B:劳动力市场的离散选择估计

 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
45
46
47
48
49
问题:个体如何在不同工作中选择

数据:
- 样本:5000个工作者
- 选择集:5种工作(金融、制造、服务、教育、其他)
- 个人特征:教育年数、性别、经验等
- 工作特征:工资、工作强度、福利等

参数θ = (β_wage, β_education, σ_education)
- β_wage:个人对工资的敏感性
- β_education:个人对工作教育要求的态度
- σ_education:异质性

估计过程:

第1步:设定Logit或Nested Logit模型
U_{ij} = V_{ij} + ε_{ij}
V_{ij} = β_wage·log(w_j) + β_ed·ed_j + ξ_j

其中j代表工作类型

第2步:MLE估计(有微观数据)
似然函数:
L(θ) = ∏_i [exp(V_{ij_i}) / Σ_k exp(V_{ik})]

对数似然:
ℓ(θ) = Σ_i log[exp(V_{ij_i}) / Σ_k exp(V_{ik})]

第3步:求解最优化问题
∂ℓ/∂θ = 0

用数值方法求解

结果:
β̂_wage = 0.15(更高工资吸引力+15%)
β̂_ed = -0.03(工作要求高教育轻微负面)
σ̂_ed = 0.25(异质性中等)

第4步:计算边际效应
∂P(choose j)/∂w_j = β_wage·P(j)·(1-P(j))

解释:
工资每增加1000元,选择该工作的概率增加
(0.15/1000)×P(j)×(1-P(j))百分点

第5步:供给对标政策的反应
如果最低工资提高10%
新的工资分布 → 重新计算P(choose j)
→ 预测新的工作分布

案例 C:二手车市场的成本反演

 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
45
46
问题:从价格推断不同车型的成本和特征

数据:
- 产品:100款二手车
- 变量:价格、里程、年龄、品牌、特征等

参数θ_d = (α, β_feature)已估计(来自MLE)
目标:反演θ_s = (MC_j, 品牌价值)

估计过程:

第1步:估计需求参数
使用二手车购买选择数据
估计α(价格敏感)和β(特征偏好)

第2步:反演市场势能δ
从观测的市场份额:
δ_j = log(s_j) - log(s_0)

第3步:反演不可观测特征
ξ_j = δ_j - X_j'β

第4步:供给侧估计
假设车商定价使得边际收益=边际成本
P_j = MC_j + (1/ε_j)

从一阶条件:
MC_j = P_j·[1 - (1/|ε_j|)]

其中|ε_j|是需求的价格弹性

计算结果:
品牌A的车:MC=80000元
品牌B的车:MC=90000元
(反映出品牌B的成本或议价力更高)

第5步:特征的隐含成本
使用成本函数:
MC_j = f(特征, 品牌)

回归MC_j on 特征:
MC_j = α_0 + α_mileage·里程 + α_age·年龄 + ...

参数解释:
每增加10000公里,成本下降α_mileage×10000元
反映了旧车折旧

第六部分:为什么选择特定的估计方法?

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
43
44
45
46
开始:你有什么数据?


[1] 微观选择数据?(个体购买哪个产品)
    ├─ 是 → 使用MLE
    │       (直接最大化选择的似然)
    │       优点:精确、标准统计推断
    │       缺点:需要大量微观数据
    └─ 否 → 进行第[2]

[2] 市场份额数据?(各产品的销售比例)
    ├─ 是 → 进行第[3]
    └─ 否 → 你没有足够数据进行结构估计
            考虑其他方法

[3] 产品的观测特征?(价格、属性等)
    ├─ 是 → 进行第[4]
    └─ 否 → 只能估计整体偏好,不能分解

[4] 供给侧有内生性问题吗?
    (价格与质量相关)
    ├─ 是 → 需要工具变量
    │       ├─ 有好的IV → 使用GMM
    │       │  (加入IV处理内生性)
    │       │
    │       └─ 没有IV → 使用其他识别策略
    │          (如假设某些成本外生)
    └─ 否 → 可用简单矩估计

[5] 需要反演不可观测特征吗?
    (需要知道产品隐含的品质)
    ├─ 是 → 使用BLP逆问题
    │       (先估计偏好,再反演质量)
    └─ 否 → 直接参数估计

[6] 时间维度呢?
    ├─ 有面板数据(多时期) → 考虑动态模型
    │                      可能需要特殊处理
    └─ 只有截面数据 → 标准MLE/GMM

6.2 三个具体的方法比较

比较表:MLE vs GMM vs BLP

 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
┌──────────────────┬──────────────────┬──────────────┬──────────────┐
│ 特征             │ MLE              │ GMM          │ BLP          │
├──────────────────┼──────────────────┼──────────────┼──────────────┤
│ 数据类型         │ 微观个体选择     │ 市场份额     │ 市场份额+特征│
│ 优化目标         │ 最大对数似然     │ 矩条件=0    │ 两步:推断ξ │
│ 参数维度         │ 中等             │ 灵活         │ 大(含ξ)   │
│ 计算复杂度       │ 低-中            │ 中           │ 高           │
│ 统计推断         │ 标准、清晰       │ 利用δ方法   │ 需谨慎      │
│ 工具变量处理     │ 困难             │ 自然         │ 可结合       │
│ 反演能力         │ 有限             │ 有限         │ 核心能力     │
│ 适用场景         │ 消费者调查       │ 市场数据     │ 产业组织    │
└──────────────────┴──────────────────┴──────────────┴──────────────┘

选择建议:

选MLE当:
✓ 有大量个人级消费数据(如在线购物记录、选择调查)
✓ 直接观测到选择的概率
✓ 参数数量相对少(<50)
✓ 重点是推断个人偏好异质性

选GMM当:
✓ 有市场层面的聚合数据(市场份额、价格等)
✓ 需要处理内生性(价格和质量相关)
✓ 有多个矩条件(数据超度)
✓ 想要进行稳健性检验(Sargan检验)

选BLP当:
✓ 需要反演产品的不可观测品质
✓ 进行产业组织分析(并购、进入等反事实)
✓ 需要估计供给侧模型
✓ 产品高度差异化(如汽车)
✓ 可以容忍较高的计算成本

6.3 方法选择的具体案例

案例 1:为什么 Netflix 选择协同过滤而非结构估计?

 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
背景:Netflix想推荐电影

选项1:结构估计
- 建立消费者偏好模型
- 估计消费者对电影特征的偏好
- 用推断的偏好进行推荐

选项2:机器学习(协同过滤)
- 直接学习"看过A和B的人通常也看C"
- 无需显式的偏好模型

为什么Netflix选择选项2?

1. 数据结构:
   Netflix有数百万用户的评分记录
   这是隐含偏好的直接反映
   无需复杂的参数化

2. 计算效率:
   协同过滤可以快速处理大规模数据
   结构估计的计算会很慢

3. 模型假设:
   结构估计需要假设特定的偏好形式
   协同过滤更灵活,数据本身说话

4. 目标不同:
   Netflix想要预测用户会看什么
   不需要理解为什么(因果关系)
   结构估计做过头了

教训:
结构估计强大但成本高
只在需要因果推断或反事实分析时使用

案例 2:为什么经济学家在研究贸易时用结构估计?

 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
背景:研究中国加入WTO对生产率的影响

选项1:简单回归
import_penetration → 生产率变化
回归系数 = 贸易开放的效果

选项2:结构估计
建立企业竞争模型,包括:
- 消费者的产品选择
- 企业的定价和产量决策
- 贸易政策如何改变均衡

为什么选项2更好?

1. 内生性问题:
   简单回归无法区分:
   - 贸易导致进口增加 → 本地企业压力 → 生产率提高
   vs
   - 本地企业生产率高 → 竞争力强 → 出口多 → 进口多

   结构模型通过企业优化行为自动处理这个问题

2. 异质性:
   不同企业对贸易冲击的反应不同
   大企业可能倒闭,小企业可能进入
   结构模型可以捕捉这种异质性

3. 反事实分析:
   研究者想知道:
   "如果中国没有加入WTO,会怎样?"
   简单回归无法回答
   结构模型可以:
   改变贸易成本,重新求解均衡,对比

4. 政策设计:
   基于结构模型,可以评估其他政策
   如关税、补贴等的影响

教训:
当需要理解因果机制或进行政策分析时
结构估计提供了最严格的框架

第七部分:参数识别的深层讨论

7.1 什么是参数识别?

这是结构估计中最容易被忽视但最重要的话题。

正式定义

1
2
3
4
5
6
7
8
9
定义:参数θ被数据D识别,当且仅当
不存在两个不同的θ₁和θ₂
使得它们产生相同的观测数据分布

数学上:
如果 P(D|θ₁) ≠ P(D|θ₂) 对所有 θ₁ ≠ θ₂
则θ被识别

否则不被识别

为什么识别很重要?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
假设你的模型是:

效用 = α·ln(P) + β·Features + ξ + ε

估计出α = -0.5,β = [0.2, 0.1]

但如果参数不可识别,那么:
另一个参数组合 α' = -1,β' = [0.4, 0.2]
会产生完全相同的选择概率!

那你的估计有什么意义呢?

答案:没有!
任何基于参数的政策分析都是错误的

7.2 常见的识别问题

问题 1:正规化约束

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
问题:效用的水平不被识别

模型:U = α·P + β·X + ξ + ε

观测:选择概率

事实:
P(choose j) = exp(V_j) / Σ_k exp(V_k)
            = exp(V_j - V_0) / [1 + Σ_k exp(V_k - V_0)]

注意到:分子分母同时加常数不改变概率
exp(V_j + c) / Σ_k exp(V_k + c) = exp(V_j) / Σ_k exp(V_k)

所以,绝对效用水平不被识别
只有相对效用被识别

解决:设定基准
做法1:V_0 = 0(第一个产品无效用)
做法2:ξ_J = 0(最后一个产品无质量)
做法3:σ_ε = 1(正规化随机项方差)

这样就唯一确定了所有参数

问题 2:尺度不变性

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
问题:效用的尺度不被识别

如果β同时乘以常数k,而σ_ε也乘以k:
U' = k·(α·P + β·X + ξ) + ε'

其中ε'的方差是原来的k²倍

选择概率不变(因为两者同时缩放)!

解决:固定某个系数或方差
做法1:σ_ε固定(通常设为1)
做法2:某个β固定(如一个系数=1)
做法3:某个α固定(如价格系数=-1)

Logit中的标准做法:
假设ε ~ Gumbel(0, π²/6)
方差固定为π²/6
这样缩放就被确定了

问题 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
25
26
27
28
29
30
31
问题:某些参数的效果与数据特征混淆

例子:房价模型
Price = α·Size + β·Quality + ε

如果Size和Quality高度相关(大房子往往好房子)
那么我们很难分离α和β的效果

这被称为"多重共线性"

结构估计中的例子:

产品差异化模型中:
品牌特征ξ和定价策略的参数可能混淆

消费者可能高价是因为:
[A] 产品质量高(ξ大)
[B] 市场竞争少(定价权强)

如果A和B同时变化,无法分离

解决:
1. 使用工具变量
   找只影响B不影响A的因素

2. 使用时间变异
   如果A随时间稳定,B随时间变化
   可以分离

3. 进行敏感性分析
   假设不同的参数值,看结果如何变化

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
识别的三个层级:

第1层:点识别(Point Identification)
参数被唯一确定
θ_true = 唯一解

这是理想情况,但很难实现

第2层:集识别(Set Identification)
参数不唯一,但被约束在一个集合内
θ_true ∈ [θ_lower, θ_upper]

虽然不精确,但提供了有用的界

第3层:不可识别
参数完全由数据决定不了
θ_true可以是任何值

需要额外的假设才能前进

学术界的现代观点:
与其追求点识别的强假设
不如报告集识别的界
诚实地展现数据说不了什么

第八部分:完整的从数据到参数的工作流程

8.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
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
研究问题:
滴滴和优步竞争的本质是什么?
如果政府补贴滴滴,会如何影响竞争?

第1阶段:问题陈述和理论模型(Week 1-2)

步骤1.1:定义参数空间
θ = {θ_demand, θ_supply}

需求参数:
- α:用户对价格的敏感性
- β_waiting:用户对等待时间的敏感性
- β_rating:用户对司机评分的敏感性
- σ_α, σ_β:异质性
- ξ_j:平台j的不可观测吸引力(品牌、界面等)

供给参数:
- MC_j:边际成本(取决于司机成本、佣金等)

步骤1.2:建立经济模型

用户选择模型(Logit):
U_ij = α_i·Price_j + β_i·Wait_j + β_i·Rating_j + ξ_j + ε_ij

平台j的定价:
max π_j = (P_j - MC_j)·Q_j(P)
FOC:P_j - MC_j = -Q_j / (∂Q_j/∂P_j)

反事实:如果补贴使得有效价格P_j' = P_j - subsidy
新均衡会是什么

第2阶段:数据收集与准备(Week 3-4)

步骤2.1:获取数据

来源1:应用商店
- 用户评分、评价文本
- 下载量、使用频率

来源2:打车平台的市场报告
- 市场份额数据
- 平均价格、等待时间

来源3:用户调查
- 1000个用户的出行选择
- 个人特征(收入、年龄、位置等)

来源4:第三方研究机构
- 定价随时间的变化
- 促销幅度

步骤2.2:数据清洗
- 剔除异常值
- 处理缺失值
- 标准化变量

数据汇总后:

用户级数据(n=1000):
user_id | choice | price_didi | wait_didi | rating_didi | ...
1       | didi   | 15         | 3.2       | 4.8         | ...
2       | uber   | 18         | 2.1       | 4.6         | ...
...

市场级数据(J=2):
platform | market_share | avg_price | avg_wait | rating | ...
didi     | 0.65         | 14        | 3.5      | 4.7    | ...
uber     | 0.35         | 17        | 2.8      | 4.5    | ...

第3阶段:参数估计(Week 5-8)

步骤3.1:需求参数估计

使用MLE(有用户级选择数据):

似然函数:
ℓ(θ_d) = Σ_i log P(user i chooses their actual platform | θ_d)
        = Σ_i log[exp(V_{ij_i}) / (exp(V_i,didi) + exp(V_i,uber))]

编码步骤:
1. 指定V_ij的函数形式
2. 为每个用户计算选择概率
3. 计算对数似然
4. 使用优化算法(如BFGS)最大化

初始值:
α̂_0 = -0.1(根据文献猜测)
β̂_wait,0 = -0.5
β̂_rating,0 = 0.3

迭代:
第1次迭代:α=-0.10, β_wait=-0.50, β_rating=0.30 → ℓ=-650
第2次迭代:α=-0.12, β_wait=-0.48, β_rating=0.32 → ℓ=-645(改进)
第3次迭代:α=-0.11, β_wait=-0.49, β_rating=0.31 → ℓ=-644(改进)
...
第50次迭代:α=-0.115, β_wait=-0.485, β_rating=0.312 → ℓ=-643.8
第51次迭代:α=-0.115, β_wait=-0.485, β_rating=0.312 → ℓ=-643.8(收敛)

结果:
θ̂_d = {α̂=-0.115, β̂_wait=-0.485, β̂_rating=0.312, ...}
加上标准误和t统计量

解释:
- α=-0.115:价格每增加1元,选择概率下降11.5%(近似)
- β_wait=-0.485:等待时间每增加1分钟,吸引力下降0.485
- β_rating=0.312:评分每增加1分,吸引力增加0.312

步骤3.2:反演不可观测特征

给定θ̂_d,计算市场势能:
δ_didi = log(0.65) - log(1-0.65) = 0.620
δ_uber = log(0.35) - log(1-0.35) = -0.619

计算观测特征的贡献:
X_didi = [price=14, wait=3.5, rating=4.7]
X_didi' β = (-0.115)×14 + (-0.485)×3.5 + 0.312×4.7
           = -1.61 - 1.698 + 1.466
           = -1.842

X_uber = [price=17, wait=2.8, rating=4.5]
X_uber' β = (-0.115)×17 + (-0.485)×2.8 + 0.312×4.5
           = -1.955 - 1.358 + 1.404
           = -1.909

反演ξ:
ξ_didi = δ_didi - X_didi'β = 0.620 - (-1.842) = 2.462
ξ_uber = δ_uber - X_uber'β = -0.619 - (-1.909) = 1.290

解释:
滴滴有更高的不可观测吸引力(ξ_didi=2.462 > ξ_uber=1.290)
可能因为:品牌认知、本地化、社交功能等

步骤3.3:供给侧参数反演

从一阶条件:
MC_j = P_j - (市场份额_j) / (价格弹性_j)

计算价格弹性:
对于Logit,自身价格弹性:
ε_jj = α × (P_j) × (1 - s_j)

ε_didi = (-0.115) × 14 × (1 - 0.65) = -0.561
ε_uber = (-0.115) × 17 × (1 - 0.35) = -1.275

边际成本:
MC_didi = 14 - 0.65/(-0.561) = 14 + 1.159 = 15.159
MC_uber = 17 - 0.35/(-1.275) = 17 + 0.275 = 17.275

解释:
虽然滴滴定价更低(14 vs 17),
但边际成本更高(15.16 vs 17.28)
这很奇怪!说明滴滴可能在补贴或打价格战

第4阶段:验证和诊断(Week 9)

步骤4.1:拟合度检验

预测的市场份额:
P(choice didi) = exp(δ_didi) / (1 + exp(δ_didi))
                = exp(2.462) / (1 + exp(2.462))
                = 11.73 / 12.73
                = 0.921

等等,这不对!预测是92.1%但实际只有65%
说明模型拟合很差

问题可能在于:
1. 缺少重要变量(如地点)
2. 异质性没有充分捕捉
3. 工具变量有问题

步骤4.2:敏感性分析

改变关键假设,看结果是否稳健:
- 如果用Nested Logit而非Logit?
- 如果加入地点固定效应?
- 如果允许消费者对价格有不同敏感性?

第5阶段:反事实分析(Week 10-11)

步骤5.1:政策场景

场景1:政府补贴滴滴5元/单
新的有效价格 P_didi' = 14 - 5 = 9元
但滴滴的边际成本MC不变

步骤5.2:求新均衡

假设新的竞争模型(如Bertrand):
滴滴的新定价:
max π = (P - MC_didi)·Q_didi(P, P_uber)
FOC:P - MC_didi = -Q_didi / (∂Q_didi/∂P)

但现在有补贴约束:P ≥ 9
所以滴滴可能设定P=9(补贴边界)

或者,滴滴可能分享补贴:
设定P=11(中间值)

需要对不同的假设求解,获得新均衡价格P'_uber等

步骤5.3:福利分析

消费者福利变化:
- 滴滴用户:价格下降→CS增加
- Uber用户:可能升价→CS减少
- 需要计算具体数值

企业利润变化:
- 滴滴:可能获得更多客户,但价格更低→利润变化不确定
- Uber:失去客户→利润下降

政府成本:
- 补贴总额 = 补贴额×新的滴滴订单数

社会福利:
W = ΔCS + ΔProfit - 政府成本

第6阶段:撰写论文和展示(Week 12+)

呈现内容:
1. 理论框架的清楚陈述
2. 估计的参数及其含义的表格
3. 拟合度的图表
4. 反事实结果的对比分析
5. 敏感性分析的完整展示
6. 结论和政策含义

关键的呈现方式:

Table 1: 需求参数估计结果
┌────────────────┬─────────┬────────┬───────┐
│ 参数           │ 估计值  │ 标准误 │ t值   │
├────────────────┼─────────┼────────┼───────┤
│ α (价格)       │ -0.115* │ 0.012  │ -9.6  │
│ β_wait         │ -0.485* │ 0.045  │ -10.8 │
│ β_rating       │  0.312* │ 0.031  │ 10.1  │
│ σ_α (异质性)   │  0.028* │ 0.008  │ 3.5   │
└────────────────┴─────────┴────────┴───────┘

Table 2: 反演的产品特征
┌──────────┬─────────────────────┐
│ 平台     │ ξ (不可观测特征)   │
├──────────┼─────────────────────┤
│ 滴滴     │ 2.462 (品牌强势)   │
│ Uber     │ 1.290 (品牌较弱)   │
└──────────┴─────────────────────┘

Figure: 反事实分析结果
基准:滴滴65%, Uber 35%
补贴后:滴滴75%, Uber 25%
(基于补贴2元场景)

8.2 工作流程的关键检查点

 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
45
□ 参数空间定义清楚
  ☐ 每个参数的经济学含义明确
  ☐ 参数的维度和范围确定
  ☐ 哪些参数需要估计已明确

□ 数据准备
  ☐ 数据类型与模型匹配
  ☐ 关键变量都有
  ☐ 样本量足够大
  ☐ 没有严重的缺失或异常值

□ 模型识别
  ☐ 进行识别检查(参数是否唯一确定)
  ☐ 是否需要正规化约束
  ☐ 是否需要工具变量处理内生性
  ☐ 参数之间是否有多重共线性

□ 参数估计
  ☐ 选择合适的估计方法
  ☐ 初始值选择合理
  ☐ 优化算法收敛
  ☐ 获得标准误和置信区间

□ 拟合度诊断
  ☐ 预测与实际数据对比
  ☐ 残差检验
  ☐ 拟合度指标(R², 似然等)
  ☐ 特殊群体的拟合度(或有差异吗?)

□ 敏感性分析
  ☐ 改变关键假设,参数是否稳定
  ☐ 不同估计方法,结果是否一致
  ☐ 初始值改变,是否收敛到相同结果

□ 反事实分析
  ☐ 场景定义清楚
  ☐ 新均衡求解正确
  ☐ 结果的经济学含义合理
  ☐ 进行了多种场景对比

□ 呈现与交流
  ☐ 表格清晰,标注正确
  ☐ 图表易读,有合适的标题和图例
  ☐ 参数估计的含义有通俗解释
  ☐ 反事实结果的政策含义明确

第九部分:最后的总结与建议

9.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
结构估计的本质:

经济模型
   用参数θ参数化
给定θ,推导出数据D应该是什么样的
比较模型预测与实际数据D_actual
调整θ使得预测最接近实际
找到的θ*就是估计值

关键理解:

参数空间 Θ ⊆ ℝ^k
   ↓ (通过经济模型)
映射函数 h: Θ → D
数据空间 D ⊆ ℝ^m

映射h可能不是一一对应的:
- 可能不同的θ产生相同的D(不可识别)
- 可能某些D无法被任何θ产生(模型错设)

结构估计就是在这个映射框架下:
1. 确保h是一一对应的(识别)
2. 找h的"逆"(参数估计)
3. 评估h的质量(模型检验)
4. 利用h进行反事实(政策分析)

9.2 结构估计与其他方法的关系

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
方法谱系:

描述性分析(数据→特征)
相关性分析(OLS等,处理X的影响)
因果推断(处理内生性,如IV)
结构估计(建立参数化模型)
理论分析(纯数学分析)

结构估计的位置:
- 比相关性分析更进一步(需要经济学模型)
- 比纯理论分析更有实证基础(使用数据)

选择标准:
- 只想知道相关性→简单回归足够
- 想知道因果效应→因果推断方法
- 想理解机制并做反事实→结构估计
- 想探索理论可能性→理论分析

9.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
25
26
27
28
29
30
31
32
33
阶段1:学习基础(Year 1)
□ 深入学习一个标准模型(如BLP)
□ 理解从参数到数据的完整映射
□ 手工做一个小例子的完整估计
□ 不要急着做高大上的复杂模型

阶段2:应用和修改(Year 2)
□ 用自己的数据复现一个已知的研究
□ 逐步修改模型以适应自己的问题
□ 学会诊断和调试(为什么不收敛)
□ 与导师讨论每一步的选择

阶段3:创新(Year 3+)
□ 开发适合自己问题的参数化
□ 提出新的识别策略
□ 进行深入的敏感性和稳健性分析
□ 写清楚每个选择的理由

关键的避坑:
❌ 为了看起来高端而设计过度复杂的模型
   √ 而应该选择足以回答问题的最简单模型

❌ 估计了很多参数但不知道它们是什么意思
   √ 而应该清楚每个参数的经济学含义

❌ 只报告参数估计值,不展示拟合度
   √ 而应该诚实地展示模型表现

❌ 做了反事实但不做敏感性分析
   √ 而应该展示结果对关键假设的敏感度

❌ 论文中参数空间和数据空间的关系混淆不清
   √ 而应该让读者清楚理解两者的映射

9.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
1. 参数空间清晰吗?
   - 我要估计多少个参数?
   - 每个参数的经济学含义是什么?
   - 参数的范围应该是什么?

2. 数据空间充分吗?
   - 我有什么数据?
   - 这些数据能识别所有参数吗?
   - 是否需要额外的数据或假设?

3. 映射h明确吗?
   - 给定参数,我能精确预测数据吗?
   - 这个映射的逆存在吗(可识别)?
   - 映射的计算复杂性如何?

4. 估计方法恰当吗?
   - 为什么选择MLE而非GMM?
   - 是否需要BLP反演?
   - 是否处理了内生性?

5. 结果合理吗?
   - 参数的符号和大小合理吗?
   - 模型的拟合度如何?
   - 是否通过了各种诊断检验?

6. 结论稳健吗?
   - 改变假设后结果如何?
   - 使用不同的估计方法后结论相同吗?
   - 初始值改变是否影响收敛?

7. 贡献明确吗?
   - 相比已有文献,我的参数估计有什么新?
   - 反事实分析能回答什么问题?
   - 对政策或理论有什么启示?

9.5 推荐的学习资源

 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
深入理解参数空间-数据空间映射:

必读论文:
1. Berry (1994) "Estimating Discrete-Choice Models"
   - 最清晰地展示了从参数到数据的映射

2. Berry, Levinsohn & Pakes (1995) "Automobile Prices"
   - BLP框架,演示了反演的经典方法

3. Nevo (2000) "Mergers Analysis with Random Coefficients"
   - 清楚地解释了如何处理异质性

推荐的教科书:
1. Train (2009) "Discrete Choice Methods with Simulation"
   - 最通俗易懂的入门书

2. McFadden (1981) "Economic Choice Behavior"
   - 经典理论基础

推荐的实践:
1. 复现BLP的汽车市场例子
   (很多教科书有代码)

2. 使用simulated maximum likelihood理解
   如何处理高维积分

3. 自己从零推导一次BLP inversion
   直到彻底理解

关键的实践技能:
- 掌握数值优化(scipy.optimize等)
- 学会矩阵操作(numpy/pandas)
- 能写清晰的伪代码说明算法
- 能画参数-数据的映射图

第十部分:一个完整的例子从头到尾

为了真正理解参数空间与数据空间的映射,让我给出一个完全可以动手做的小例子。

完整工作代码示例

  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
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import numpy as np
from scipy.optimize import minimize
import pandas as pd

# ============ 第1部分:生成模拟数据 ============

np.random.seed(42)

# 真实的参数(我们最后要估计这些)
theta_true = {
    'alpha': -0.1,  # 价格系数
    'beta_X': 0.5,  # 特征系数
    'xi': np.array([0.3, -0.2, 0.1])  # 三个产品的不可观测特征
}

# 产品特征
X = np.array([
    [2.0],   # 产品1的特征值
    [1.5],   # 产品2的特征值
    [2.5]    # 产品3的特征值
])

# 产品价格
P = np.array([20, 25, 22])

# 生成数据:1000个消费者的选择
n_consumers = 1000
J = 3  # 3个产品

# 计算真实的市场份额
def compute_market_share(P, X, theta):
    """给定参数,计算市场份额"""
    alpha = theta['alpha']
    beta_X = theta['beta_X']
    xi = theta['xi']

    V = alpha * np.log(P) + beta_X * X.flatten() + xi

    # Logit概率
    exp_V = np.exp(V - np.max(V))  # 数值稳定性
    share = exp_V / np.sum(exp_V)

    return share

# 计算真实市场份额
true_share = compute_market_share(P, X, theta_true)
print(f"真实市场份额:{true_share}")
# 输出:[0.408, 0.287, 0.305]

# 模拟消费者的选择
choices = np.random.choice(J, n_consumers, p=true_share)
observed_share = np.array([np.sum(choices == j) for j in range(J)]) / n_consumers
print(f"观测市场份额:{observed_share}")
# 输出:[0.41, 0.28, 0.31](接近真实值)

# ============ 第2部分:参数估计 ============

def loglik_individual(theta, choices, P, X):
    """计算个体选择的对数似然"""
    alpha = theta[0]
    beta_X = theta[1]
    xi = theta[2:]

    V = alpha * np.log(P) + beta_X * X.flatten() + xi

    # Logit概率
    exp_V = np.exp(V - np.max(V))
    prob = exp_V / np.sum(exp_V)

    # 对数似然
    ll = 0
    for choice in choices:
        ll += np.log(prob[choice])

    return -ll  # 最小化负对数似然

# 初始值
theta_init = np.array([-0.1, 0.5, 0.3, -0.2, 0.1])

# 优化
result = minimize(loglik_individual, theta_init,
                  args=(choices, P, X),
                  method='BFGS')

theta_est = result.x
print(f"估计的参数:{theta_est}")
print(f"真实参数:{np.array([-0.1, 0.5, 0.3, -0.2, 0.1])}")

# ============ 第3部分:验证映射 ============

print("\n验证参数空间到数据空间的映射:")

# 用估计的参数预测市场份额
alpha_est = theta_est[0]
beta_est = theta_est[1]
xi_est = theta_est[2:]

V_pred = alpha_est * np.log(P) + beta_est * X.flatten() + xi_est
exp_V = np.exp(V_pred - np.max(V_pred))
pred_share = exp_V / np.sum(exp_V)

print(f"观测市场份额:{observed_share}")
print(f"预测市场份额:{pred_share}")
print(f"误差:{np.abs(observed_share - pred_share)}")

# ============ 第4部分:反演不可观测特征 ============

print("\n反演不可观测特征:")

# 从市场份额反演δ
delta = np.log(observed_share)

# 减去观测特征的贡献
V_obs = alpha_est * np.log(P) + beta_est * X.flatten()

# 反演ξ
xi_inferred = delta - V_obs

print(f"真实ξ:{theta_true['xi']}")
print(f"推断ξ:{xi_inferred}")

# ============ 第5部分:反事实分析 ============

print("\n反事实:如果产品1降价10%")

P_new = P.copy()
P_new[0] = P[0] * 0.9  # 产品1降价10%

# 新的市场份额
V_new = alpha_est * np.log(P_new) + beta_est * X.flatten() + xi_inferred
exp_V_new = np.exp(V_new - np.max(V_new))
new_share = exp_V_new / np.sum(exp_V_new)

print(f"原市场份额:{pred_share}")
print(f"降价后市场份额:{new_share}")
print(f"产品1的份额变化:{(new_share[0]-pred_share[0])*100:.1f}%")
print(f"产品2的份额变化:{(new_share[1]-pred_share[1])*100:.1f}%")
print(f"产品3的份额变化:{{(new_share[2]-pred_share[2])*100:.1f}%")

这个例子展示了什么:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
第1部分:参数空间 → 数据空间
给定真实参数θ_true,模型生成真实数据(市场份额)

第2部分:数据空间 → 参数空间(困难方向)
从观测数据,通过MLE估计参数
这就是结构估计的核心

第3部分:验证映射
用估计的参数预测数据,与实际观测对比

第4部分:不可观测特征的反演
从市场份额"读出"隐藏的品质ξ

第5部分:反事实分析
改变价格,看新均衡如何变化

整个流程就是:
参数空间 ← 估计 ← 数据空间
   验证
  反事实

最终总结

作为一个博士生,你现在应该理解:

 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
1. 参数空间的定义:
   - 理论上哪些参数存在(来自经济学模型)
   - 其中哪些可以识别(可以从数据推出)
   - 其中哪些需要估计(无法从理论或一阶条件推出)

2. 数据空间的结构:
   - 什么数据可用(个体级vs市场级)
   - 这些数据与参数的关系(通过什么映射h)
   - 映射是否唯一(参数是否可识别)

3. 从数据到参数的方向:
   - 正向映射h:参数→数据预测(直接)
   - 反向映射h⁻¹:数据→参数估计(困难,需要优化)

4. 具体的估计方法:
   - 为什么选择MLE而非GMM或其他
   - 如何处理内生性
   - 如何反演不可观测变量

5. 完整的研究流程:
   - 从问题出发,设定参数空间
   - 根据可用数据确定哪些参数可估计
   - 选择恰当的估计方法
   - 验证结果的合理性
   - 进行敏感性和反事实分析

有了这些深层理解,你就能:
✓ 熟练设计自己的结构估计
✓ 理解为什么某个步骤这样做
✓ 诊断和解决问题
✓ 进行高质量的研究

这就是从一个小白到掌握结构估计方法论的完整路径。

使用 Hugo 构建
主题 StackJimmy 设计