[ PROMPT_NODE_27450 ]
discrete_choice
[ SKILL_DOCUMENTATION ]
# 离散选择模型参考
本文档提供了 statsmodels 中离散选择模型的全面指南,包括二元、多项式、计数和定序模型。
## 概述
离散选择模型处理以下类型的结果:
- **二元 (Binary)**:0/1,成功/失败
- **多项式 (Multinomial)**:多个无序类别
- **定序 (Ordinal)**:有序类别
- **计数 (Count)**:非负整数
所有模型均使用最大似然估计,并假设误差项独立同分布 (i.i.d.)。
## 二元模型
### Logit (逻辑回归)
对二元结果使用逻辑分布。
**何时使用:**
- 二元分类(是/否,成功/失败)
- 二元结果的概率估计
- 可解释的优势比 (Odds ratios)
**模型**:P(Y=1|X) = 1 / (1 + exp(-Xβ))
python
import statsmodels.api as sm
from statsmodels.discrete.discrete_model import Logit
# 准备数据
X = sm.add_constant(X_data)
# 拟合模型
model = Logit(y, X)
results = model.fit()
print(results.summary())
**解释:**
python
import numpy as np
# 优势比
odds_ratios = np.exp(results.params)
print("优势比:", odds_ratios)
# X 每增加 1 个单位,优势乘以 exp(β)
# OR > 1: 增加成功优势
# OR 0.5).astype(int)
# 自定义阈值
threshold = 0.3
predictions_custom = (probs > threshold).astype(int)
# 新数据预测
X_new = sm.add_constant(X_new_data)
new_probs = results.predict(X_new)
**模型评估:**
python
from sklearn.metrics import (classification_report, confusion_matrix,
roc_auc_score, roc_curve)
# 分类报告
print(classification_report(y, predictions))
# 混淆矩阵
print(confusion_matrix(y, predictions))
# AUC-ROC
auc = roc_auc_score(y, probs)
print(f"AUC: {auc