经济与商务实证研究方法

第 7 周:结构估计应用——需求、均衡、反事实与人工智能辅助工作流

陈志远

中国人民大学商学院

2026-06-05

上节课回顾

结构估计基础

  • 结构模型由原语、决策、均衡、观测方程组成
  • 估计目标可写成 NLS、MLE、GMM 或 SMM
  • 固定点、数值梯度、蒙特卡洛模拟是结构估计的日常工具
  • 先模拟模型,再估计参数,最后做反事实

本节课的问题

估计出偏好和成本后,如何回答“如果政策或市场结构改变,会发生什么”?

本讲路线图

五个应用模块

  1. 随机效用需求:从逻辑选择模型到随机系数
  2. 替代模式与弹性:模型如何决定反事实可信度
  3. 供应侧与合并模拟:从价格和份额恢复边际成本
  4. 战略模型与引力模型:进入、定价和贸易反事实
  5. 人工智能辅助结构工作流:提速但不替代识别判断

一、随机效用需求

需求估计为什么重要?

需求系统是很多结构研究的入口

  • 工业组织:市场力、合并、反垄断
  • 市场营销:产品定位、定价、促销
  • 贸易:进口竞争、关税、产品替代
  • 金融与平台:费率、补贴、两边市场

核心任务:从消费者选择中恢复偏好参数,并用这些参数预测新情景。

离散选择需求模型

消费者 i 对产品 j 的效用:

u_{ij} = \delta_j + \mu_{ij} + \varepsilon_{ij}

其中

\delta_j = x_j\beta - \alpha p_j + \xi_j

三层异质性

  • \delta_j:所有消费者共同看到的平均效用
  • \mu_{ij}:消费者异质性带来的偏好差异
  • \varepsilon_{ij}:模型未显式刻画的个体口味冲击

逻辑选择模型的聚合

\varepsilon_{ij} 服从第一型极值分布,则

s_j = \frac{\exp(\delta_j)} {1+\sum_{k=1}^{J}\exp(\delta_k)}

外部选项份额:

s_0 = \frac{1} {1+\sum_{k=1}^{J}\exp(\delta_k)}

提示

优点

逻辑选择模型可解释、可反演、计算快,是理解结构需求估计的第一块积木。

独立无关替代限制与替代模式

逻辑选择模型隐含:

\frac{s_j}{s_k} = \frac{\exp(\delta_j)}{\exp(\delta_k)}

这个比值不受其他产品影响。

红巴士 / 蓝巴士问题

如果新加入一个“蓝巴士”,标准逻辑选择模型会让它从所有产品按比例抢份额,而不是主要从“红巴士”抢份额。这会扭曲合并模拟和新产品预测。

随机系数:让消费者不同

随机系数模型允许价格敏感度或特征偏好因人而异:

u_{ij} = x_j\beta_i - \alpha_i p_j + \xi_j + \varepsilon_{ij}

例如

\alpha_i = \alpha + \sigma_\alpha v_i

为什么有用

替代关系来自消费者异质性:价格敏感消费者在低价产品之间替代,质量敏感消费者在高质量产品之间替代。

用模拟计算市场份额

随机系数下没有简单闭式聚合:

s_j(\theta) = \int \frac{\exp(\delta_j+\mu_{ij})} {1+\sum_k\exp(\delta_k+\mu_{ik})} dF(v_i)

R 个模拟消费者近似:

\hat{s}_j(\theta) = \frac{1}{R}\sum_{r=1}^{R} \frac{\exp(\delta_j+\mu_{rj})} {1+\sum_k\exp(\delta_k+\mu_{rk})}

模拟异质性如何改变份额

二、弹性与供应侧

价格弹性

自价格弹性:

\epsilon_{jj} = \frac{\partial s_j}{\partial p_j} \frac{p_j}{s_j}

交叉价格弹性:

\epsilon_{jk} = \frac{\partial s_j}{\partial p_k} \frac{p_k}{s_j}

经济含义

弹性矩阵告诉我们:当某个产品涨价,需求从哪里流走,又流向哪里。

逻辑选择弹性的限制

标准逻辑选择模型下:

\frac{\partial s_j}{\partial p_k} = \alpha s_j s_k \quad (j\neq k)

交叉替代主要由产品 k 的份额决定。

反事实风险

如果现实中的替代发生在“相似产品”之间,而模型只按份额分配替代,合并模拟会系统性失真。

供应侧:从价格恢复边际成本

假设单产品企业进行伯特兰价格竞争:

\max_{p_j} (p_j-mc_j)M s_j(p)

一阶条件:

s_j(p) + (p_j-mc_j)\frac{\partial s_j}{\partial p_j} =0

因此

mc_j = p_j + \frac{s_j(p)} {\partial s_j(p)/\partial p_j}

多产品企业的定价

若企业 f 拥有多个产品,定价一阶条件写成矩阵形式:

\mathbf{s}(p) + \Delta(p)(p-mc)=0

其中 \Delta_{jk} 取决于产品 j,k 是否属于同一企业:

\Delta_{jk} = \mathbb{1}\{j,k \in \mathcal{J}_f\} \frac{\partial s_k}{\partial p_j}

mc = p + \Delta(p)^{-1}\mathbf{s}(p)

合并模拟的逻辑

三步

  1. 用需求估计恢复 \hat{\theta}_D
  2. 用合并前一阶条件恢复 \widehat{mc}
  3. 改变所有权矩阵,重新解伯特兰定价固定点

合并后的价格满足:

\mathbf{s}(p^{new};\hat{\theta}_D) + \Delta^{new}(p^{new})(p^{new}-\widehat{mc}) =0

一个极简反事实代码骨架

def demand_shares(price, theta):
    delta = theta["beta"] * x - theta["alpha"] * price + xi
    exp_delta = np.exp(delta)
    return exp_delta / (1 + exp_delta.sum())

def pricing_residual(price, mc, ownership, theta):
    s = demand_shares(price, theta)
    deriv = demand_derivative(price, theta)
    Delta = ownership * deriv.T
    return s + Delta @ (price - mc)

price_new = solve_root(
    lambda p: pricing_residual(p, mc_hat, ownership_after, theta_hat),
    price_before
)

三、战略模型与贸易反事实

简单进入博弈

企业 i 是否进入市场:

a_i = \mathbb{1}\{\pi_i(a_{-i},X;\theta)+\varepsilon_i \geq 0\}

均衡要求每个企业的进入决策都是最优反应。

识别问题

我们观察到进入结果,但看不到每家企业的进入成本、私人信息和未实现反事实利润。

定价竞争:古诺与伯特兰

古诺双寡头中,企业选择产量:

\max_{q_i} P(q_i+q_{-i})q_i - C_i(q_i)

均衡由两个一阶条件同时决定:

f_i(q) = P(Q) + P'(Q)q_i - C_i'(q_i) =0

这就是 W6 中非线性方程求解的直接应用。

引力模型:结构与反事实

传统引力方程:

x_{ij} = \alpha + \alpha_1 y_i + \alpha_2 y_j + \theta d_{ij} + \gamma \delta_{ij} + \epsilon_{ij}

Anderson-van Wincoop 的结构逻辑:

x_{ij} = \frac{y_i y_j}{y^W} \left( \frac{t_{ij}}{P_iP_j} \right)^{1-\sigma}

多边阻力

贸易流取决于 i,j 之间的贸易成本,也取决于它们面对所有其他伙伴的贸易成本。

关税反事实

若关税下降改变 t_{ij},不能只替换一个回归变量。

需要重新求解:

P_j^{1-\sigma} = \sum_i P_i^{\sigma-1}\theta_i t_{ij}^{1-\sigma}

再计算新的贸易流:

x_{ij}^{new} = \frac{y_i y_j}{y^W} \left( \frac{t_{ij}^{new}}{P_i^{new}P_j^{new}} \right)^{1-\sigma}

减少形式 vs 结构反事实

同一问题 减少形式做法 结构做法
关税下降 估计关税对贸易流的平均影响 改变贸易成本并求解新均衡
平台补贴 DiD 估计补贴对交易量影响 模拟两边市场价格和参与
合并 研究既有合并案例 改变所有权矩阵并解新价格
新产品 找类似历史进入事件 加入选择集并重新聚合需求

互补而非替代

减少形式结果常用于验证结构模型;结构模型用于外推到未发生的政策情景。

四、人工智能辅助结构工作流

人工智能可以提高哪些环节的速度?

高收益环节

  • 从论文公式生成目标函数代码
  • 写市场份额模拟和蒙特卡洛抽样
  • 为内层固定点添加收敛日志
  • 用有限差分检查解析梯度
  • 比较 scipy.optimize 中不同求解器的失败模式

人工智能最适合做“工程加速器”,不适合做“经济假设裁判”。

一份结构估计审计清单

每次结构估计都要留下这些记录

  • 参数、初值、约束和缩放
  • 内层求解器的容差、最大迭代、失败次数
  • 蒙特卡洛抽样的种子和维度
  • 目标函数在最优点附近的稳定性
  • 识别参数的核心变异来源
  • 反事实改变了哪些原语,哪些对象保持不变

Copilot / 大语言模型提示模板

# 提示示例:
# 写一个 Python 函数,计算逻辑选择模型的市场份额和解析价格导数。
# 使用向量化 NumPy,加入维度检查,并同时返回份额和导数矩阵。

提示

好提示的结构

说明模型、输入形状、输出形状、数值稳定要求和要通过的单元测试。

本讲总结

本周带走的东西

  1. 需求估计的关键不是份额公式,而是替代模式和价格内生性
  2. 合并、关税、补贴等反事实都要求重新求解系统
  3. 人工智能可以显著加快结构编码,但不能替代对识别和经济假设的判断

期末项目建议:如果你的问题涉及“未发生的政策情景”,请认真考虑是否需要结构模型。