以农户是否购买农机作业服务为例:模型设定、选择概率、似然函数、识别、估计结果的解释、反事实分析与蒙特卡洛检验
Xiaoshi Zhou · 中国农业大学经济管理学院 · 数值均为配套程序的输出 · 模拟数据
净收益与选择
效用差与 logit 概率
三户农户的数值算例
Newton 迭代
随机代金券的作用
估计值、SE、CI、LR
AME、弹性、价格等价
分组比较
补贴效果及其区间
估计量的偏差与覆盖率
由调查数据观测,构成净收益中可解释的部分
研究者观测不到,视为随机项;可观测条件相同的两户可能作出不同选择
结构估计由选择结果推断净收益中各因素的权重
α 价格敏感度(应为负)、β 规模收益、γ 距离成本、δ 质量偏好
净价格 pi(标价 × (1 − 代金券))、规模、距离、质量
εi 取标准 logistic 分布:等价于“买 / 不买”各带一个独立的 I 型极值误差,二者之差就是 logistic。
S 形曲线把任意 Vi 映射到 0–1 之间:
给“买”和“不买”的效用同时加 10,选择不变。只能识别效用差:“不买”归一化为 0。
所有效用乘以 2,排序不变。logit 固定 Var(ε)=π2/3,所以 α 的单位是“随机项标准差”。
| 农户 | y | θA=0:V | P(买) | 贡献 | θB=真值:V | P(买) | 贡献 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 0.000 | 0.500 | −0.693 | −1.251 | 0.222 | −0.252 |
| 2 | 0 | 0.000 | 0.500 | −0.693 | −0.957 | 0.277 | −0.325 |
| 3 | 0 | 0.000 | 0.500 | −0.693 | −1.570 | 0.172 | −0.189 |
| 三户合计 | −2.079 | −0.766 | |||||
| 全样本 700 户 | −485.203 | −300.946 | |||||
第 1 户:P=1/(1+e1.251)=0.222;没买 → ln(1−0.222)=−0.252。预测与观测结果越一致,对数似然贡献的绝对值越小。
| 迭代 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| ℓ(θ) | −309.320 | −299.431 | −298.934 | −298.932 | −298.932 | −298.932 |
| max|Δθ| | 0.885 | 0.665 | 0.227 | 0.017 | 7.9e−5 | 1.7e−9 |
预测误差 yi−Pi × 特征。高价农户买得比预测多 → 推动 α 变得不那么负。
logit 的对数似然函数是凹函数,最大值唯一;复杂结构模型可能有多个局部极值,需用多组初值。
服务质量高的机手要价也高,而研究者观测不到服务质量 ξ,因此高价与高需求同时出现。随机代金券使标价相同的农户面对不同的净价格。
| 估计方式 | α̂ | 说明 |
|---|---|---|
| 只含净价格的 logit | +0.462 | 符号为正,与需求规律相反 |
| 控制标价,只利用代金券造成的净价格差异 | −1.355(SE 0.199) | 与真值相差不到一个 SE |
| 把 ξ 作为解释变量(不可行估计) | −1.470 | ξ 实际不可观测,仅作对照 |
| 参数 | 估计值 | SE | z | p | 95% CI | 真值 |
|---|---|---|---|---|---|---|
| 常数 β₀ | 0.100 | 0.604 | 0.17 | 0.868 | [−1.083, 1.283] | −0.80 |
| 净价格 α | −1.795 | 0.382 | −4.70 | <0.001 | [−2.544, −1.045] | −1.40 |
| ln(1+规模) β | 0.822 | 0.329 | 2.50 | 0.013 | [0.177, 1.467] | 0.75 |
| 距离 γ | −0.256 | 0.062 | −4.12 | <0.001 | [−0.378, −0.134] | −0.18 |
| 质量 δ | 0.393 | 0.511 | 0.77 | 0.441 | [−0.608, 1.394] | 0.90 |
ℓ(θ̂) = −298.932;仅截距 ℓ₀ = −323.832;LR = 49.80(df = 4,p ≈ 4×10⁻¹⁰);McFadden 伪 R² = 0.077
α = −1.795:净价格提高 1 单位,效用差下降 1.795(以随机项尺度计),而不是购买概率下降 1.795。
[−H(θ^)]−1 对角线元素的平方根。五个真值都在 95% CI 内。
质量的真值为 0.90,但购买率仅 17%、质量变化幅度小,700 户不足以将其与 0 区分。这是精度问题。
0.077 在离散选择模型中是常见的数值,它不是拟合检验。应看 LR 检验和分组拟合。
| 经济量 | 数值 | 含义 |
|---|---|---|
| 净价格平均边际效应 | −0.240 | 净价格 +0.1 单位 → 购买概率平均约 −2.4 个百分点 |
| 平均价格弹性 | −1.646 | 净价格 +1% → 购买概率约 −1.6% |
| 距离的价格等价 γ/α | 0.143(SE 0.045) | 距离增加 1 公里相当于价格上涨 0.143 单位;与尺度无关 |
| 胜算比 | 0.836 | 净价格 +0.1 单位,购买胜算 × exp(0.1α) |
价格单位沿用模拟数据的设定(标价 0.8–1.8),实际研究应使用“元/亩”等明确单位。SE 用 delta method。
| 组 | 观测 | 预测 |
|---|---|---|
| Q1 最便宜 | 0.274 | 0.272 |
| Q2 | 0.177 | 0.190 |
| Q3 | 0.171 | 0.153 |
| Q4 最贵 | 0.074 | 0.083 |
| 组 | 观测 | 预测 |
|---|---|---|
| 近 | 0.235 | 0.250 |
| 中 | 0.185 | 0.168 |
| 远 | 0.103 | 0.105 |
| s | 采纳率 | 95% 区间 | 每户成本 | 每新增 1 户成本 |
|---|---|---|---|---|
| 0% | 0.128 | [0.106, 0.160] | 0.000 | — |
| 10% | 0.153 | [0.130, 0.183] | 0.018 | 0.741 |
| 20% | 0.181 | [0.156, 0.212] | 0.043 | 0.822 |
| 30% | 0.214 | [0.182, 0.252] | 0.078 | 0.910 |
| 50% | 0.293 | [0.233, 0.363] | 0.182 | 1.104 |
区间:2000 次 Krinsky–Robb 参数抽样
s = 0 是“取消代金券”,采纳率 0.128;现状(一半农户持 30% 券)是 0.174。
每多吸引 1 户:0.74 → 1.10。原因是补贴也支付给了没有补贴时也会购买的农户。
s = 50% 时区间宽 0.130,是 s = 10% 的约 2.5 倍;33% 农户的新净价格低于样本中最低的净价格 0.564。
标价、供给、质量不变。若补贴使标价上升或造成农忙时排队,表中采纳率偏高。
| 参数 | 真值 | 平均估计 | 偏差 | 估计的标准差 | 95% CI 覆盖率 |
|---|---|---|---|---|---|
| 常数 | −0.80 | −0.746 | 0.054 | 0.632 | 0.957 |
| 净价格 | −1.40 | −1.428 | −0.028 | 0.342 | 0.963 |
| ln(1+规模) | 0.75 | 0.759 | 0.009 | 0.319 | 0.967 |
| 距离 | −0.18 | −0.182 | −0.002 | 0.063 | 0.933 |
| 质量 | 0.90 | 0.833 | −0.067 | 0.498 | 0.957 |
| 结构估计 | 结构方程模型 SEM | |
|---|---|---|
| 出发点 | 经济行为:效用、约束、均衡 | 测量:多个题项反映一个潜变量 |
| 参数 | 价格敏感度、成本、贴现率 | 因子载荷、潜变量路径、误差方差 |
| 拟合的对象 | 选择概率(MLE)、矩(GMM/SMM) | 样本协方差 S vs 模型隐含 Σ(θ) |
| 识别来源 | 外生价格变化、实验、排除性限制 | 矩与参数计数、载荷归一化、“无路径”限制 |
| 典型用途 | 未实施政策的反事实 | 验证量表、检验 TPB 等理论路径 |
| 最常见误用 | 反事实超出数据支持 | 把截面路径系数读成因果 |
| 模型 | 题项 | 样本矩 p(p+1)/2 | 自由参数 | df |
|---|---|---|---|---|
| Holzinger–Swineford 三因子 CFA | 9 | 45 | 6 载荷 + 9 误差 + 6 因子方差/协方差 = 21 | 24 |
| TPB:ATT、SN、PBC → INT | 12 | 78 | 8 载荷 + 12 误差 + 6 外生方差/协方差 + 3 路径 + 1 扰动 = 30 | 48 |
| 指标 | lavaan 0.6-19 | semopy 2.3.11 | 参考(Hu & Bentler 1999) | 解释 |
|---|---|---|---|---|
| χ²(df) | 85.306(24) | 85.306(24) | p 不显著 | p < 0.001,但 χ² 对 N 敏感 |
| CFI / TLI | 0.931 / 0.896 | 0.931 / 0.896 | ≥ 0.95 | 未达严格标准 |
| RMSEA [90% CI] | 0.092 [0.071, 0.114] | 0.092 | ≤ 0.06 | 整个置信区间高于 0.06 |
| SRMR | 0.065 | — | ≤ 0.08 | 可以接受 |
| 路径 | 真值 | lavaan | semopy |
|---|---|---|---|
| ATT → INT | 0.434 | 0.426 | 0.426 |
| SN → INT | 0.193 | 0.201 | 0.201 |
| PBC → INT | 0.289 | 0.229 | 0.229 |
| INT 的 R² | 0.490 | 0.468 | |
| CR ≥ 0.7 | AVE ≥ 0.5 | |
|---|---|---|
| ATT | 0.776 | 0.537 |
| SN | 0.762 | 0.516 |
| PBC | 0.799 | 0.571 |
| INT | 0.859 | 0.671 |
χ²(48) = 44.369,p = 0.622;RMSEA = 0.000;SRMR = 0.022;CFI:lavaan 截断为 1.000,semopy 报告 1.002。截面问卷数据中的路径系数是条件相关,不能直接解释为因果效应。
| 文件 | 内容 | 运行情况 |
|---|---|---|
00_make_data.py | 生成 mechanization_sim.csv(与模块 6 的程序使用相同的 DGP 和随机数种子) | 已运行 |
01_structural_logit.py | 手算、Newton、MLE、经济量、拟合、反事实区间、蒙特卡洛、内生性演示 | 已运行 |
02_structural_logit.R | optim 手写似然 + glm 对照、delta method、Krinsky–Robb | 已运行(R 4.5.0) |
03_structural_logit.do | Stata:logit、margins、nlcom、predictnl | 未运行(无 Stata) |
04_sem_lavaan.R | HS 1939 CFA、修正指数、TPB 模拟 SEM、CR/AVE | 已运行(lavaan 0.6-19) |
05_sem_semopy.py | 同两份数据的 semopy 估计,对照 lavaan | 已运行(semopy 2.3.11) |
1.795 是效用差的变化;概率变化还要乘 P(1−P),本样本平均仅 0.240。
不能只看显著性:真值 0.90,不显著是精度不足;若质量与价格相关,删掉还会造成遗漏变量偏误。
只能写成“标价与供给不变、价格外生时”的预测,报告区间 [0.156, 0.212],并说明基准是取消代金券。
对应章节:结构估计入门 · 模块 6A、6B