Logit 与 Probit 模型对比:从 IIA 特性到 3 种交通方式选择场景的 Python 模拟
Logit 与 Probit 模型对比:从 IIA 特性到 3 种交通方式选择场景的 Python 模拟
在交通规划和行为经济学领域,离散选择模型是分析个体决策行为的核心工具。当我们面对私家车、公交车、地铁等多种交通方式时,如何量化不同因素对选择概率的影响?Logit 和 Probit 作为两种经典的非集计模型,提供了不同的解决方案。本文将通过完整的 Python 实现,带你深入理解它们的数学本质、适用场景和实操差异。
1. 模型原理与数学对比
离散选择模型的核心是随机效用理论——假设个体总是选择效用最大的方案。效用由可观测的固定项和不可观测的随机项组成:
其中,Logit 和 Probit 的根本区别在于对随机项 ε 的分布假设:
| 特性 | Logit 模型 | Probit 模型 |
|---|---|---|
| 随机项分布 | 独立同分布的 Gumbel 分布 | 多元正态分布 (MVN) |
| 协方差处理 | 假设各选项完全独立 | 允许指定任意协方差结构 |
| IIA 特性 | 存在(选择比与第三方无关) | 不存在(考虑选项相关性) |
| 计算复杂度 | 闭式解,计算简单 | 需要数值积分,计算复杂 |
| 适用场景 | 选项间差异明显 | 选项存在重叠或相似特征 |
**IIA(无关选项独立性)**是 Logit 的典型限制。例如当新增的共享单车与现有公交车高度相关时,Logit 会高估新选项的市场份额。Probit 通过协方差矩阵能更准确地反映这种替代关系。
数学推导:Logit 的选择概率公式为 P_i = exp(V_i)/Σexp(V_j),而 Probit 需要计算多元正态分布的累积密度函数,通常用蒙特卡洛模拟求解。
2. Python 模拟环境搭建
我们使用 statsmodels 和 biogeme 库实现模型,模拟包含 1000 个虚拟出行者的数据集:
3. 模型实现与结果对比
3.1 Logit 模型实现
采用多项 Logit 模型(MNL)进行估计:
关键参数估计结果示例:
3.2 Probit 模型实现
使用 biogeme 库处理更复杂的协方差结构:
3.3 结果可视化对比
通过市场占有率预测展示模型差异:
当引入与公交车高度相似的新交通方式(如电动巴士)时,两种模型的预测差异会更加明显:
- Logit 会均分原有公交车的份额给新旧选项
- Probit 能保持公交类别的整体份额,仅微调内部比例
4. 模型选择决策框架
根据数据特征选择模型的实用指南:
实际项目中的折中方案:
-
嵌套 Logit:将相关选项归入同一层级
PYTHON# 使用biogeme实现嵌套Logitnest_car = OneNestedForOneAlternative('car', 1, 'lambda_car')nest_pt = OneNestedForSeveralAlternatives('pt', ['bus','metro'], 'lambda_pt') -
混合 Logit:允许参数随机变化
PYTHON# 随机参数设置示例B_TIME_RND = Beta('B_TIME_RND', 0, None, None, 1)B_TIME = B_TIME_RND * Normal(0, 0.1) -
模型组合:用 Logit 快速原型,Probit 做最终验证
在交通规划项目中,我们通常会先用 Logit 进行快速分析,当发现选项间存在明显相关性(如公交与地铁的换乘关系)时,再切换到 Probit 或嵌套模型。记得始终用 Hold-out 测试集验证模型的预测准确性。