逾期率_CI上下限

📅 2026/7/30 7:43:37 👁️ 阅读次数 📝 编程学习
逾期率_CI上下限

逾期率_CI下限逾期率_CI上限逾期率的置信区间,我这里用的是95% Wilson 置信区间

简单理解:

  • 逾期率:当前样本里实际观察到的逾期比例
  • 逾期率_CI下限:考虑样本量波动后,逾期率可能的偏低估计
  • 逾期率_CI上限:考虑样本量波动后,逾期率可能的偏高估计

比如近三天:

窗口样本量逾期率CI下限CI上限
近三天11448.2%39.3%57.3%

意思是:当前看到逾期率是48.2%,但因为只有 114 单,存在样本波动,所以真实风险水平大致可能落在39.3% 到 57.3%之间。

它不是历史最低/最高,也不是每天的最小/最大值。

这个字段主要用来避免过拟合

  • 样本量越小,CI 区间越宽,结论越不稳。
  • 如果两个客群逾期率差很多,但 CI 大量重叠,要谨慎。
  • 如果某客群的CI下限都明显高于整体逾期率,说明高风险更可信。
  • 如果某客群的CI上限都低于整体逾期率,说明低风险更可信。

n = 样本量
x = 逾期数
p = x / n = 观察到的逾期率
z = 1.96 # 95%置信区间

center = (p + z² / (2n)) / (1 + z² / n)

margin = z * sqrt((p * (1 - p) + z² / (4n)) / n) / (1 + z² / n)

CI下限 = center - margin
CI上限 = center + margin

样本量 n = 114
逾期数 x = 55
逾期率 p = 55 / 114 = 48.2%

逾期率_CI下限 ≈ 39.3%
逾期率_CI上限 ≈ 57.3%

importmathdefwilson_ci(overdue_cnt,total_cnt,z=1.96):n=total_cnt x=overdue_cntifn==0:returnNone,Nonep=x/n center=(p+z**2/(2*n))/(1+z**2/n)margin=(z*math.sqrt((p*(1-p)+z**2/(4*n))/n)/(1+z**2/n))lower=max(0,center-margin)upper=min(1,center+margin)returnlower,upper lower,upper=wilson_ci(55,114)print(lower,upper)print(f"{lower:.1%}",f"{upper:.1%}")