如何检查Job特征缺失与approval_status的相关性及适用统计检验方法?
信用卡审批预测:Job缺失与审批状态的相关性分析及统计检验方案
针对你的场景:Job为名义型分类特征(缺失率~25%),目标变量approval_status是二元名义变量(Yes/No),且逻辑上Job缺失可视为失业、可信度更低,以下是具体分析方法和检验手段:
一、检查Job缺失与目标变量的潜在相关性
1. 先做描述性直观分析
- 把Job的缺失情况转成一个二元标识特征(比如命名为
Job_Missing,1代表缺失,0代表已填写) - 制作交叉列联表,统计两组(缺失/非缺失)的审批通过/拒绝频数:
Job是否缺失 审批通过(Yes) 审批拒绝(No) 总计 是 120 280 400 否 350 250 600 - 计算分组通过率:比如缺失组通过率=120/400=30%,非缺失组≈58.3%,直接对比两组的通过率差异
- 可视化辅助:用柱状图展示两组的通过率,或者堆叠柱状图呈现每组内Yes/No的占比,一眼就能看出差异
2. 量化相关性强度
因为两个都是名义型变量,用Cramer's V系数衡量关联程度:
- 取值范围0~1,0代表完全无关,1代表完全相关
- Python实现代码:
import pandas as pd from scipy.stats import chi2_contingency import numpy as np # 构造交叉列联表 contingency_table = pd.crosstab(df['Job_Missing'], df['approval_status']) # 计算卡方检验基础值 chi2, p, dof, expected = chi2_contingency(contingency_table) # 计算Cramer's V total_samples = contingency_table.sum().sum() min_dim = min(contingency_table.shape) - 1 cramers_v = np.sqrt(chi2 / (total_samples * min_dim)) print(f"Cramer's V系数: {cramers_v:.3f}")
二、分析Job缺失对目标变量的影响
- 从描述性统计结果看,如果缺失组的通过率远低于非缺失组,直接说明Job缺失(对应你假设的失业状态)会大幅降低审批通过概率
- 可以单独用
Job_Missing做逻辑回归:将其作为唯一自变量,approval_status作为因变量,看变量的系数和显著性。如果系数为负且p值<0.05,说明Job缺失会显著提升审批拒绝的概率 - 后续可以加入其他特征(如收入、信用记录),验证该效应是否在控制其他变量后依然存在
三、适用的统计检验方法
1. 卡方独立性检验
- 核心用来检验「Job缺失」和「审批状态」是否独立(即是否存在关联)
- 零假设:两者无关联;备择假设:两者存在显著关联
- 若计算出的p值<0.05(常用显著性水平),则拒绝零假设,说明Job缺失和审批状态确实相关
- 注意:如果列联表中超过20%的单元格期望频数<5,建议换用Fisher精确检验
2. Fisher精确检验
- 适合小样本或列联表单元格期望频数不足的场景,直接计算精确p值,不需要依赖卡方分布的近似
- Python代码示例:
from scipy.stats import fisher_exact odds_ratio, p_value = fisher_exact(contingency_table) print(f"Fisher精确检验p值: {p_value:.3f}")
3. 逻辑回归系数的Wald检验
- 把
Job_Missing放入逻辑回归模型后,查看该变量的Wald检验p值,若p值<0.05,说明该变量对审批状态的预测作用显著
内容的提问来源于stack exchange,提问作者CraZyCoDer
相关产品推荐
相关产品推荐

