课程目录 · 已完成 0 / 7 个模块
  1. ⌂课程首页
  2. 1何时需要结构模型
  3. 2模型的设定
  4. 3数学预备知识
  5. 4估计方法
  6. 5发展经济学中的应用
  7. 6实例:农机服务采纳模型
  8. 6Alogit 结构模型的推导与估计
  9. 6B结构方程模型
  10. 7自测与阅读建议
模块 6A

logit 结构模型的推导与估计

本章以模块 6 的农机服务采纳模型为例,依次讨论模型的经济含义、logit 选择概率的推导、似然函数的计算、Newton 迭代、参数识别、估计结果的解释、经济量的计算、模型拟合、反事实分析和蒙特卡洛检验。文中数值均为配套程序的实际输出。

本章内容

6A.1–6A.2 模型净收益、效用差与 logit 概率
6A.3–6A.4 估计似然函数与 Newton 迭代
6A.5–6A.7 识别与解释代金券的作用、估计结果与经济量
6A.8–6A.10 检验与应用模型拟合、补贴反事实与蒙特卡洛检验
数据说明:本章使用模拟数据 mechanization_sim.csv(700 户,代金券随机分配),其数据生成过程和随机数种子与模块 6 的 Python 程序相同。“真值”是模拟时设定的参数,只用于检验估计方法,不是对真实农户的估计。
6A.1

模型的经济含义

农户在购买农机服务与自己作业(或雇工)之间选择。购买服务可以节省劳动、保证农时,但需要付费并承担联系服务的成本。两者之差为购买的净收益;净收益大于零时,农户购买服务。

可观测因素

价格、地块规模、距离、服务质量

这些变量可由调查数据观测,构成净收益中可解释的部分。

不可观测因素

偏好、当天是否忙、与机手的交情

研究者观测不到这些因素,将其视为随机项。因此,可观测条件相同的两户可能作出不同的选择。

观测到的结果

是否购买

数据中只有选择结果,没有净收益本身。结构估计的任务是由选择结果推断净收益中各因素的权重。

与回归的区别:回归描述价格与购买之间的统计关系;结构模型还要设定农户按什么规则选择才会产生观测到的数据。只有设定了决策规则,才能在未曾实施的政策下计算农户的选择。
6A.2

选择概率的推导

净收益的分解

是扣除代金券后的净价格。 是行为参数;规模、距离和价格是农户的状态变量或政策变量,不是参数。

随机项的分布与选择概率

若 服从标准 logistic 分布(等价于“买”和“不买”两个选项各带一个独立的 I 型极值误差,二者之差就是 logistic),则 有闭式解:

这条 S 形曲线把任意实数 压到 0–1 之间: 时概率 0.5; 时约 0.18; 时约 0.82。

两项归一化

位置不识别

给“买”和“不买”的效用同时加 10,选择不变。所以只能识别效用差,“不买”的效用被归一化为 0。

尺度不识别

把所有效用乘以 2,排序不变。logit 把 的方差固定为 ,所以 的单位是“相对于随机项标准差”。系数的比值(如 )和概率才有不依赖尺度的含义。

6A.3

似然函数的计算

似然函数是给定参数时观测到的选择出现的概率。买了的农户贡献 ,没买的贡献 :

数据前三户都没有购买()。比较两组候选参数:

前三户在两组参数下的对数似然贡献(代码 STEP 1 输出)
农户yθA=全 0:VP(买)贡献θB=真值:VP(买)贡献
100.0000.500−0.693−1.2510.222−0.252
200.0000.500−0.693−0.9570.277−0.325
300.0000.500−0.693−1.5700.172−0.189
三户合计−2.079−0.766
全样本 700 户−485.203−300.946

手算第 1 户(θB):,没买,所以贡献 。θB 下该户购买的概率较低,与观测结果一致,因此其对数似然贡献的绝对值较小。

说明:离散选择模型的对数似然值为负,越接近 0 表示参数对数据的解释越好。最大似然估计量是使对数似然函数取最大值的 θ。
6A.4

Newton 迭代

对 求一阶和二阶导数,分别得到 score(梯度)和 Hessian 矩阵:

score 等于预测误差 乘以特征。若高价农户实际买得比预测多,score 会推动 的估计值增大(绝对值减小)。在最大值处,各特征与预测误差的乘积之和均为零,即一阶条件。

从 θ=0 出发的 Newton 迭代(代码 STEP 2 输出)
迭代123456
ℓ(θ)−309.320−299.431−298.934−298.932−298.932−298.932
max|Δθ|0.8850.6650.2270.0177.9e−51.7e−9

logit 模型的对数似然函数是凹函数,最大值唯一,因此迭代几步即收敛。更复杂的结构模型的目标函数可能有多个局部极值,需要用不同初值重复估计(见模块 3 和模块 4)。

6A.5

价格系数的识别:随机代金券

如果服务好的机手要价也高,而研究者看不到服务好坏 ,那么“高价”与“受欢迎”会一起出现,直接回归会把质量的作用算到价格头上。代金券随机发放,让同一标价下的农户面对不同净价格,这部分价格变化与 无关。

另一份模拟数据(N=5000,价格与未观测质量正相关):真 α = −1.40(代码 STEP 8)
估计方式α̂说明
只含净价格的 logit+0.462符号为正,与需求规律相反
控制标价,只利用代金券造成的净价格差异−1.355(SE 0.199)与真值相差不到一个标准误
把 ξ 作为解释变量(不可行估计)−1.470实际数据中 ξ 不可观测,仅作对照
识别与数值优化:第一行的估计同样收敛,标准误也很小,但估计值有严重偏误。识别问题不能通过数值优化解决。对每个参数都应说明它由数据中的哪种变化决定,以及这种变化为何是外生的。
6A.6

估计结果的解释

700 户模拟数据的 MLE 结果(Python、R glm、R optim 三种实现一致到小数点后三位)
参数估计值SEzp95% CI真值
常数 β₀0.1000.6040.170.868[−1.083, 1.283]−0.80
净价格 α−1.7950.382−4.70<0.001[−2.544, −1.045]−1.40
ln(1+规模) β0.8220.3292.500.013[0.177, 1.467]0.75
距离 γ−0.2560.062−4.12<0.001[−0.378, −0.134]−0.18
质量 δ0.3930.5110.770.441[−0.608, 1.394]0.90
估计值:各变量在效用差中的系数。α = −1.795 表示净价格提高 1 个单位,购买的效用差下降 1.795(以随机项尺度计),而不是购买概率下降 1.795。
SE 与 CI:来自信息矩阵 的对角线。五个真值都在 95% 置信区间内,即估计值与真值的差异在抽样误差范围内。
不显著与无影响:质量的真值为 0.90,但购买的农户只占 17%,质量的变化幅度也小,700 户的样本不足以将其与 0 区分。这是估计精度的问题,并非参数不可识别。
整体指标:ℓ(θ̂) = −298.932,仅截距模型 −323.832;LR = 49.80(df=4,p≈4×10⁻¹⁰)。McFadden 伪 R² = 0.077,这在离散选择模型中是常见的数值;它既不说明拟合差,也不是一种检验。
6A.7

经济量的计算

代码 STEP 3/4 输出
经济量数值含义
净价格平均边际效应−0.240净价格每升 0.1 个单位,购买概率平均约降 2.4 个百分点
平均价格弹性−1.646净价格升 1%,购买概率约降 1.6%(相对于自身水平)
距离的价格等价 γ/α0.143(delta-method SE 0.045)距离增加 1 公里对效用的影响,相当于价格上涨 0.143 个单位;该比值与 logit 的尺度无关
胜算比exp(0.1α) = 0.836净价格升 0.1 个单位,购买胜算乘以 0.836

价格单位沿用原教学数据的设定(标价在 0.8–1.8 之间),没有对应真实货币单位;用于真实数据时应换成“元/亩”等明确单位。

6A.8

模型拟合

按净价格四分位
组观测预测
Q1 最便宜0.2740.272
Q20.1770.190
Q30.1710.153
Q4 最贵0.0740.083
按距离三等分
组观测预测
近0.2350.250
中0.1850.168
远0.1030.105

两张表中预测值与观测值之差都在几个百分点以内。应注意,含常数项的 logit 模型的总体预测采纳率必然等于观测值(都是 0.174),因此报告总体平均值没有意义,需要分组比较。更严格的检验是用留出样本或实验组作样本外预测(见模块 2 和模块 5 的 PROGRESA 例子)。

6A.9

反事实分析:以普惠价格补贴替代代金券

反事实采纳率与每户预期财政成本(代码 STEP 6;95% 区间来自 2000 次 Krinsky–Robb 参数抽样)
补贴率 s采纳率95% 区间每户财政成本每新增 1 户采纳的成本
0%0.128[0.106, 0.160]0.000—
10%0.153[0.130, 0.183]0.0180.741
20%0.181[0.156, 0.212]0.0430.822
30%0.214[0.182, 0.252]0.0780.910
50%0.293[0.233, 0.363]0.1821.104
基准:s=0 表示取消代金券、所有农户按标价付费,此时采纳率为 0.128;现行政策(一半农户持 30% 的代金券)下采纳率为 0.174。比较政策时应先说明基准。
边际成本递增:每多吸引 1 户的成本从 0.74 升到 1.10,原因是补贴也支付给了没有补贴时也会购买的农户。
外推与区间宽度:s=50% 时 33% 农户的新净价格低于样本中最低的净价格(0.564),区间宽度约为 s=10% 时的 2.5 倍。外推越远,区间越宽。
局部均衡:标价、服务供给与质量保持不变。若补贴使标价上升或造成农忙时排队,上表会高估采纳率。

R 与 Python 的反事实点估计完全相同;区间因随机抽样略有差别(如 s=20% 时 R 为 [0.156, 0.214])。

6A.10

蒙特卡洛检验

用已知真值重复生成 300 份 N=700 的数据,每份都重新估计。若估计量无偏、标准误正确,平均估计应接近真值,95% CI 覆盖真值的比例应接近 95%。

代码 STEP 7 输出
参数真值平均估计偏差估计的标准差95% CI 覆盖率
常数−0.80−0.7460.0540.6320.957
净价格−1.40−1.428−0.0280.3420.963
ln(1+规模)0.750.7590.0090.3190.967
距离−0.18−0.182−0.0020.0630.933
质量0.900.833−0.0670.4980.957

结果表明估计方法和程序是正确的。在单个样本中, α̂ = −1.795 偏离真值 0.4,约为抽样标准差(0.34)的 1.2 倍,属于正常抽样波动。质量系数的抽样标准差 0.50,说明在这一样本量下该系数的估计精度较低。

6A.11

结构估计与结构方程模型的区别

中文里两者都简称“结构”,但研究对象不同:结构估计从经济行为(效用、约束、均衡)出发,估计可用于反事实的行为参数;结构方程模型从潜变量(态度、意愿等不可直接测量的构念)出发,用多个问卷题项测量它们,再估计潜变量之间的路径。农业经济学文献中两种方法都很常见,详见 模块 6B:结构方程模型。

6A.12

配套代码与运行方法

文件内容运行情况
00_make_data.py生成 data/mechanization_sim.csv(与原脚本同一 DGP、同一 seed)已运行
01_structural_logit.pyPython:手算、Newton、MLE 表、经济量、拟合、反事实区间、蒙特卡洛、内生性演示已运行(numpy 2 / scipy 1.16 / statsmodels 0.14)
02_structural_logit.RR:optim 手写似然 + glm 对照、AME、delta method、拟合、Krinsky–Robb已运行(R 4.5.0)
03_structural_logit.doStata:logit、margins、nlcom、predictnl 反事实未运行(无 Stata 环境,未经验证)
python 00_make_data.py          # 生成共用数据
python 01_structural_logit.py   # 依赖 numpy scipy pandas statsmodels
Rscript 02_structural_logit.R   # 依赖 MASS(R 自带)
stata -b do 03_structural_logit.do
6A.13

习题

1. 为什么不能说“价格每升 1 单位,购买概率降 1.795”?

1.795 是效用差(以随机项尺度计)的变化;概率变化还要乘以 。在本样本中平均只有 0.240。

2. 质量系数不显著,能否删掉它?

不能仅凭显著性删掉。真值是 0.90,不显著来自精度不足;若质量与价格相关,删掉它还会使价格系数产生遗漏变量偏误(见 6A.5 节)。

3. 补贴 20% 让采纳率从 0.128 升到 0.181,能直接写进政策建议吗?

只能表述为“在标价和供给不变、价格外生的条件下”的预测,并报告区间 [0.156, 0.212];还应说明基准是“取消代金券”,以及供给反应可能使结果偏高。

6A.14

参考文献

  • McFadden, D. (1974). Conditional logit analysis of qualitative choice behavior. In P. Zarembka (Ed.), Frontiers in Econometrics (pp. 105–142). Academic Press.
  • Train, K. (2009). Discrete Choice Methods with Simulation (2nd ed.). Cambridge University Press. 第 3 章 logit。作者书页
  • Cameron, A. C., & Trivedi, P. K. (2005). Microeconometrics: Methods and Applications. Cambridge University Press. 第 14 章二元结果模型。
  • Wooldridge, J. M. (2010). Econometric Analysis of Cross Section and Panel Data (2nd ed.). MIT Press. 第 13、15 章。
  • Krinsky, I., & Robb, A. L. (1986). On approximating the statistical properties of elasticities. Review of Economics and Statistics, 68(4), 715–719. doi:10.2307/1924536
  • Berry, S. T. (1994). Estimating discrete-choice models of product differentiation. RAND Journal of Economics, 25(2), 242–262. doi:10.2307/2555829
  • Low, H., & Meghir, C. (2017). The use of structural models in econometrics. Journal of Economic Perspectives, 31(2), 33–58. doi:10.1257/jep.31.2.33
  • Reiss, P. C., & Wolak, F. A. (2007). Structural econometric modeling: Rationales and examples from industrial organization. Handbook of Econometrics, Vol. 6A, 4277–4415. doi:10.1016/S1573-4412(07)06064-3
  • 软件文档:SciPy optimize.minimize · statsmodels Logit · Stata logit · Stata margins

学习要求:能够根据 logit 估计结果解释系数、平均边际效应、价格等价、模型拟合和带置信区间的反事实结果。