案例数据
300 行银行个人贷款客户记录,因变量为是否违约(0/1),7 个候选自变量涵盖客户画像与贷款属性,演示二元 Logistic 回归全流程:模型整体显著性、各 X 的 OR、模型拟合优度(HL 检验)、分类正确率,结论为信用评分与月收入是核心风险因子。
| 文件名 | binarylogit.xlsx |
|---|---|
| 样本量 | 300 行(违约 50 例,违约率 16.7%) |
| 变量数 | 8 列(1 个 Y + 7 个 X) |
| 数据用途 | 银行风控建模:哪些客户/贷款属性会显著影响违约风险 |
| 变量说明 | 年龄、月收入、工龄、是否有房(0/1)、教育水平(1-4)、贷款金额、信用评分(300-850)、是否违约(Y,0=未违约 / 1=违约)。 |
完整案例
1. 背景
某商业银行小微贷款部门在贷后回顾时发现,部分客户出现逾期还款乃至违约,希望从已结清/已违约的历史样本中提炼违约风险预警模型。业务目标有三:①识别哪些客户与贷款属性对违约结果有显著影响(用于风控规则);②量化各风险因子的影响幅度(用 OR 解释"信用评分每降低 100 分,违约几率扩大多少倍");③用模型整体准确率与拟合优度评估该模型能否用于上线评分卡。本案例选择 300 个有完整记录的客户,使用二元 Logistic 回归分析。
2. 理论与公式
二元 Logistic 回归通过 logit 链接把 0/1 概率映射为连续的对数优势比,从而沿用线性模型形式建模。
p 为 Y=1(违约)的概率,左边为对数优势比(log-odds)。
Xj 每增 1 单位,事件几率变为原来的 OR 倍;OR>1 正向,OR<1 负向。
检验单个系数 βj=0,对应 p 值即各 X 的显著性。
3. 数据结构
每行 1 位客户,1 列 Y + 7 列 X。Y 为 0/1 二分类,连续型 X 已按真实业务量纲(元、年、分)记录;分类 X 用整数编码:
| 变量名 | 类型 | 取值范围 | 业务含义 |
|---|---|---|---|
| 是否违约 | 因变量 Y(二分类) | 0 / 1 | 0=未违约,1=出现 90+ 天逾期或核销 |
| 年龄 | 连续 | 22-65 岁 | 客户申请贷款时的年龄 |
| 月收入 | 连续 | 3000-21300 元 | 税后家庭月收入(自报,已交叉验证) |
| 工龄 | 连续 | 0-21.2 年 | 在当前单位的工作年限 |
| 是否有房 | 二分类 X | 0 / 1 | 0=无产权房,1=有自有产权房 |
| 教育水平 | 序数 | 1-4 | 1=高中以下 / 2=大专 / 3=本科 / 4=硕士及以上 |
| 贷款金额 | 连续 | 10000-500000 元 | 本次申请的贷款本金 |
| 信用评分 | 连续 | 464-850 | 人行征信中心评分(300=最差,850=最佳) |
违约率 16.7%(50/300)属典型不平衡分类问题,预测准确率应同时看 Y=0 与 Y=1 两类的分项准确率;分类型 X(是否有房、教育水平)已按数值编码,无需哑变量化即可直接进入模型。
4. 操作步骤
- 登录 SPSSzero,进入 工作台 → 上传
binarylogit.xlsx - 左侧方法栏 → 进阶方法 → 点击 二元 Logistic 回归
- 把 是否违约 拖入 因变量 Y(必须只有 2 类)
- 把 年龄 / 月收入 / 工龄 / 是否有房 / 教育水平 / 贷款金额 / 信用评分 共 7 个变量拖入 自变量 X
- (可选)选择 方法:默认全进入,也可选向前 / 向后 / 逐步法做变量筛选
- (可选)勾选 共线性诊断,得到各 X 的 VIF
- 点击 开始分析
5. 结果表格与结果阅读
下面展示 2 张紧凑三线表:表 1 给出各 X 的回归系数 / OR / VIF(核心结果),表 2 给出模型整体拟合指标。
| 变量 | B | SE | Wald χ² | p | OR | OR 95% CI | VIF |
|---|---|---|---|---|---|---|---|
| 信用评分 | -0.008 | 0.002 | 12.472 | <0.001*** | 0.992 | [0.988, 0.996] | 1.004 |
| 月收入 | -0.0002 | 5.27e-05 | 14.719 | <0.001*** | 0.9998 | [0.9997, 0.9999] | 1.007 |
| 贷款金额 | 2.99e-06 | 1.49e-06 | 4.034 | 0.045* | 1.0000 | [1.0000, 1.0000] | 1.008 |
| 年龄 | -0.021 | 0.020 | 1.112 | 0.292 | 0.979 | [0.942, 1.018] | 1.011 |
| 工龄 | -0.021 | 0.035 | 0.350 | 0.554 | 0.980 | [0.915, 1.049] | 1.007 |
| 是否有房 | 0.070 | 0.332 | 0.044 | 0.833 | 1.073 | [0.559, 2.058] | 1.009 |
| 教育水平 | 0.174 | 0.189 | 0.850 | 0.357 | 1.190 | [0.822, 1.722] | 1.008 |
| 截距 | 5.549 | 1.859 | 8.906 | 0.003** | — | — | — |
| * p<0.05 ** p<0.01 *** p<0.001;OR 接近 1 时区间紧贴 1,可通过单位换算放大解读(如信用评分 +100 分 → OR=0.992^100=0.45);所有 VIF 均接近 1,无共线性问题 | |||||||
3 个显著变量:①信用评分每加 1 分违约几率乘以 0.992,每加 100 分几率约下降 55%;②月收入每加 1 元几率乘以 0.9998,每加 1000 元几率下降约 18%;③贷款金额每加 1 元几率乘以 1.0000003,每加 10 万元几率扩大约 35%。年龄、工龄、是否有房、教育水平在控制其他变量后均不显著。
| 指标 | 取值 | 判定标准 | 结论 |
|---|---|---|---|
| 样本量 N | 300(违约 50 / 未违约 250) | — | 违约率 16.7%,中度不平衡 |
| 似然比检验 LR χ²(7) | 33.382, p<0.001 | p<0.05 模型显著 | ✅ 模型整体显著 |
| −2LL | 236.954(仅截距 270.337) | 越小越好 | 下降 33.4 |
| McFadden R² | 0.124 | 0.2-0.4 良好 | Logit 中 0.1+ 已可接受 |
| Cox & Snell R² | 0.105 | — | — |
| Nagelkerke R² | 0.177 | 越大越好 | 自变量解释 17.7% 变化 |
| Hosmer-Lemeshow χ²(8) | 11.842, p=0.158 | p>0.05 拟合优度好 | ✅ 拟合优度通过 |
| 整体分类正确率 | 83.33% | — | 未违约预测 98.4% / 违约 8.0% |
| AIC / BIC | 252.954 / 282.585 | 越小越好(用于模型比较) | — |
| 不平衡样本下 0.5 阈值导致违约样本召回偏低(8.0%)。如以风控为目的,可下调阈值至 0.25-0.30 以提高违约召回,但代价是误报率上升,需结合业务成本权衡。 | |||
7. 文字分析
对 7 个候选风险因子的二元 Logistic 回归结果综合分析:
- 模型整体:LR χ²(7)=33.38,p<0.001,模型显著优于仅截距模型;HL 拟合优度检验 p=0.158>0.05,模型预测概率与实际观测一致;Nagelkerke R²=0.177,整体分类正确率 83.3%——模型可用于风控初筛。
- 信用评分(最强风险因子):B=−0.008,p<0.001,OR=0.992(95% CI [0.988, 0.996])。换算到业务单位:信用评分每提高 100 分,违约几率乘以 0.992100≈0.45,即下降约 55%——这是风控规则中最优先的硬性指标。
- 月收入:B=−0.0002,p<0.001,OR=0.9998。换算:月收入每加 1000 元,违约几率乘以 0.99981000≈0.82,即下降约 18%。建议风控将"月收入 / 贷款金额"作为偿债能力指标纳入审批。
- 贷款金额:B=2.99×10−6,p=0.045,OR≈1.0000003。换算:贷款金额每加 10 万元,违约几率乘以 e0.299≈1.35,即扩大约 35%,提示大额贷款需额外审查。
- 不显著变量:年龄(p=0.292)、工龄(p=0.554)、是否有房(p=0.833)、教育水平(p=0.357)。在控制信用评分与月收入之后,这些客户基础属性未再提供独立预测信息——传统印象中"有房=低风险""高学历=低风险"的判断在本样本中并不成立。
- 共线性:所有 VIF 均 ≈ 1.0,自变量之间相互独立,回归系数估计稳定。
风控建议:①把信用评分列为一票否决型硬指标(如 <600 分直接拒贷);②引入月收入 / 贷款金额比作为偿债比例阈值(推荐月供 ≤ 月收入 50%);③对大额贷款(≥30 万元)启用人工复核 + 抵押要求;④暂不把年龄 / 工龄 / 有房 / 学历单独作为审批门槛,避免歧视性筛选且统计上并无必要。如要部署上线,应进一步用样本外数据(test set)或时间外样本验证 AUC,并按业务成本调整分类阈值。
8. 剖析提醒
OR 大于 1 表示事件发生优势比增加,不能直接写成"概率增加同样倍数";对连续 X,应按业务单位(每 100 分 / 每 1000 元)换算 OR 后再报告。不平衡样本下整体准确率会被多数类拉高,应额外报告少数类(违约)的召回率;如违约召回过低,可下调判定阈值或采用 SMOTE 等方法重采样。