进阶方法

二元Logistic回归分析

案例数据

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 概率映射为连续的对数优势比,从而沿用线性模型形式建模。

Logit 模型

p 为 Y=1(违约)的概率,左边为对数优势比(log-odds)。

OR 优势比

Xj 每增 1 单位,事件几率变为原来的 OR 倍;OR>1 正向,OR<1 负向。

Wald 检验

检验单个系数 βj=0,对应 p 值即各 X 的显著性。

3. 数据结构

每行 1 位客户,1 列 Y + 7 列 X。Y 为 0/1 二分类,连续型 X 已按真实业务量纲(元、年、分)记录;分类 X 用整数编码:

变量名类型取值范围业务含义
是否违约因变量 Y(二分类)0 / 10=未违约,1=出现 90+ 天逾期或核销
年龄连续22-65 岁客户申请贷款时的年龄
月收入连续3000-21300 元税后家庭月收入(自报,已交叉验证)
工龄连续0-21.2 年在当前单位的工作年限
是否有房二分类 X0 / 10=无产权房,1=有自有产权房
教育水平序数1-41=高中以下 / 2=大专 / 3=本科 / 4=硕士及以上
贷款金额连续10000-500000 元本次申请的贷款本金
信用评分连续464-850人行征信中心评分(300=最差,850=最佳)

违约率 16.7%(50/300)属典型不平衡分类问题,预测准确率应同时看 Y=0 与 Y=1 两类的分项准确率;分类型 X(是否有房、教育水平)已按数值编码,无需哑变量化即可直接进入模型。

4. 操作步骤

  1. 登录 SPSSzero,进入 工作台 → 上传 binarylogit.xlsx
  2. 左侧方法栏 → 进阶方法 → 点击 二元 Logistic 回归
  3. 是否违约 拖入 因变量 Y(必须只有 2 类)
  4. 年龄 / 月收入 / 工龄 / 是否有房 / 教育水平 / 贷款金额 / 信用评分 共 7 个变量拖入 自变量 X
  5. (可选)选择 方法:默认全进入,也可选向前 / 向后 / 逐步法做变量筛选
  6. (可选)勾选 共线性诊断,得到各 X 的 VIF
  7. 点击 开始分析

5. 结果表格与结果阅读

下面展示 2 张紧凑三线表:表 1 给出各 X 的回归系数 / OR / VIF(核心结果),表 2 给出模型整体拟合指标。

表1 二元 Logistic 回归分析结果(N=300,Y=是否违约)
变量BSEWald χ²pOROR 95% CIVIF
信用评分-0.0080.00212.472<0.001***0.992[0.988, 0.996]1.004
月收入-0.00025.27e-0514.719<0.001***0.9998[0.9997, 0.9999]1.007
贷款金额2.99e-061.49e-064.0340.045*1.0000[1.0000, 1.0000]1.008
年龄-0.0210.0201.1120.2920.979[0.942, 1.018]1.011
工龄-0.0210.0350.3500.5540.980[0.915, 1.049]1.007
是否有房0.0700.3320.0440.8331.073[0.559, 2.058]1.009
教育水平0.1740.1890.8500.3571.190[0.822, 1.722]1.008
截距5.5491.8598.9060.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%。年龄、工龄、是否有房、教育水平在控制其他变量后均不显著。

表2 模型拟合指标与分类正确率
指标取值判定标准结论
样本量 N300(违约 50 / 未违约 250)违约率 16.7%,中度不平衡
似然比检验 LR χ²(7)33.382, p<0.001p<0.05 模型显著✅ 模型整体显著
−2LL236.954(仅截距 270.337)越小越好下降 33.4
McFadden R²0.1240.2-0.4 良好Logit 中 0.1+ 已可接受
Cox & Snell R²0.105
Nagelkerke R²0.177越大越好自变量解释 17.7% 变化
Hosmer-Lemeshow χ²(8)11.842, p=0.158p>0.05 拟合优度好✅ 拟合优度通过
整体分类正确率83.33%未违约预测 98.4% / 违约 8.0%
AIC / BIC252.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−6p=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 等方法重采样。