信用计分卡分析的案例研究

这个例子显示了如何创建creditscorecard对象,仓数据,显示和积分档数据的信息。这个例子也说明了如何适应一个逻辑回归模型,获得记分卡模型的得分,并确定违约概率和验证使用三种不同的度量信用记分卡模型。

步骤1.创建creditscorecard对象。

使用CreditCardData.mat文件以载入数据(使用来自Refaat 2011的数据集)。如果你的数据包含许多预测器,您可以首先使用screenpredictors从“风险管理工具箱”(Risk Management Toolbox™)到将一组可能很大的预测器缩减为最能预测信用计分卡响应变量的子集。然后,您可以在创建creditscorecard对象。

当创建一个creditscorecard对象,默认情况下,'ResponseVar'设置为数据中的最后一列('状态'在该示例中),并且“GoodLabel”到具有最高计数的响应值(0在本例中)。的语法creditscorecard表明“客户ID”“IDVar”从谓词列表中移除。此外,虽然本例中没有演示,但在创建a时creditscorecard使用对象creditscorecard,您可以使用可选的名称 - 值对参数'WeightsVar'以指定的观察(样品)的重量或'BinMissingData'保存丢失的数据。

加载CreditCardDatasc = creditscorecard(数据,“IDVar”“客户ID”
属性:GoodLabel: 0 ResponseVar: 'status' WeightsVar: " varname: {1x11 cell} NumericPredictors: {1x6 cell} CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'} BinMissingData: 0 IDVar: 'CustID' PredictorVars: {1200x11 cell} Data: [1200x11 table]

执行一些初始数据探索。咨询有关分类变量的预测统计'ResStatus'并绘制了仓信息'ResStatus'

bininfo (sc,'ResStatus'
ans =4×6表有好有坏有坏有坏有坏有坏有坏有坏有坏有坏有坏有坏有坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏坏
plotbins (sc,'ResStatus'

此bin信息包含“好”和“坏”的频率,以及bin统计信息。避免使用频率为0的箱子,因为它们会导致无限或未定义(为NaN)统计数据。使用modifybinsautobinning函数存储相应的数据。

对于数值数据,通常的第一步是“精细分类”。This means binning the data into several bins, defined with a regular grid. To illustrate this point, use the predictor'CustIncome'

cp = 20000:5000:60000;SC = modifybins(SC,'CustIncome'“切点”,cp);bininfo (sc,'CustIncome'
ans =11×6表本好与坏的几率,悲哀InfoValue _________________出生_____ _____{[无穷,20000)的}3 5 0.6 -1.2152 0.010765{[20000、25000)的}23日16 1.4375 -0.34151 0.0039819{[25000、30000)的}38 47 0.80851 -0.91698 0.065166{[30000、35000)的}131 75 1.7467 -0.14671 0.003782{[35000、40000)的}193 98 1.9694 -0.026696 0.00017359{[40000、45000)的}173 76 2.2763 0.11814 0.0028361{[45000、50000)}131年47 2.7872 0.32063 0.014348{[50000、55000)}82年24 3.4167 0.52425 0.021842{[55000、60000)的}21 8 8 2.625 0.26066 0.0015642 {' '[60000,Inf]'} 8 1 8 1.375 0.010235 {' total '} 803 397 2.0227 NaN 0.13469
plotbins (sc,'CustIncome'

步骤2a。自动仓中的数据。

使用autobinning函数的作用是:使用默认值为每个预测变量执行自动绑定“单调”带有默认算法选项的算法。

sc = autobinning (sc);

自动分级步骤后,每次预测斌必须使用进行审查bininfoplotbins功能和微调。在证据(WOE)的重量单调,理想的线性趋势是可取的信贷评分卡,因为这转化成特定的预测线的点。该趋势WOE可以使用可视化plotbins

sc.PredictorVars plotbins (sc)

不像最初的情节'ResStatus'当记分卡被创建,新的情节'ResStatus'显示增加趋势WOE。这是因为autobinning功能,默认情况下,排序的类别,通过增加胜算的顺序。

这些图表明“单调”算法可以很好地为这个数据集找到单调的趋势。要完成绑定过程,只需对使用modifybins功能。

步骤2b。微调使用手动合并垃圾箱。

手动修改箱常见的步骤是:

  • 使用bininfo函数具有两个输出参数,其中第二个参数包含绑定规则。

  • 使用来自所述第二输出参数手动修改的合并规则bininfo

  • 设置与更新的分级规则modifybins然后使用plotbinsbininfo要查看更新垃圾箱。

例如,基于的情节“CustAge”在步骤2a,频段数1和2具有相似WOE的作为做仓编号5和6要合并使用上面概述的步骤,这些二进制位:

[双CP] = bininfo(SC,“CustAge”);CP([1 5])= [];%合并第1和第2箱,第5和第6箱SC = modifybins(SC,“CustAge”“切点”,cp);plotbins (sc,“CustAge”

对于'CustIncome',根据上面的图,最好合并箱子3、4和5,因为它们有相似的问题。为了合并这些垃圾桶:

[双CP] = bininfo(SC,'CustIncome');cp([3 4]) = [];SC = modifybins(SC,'CustIncome'“切点”,cp);plotbins (sc,'CustIncome'

对于'TmWBank'基于上述的情节,最好是合并箱2和3,因为它们具有相似WOE的。为了合并这些垃圾桶:

[双CP] = bininfo(SC,'TmWBank');CP(2)= [];SC = modifybins(SC,'TmWBank'“切点”,cp);plotbins (sc,'TmWBank'

对于“AMBalance”基于上述的情节,最好是合并箱2和3,因为它们具有相似WOE的。为了合并这些垃圾桶:

[双CP] = bininfo(SC,“AMBalance”);CP(2)= [];SC = modifybins(SC,“AMBalance”“切点”,cp);plotbins (sc,“AMBalance”

现在已经完成了微调,所有预测器的预测箱都有接近线性的趋势。

第3步:安装一个逻辑回归模型。

fitmodel函数与悲痛数据的逻辑回归模型相吻合。fitmodel内部仓中的训练数据,把它转换为WOE值,响应变量映射,使得‘好’1,与配合线性回归模型。默认,fitmodel使用逐步过程确定模型中应该包含哪些预测器。

sc = fitmodel (sc);
1.添加CustIncome,越轨= 1490.8954,Chi2Stat = 32.545914,p值= 1.1640961e-08 2.添加TmWBank,越轨= 1467.3249,Chi2Stat = 23.570535,p值= 1.2041739e-06 3.添加AMBalance,越轨= 1455.858,Chi2Stat = 11.466846,PValue = 0.00070848829 4. Adding EmpStatus, Deviance = 1447.6148, Chi2Stat = 8.2432677, PValue = 0.0040903428 5. Adding CustAge, Deviance = 1442.06, Chi2Stat = 5.5547849, PValue = 0.018430237 6. Adding ResStatus, Deviance = 1437.9435, Chi2Stat = 4.1164321, PValue = 0.042468555 7. Adding OtherCC, Deviance = 1433.7372, Chi2Stat = 4.2063597, PValue = 0.040272676 Generalized linear regression model: status ~ [Linear formula with 8 terms in 7 predictors] Distribution = Binomial Estimated Coefficients: Estimate SE tStat pValue ________ _______ ______ __________ (Intercept) 0.7024 0.064 10.975 5.0407e-28 CustAge 0.61562 0.24783 2.4841 0.012988 ResStatus 1.3776 0.65266 2.1107 0.034799 EmpStatus 0.88592 0.29296 3.024 0.0024946 CustIncome 0.69836 0.21715 3.216 0.0013001 TmWBank 1.106 0.23266 4.7538 1.9958e-06 OtherCC 1.0933 0.52911 2.0662 0.038806 AMBalance 1.0437 0.32292 3.2322 0.0012285 1200 observations, 1192 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 89.7, p-value = 1.42e-16

第4步:审查和格式记分卡点。

拟合Logistic模型后,默认情况下该点是未缩放,并直接从WOE值和模型系数的组合来。该displaypoints函数汇总记分卡点数。

p1 = displaypoints (sc);DISP(P1)
预测滨点数______________ ____________________ _________ { 'CustAge'} { '[-Inf,37)'} -0.15314 { 'CustAge'} { '[37,40)'} -0.062247 { 'CustAge'} {'[40,46) '} 0.045763 { 'CustAge'} { '[46,58)'} 0.22888 { 'CustAge'} { '[58,天道酬勤]'} 0.48354 { 'CustAge'} { '<缺失>'}的NaN {' ResStatus'} {' 租户”} -0.031302 { 'ResStatus'} { '家庭所有者'} 0.12697 { 'ResStatus'} { '其他'} 0.37652 { 'ResStatus'} { '<缺失>'}的NaN { 'EmpStatus'}{ '未知'} -0.076369 { 'EmpStatus'} { '业'} 0.31456 { 'EmpStatus'} { '<缺失>'}的NaN { 'CustIncome'} { '[-Inf,29000)'} -0.45455 {”CustIncome '} {'[29000,33000)”} -0.1037 { 'CustIncome'} { '[33000,42000)'} 0.077768 { 'CustIncome'} { '[42000,47000)'} 0.24406 { 'CustIncome'} {'[47000,天道酬勤]'} 0.43536 { 'CustIncome'} { '<缺失>'}的NaN { 'TmWBank'} { '[-Inf,12)'} -0.18221 { 'TmWBank'} {'[12,45)' } -0.038279 {'TmWBank' } {'[45,71)' } 0.39569 {'TmWBank' } {'[71,Inf]' } 0.95074 {'TmWBank' } {'' } NaN {'OtherCC' } {'No' } -0.193 {'OtherCC' } {'Yes' } 0.15868 {'OtherCC' } {'' } NaN {'AMBalance' } {'[-Inf,558.88)' } 0.3552 {'AMBalance' } {'[558.88,1597.44)'} -0.026797 {'AMBalance' } {'[1597.44,Inf]' } -0.21168 {'AMBalance' } {'' } NaN

如果出于美观的原因,这是修改bin标签的好时机。要这样做,请使用modifybins更改垃圾箱标签。

SC = modifybins(SC,“CustAge”'BinLabels'...{“36”37到39的'40到45''46到57'“58,”});SC = modifybins(SC,'CustIncome''BinLabels'...{“28999”'29000至32999'“33000 - 41999”“42000 - 46999”“47000及以上”});SC = modifybins(SC,'TmWBank''BinLabels'...{“11”'12到44''45到70'“71,”});SC = modifybins(SC,“AMBalance”'BinLabels'...{“高达558.87”558.88到1597.43的“1597.44”,});p1 = displaypoints (sc);DISP(P1)
预测本_____________________ ____分* * * {‘CustAge}{‘多达36}-0.15314 {‘CustAge}{' 37到39}-0.062247 {‘CustAge}{40到45的}0.045763 {‘CustAge} {“46 57”} 0.22888 {‘CustAge}{' 58和}0.48354 {‘CustAge}{' <失踪>}南{‘ResStatus}{“租户”}-0.031302 {‘ResStatus}{‘业主’}0.12697 {‘ResStatus}{‘其他’}0.37652 {‘ResStatus}{' <失踪>}南{‘EmpStatus}{‘未知’}-0.076369 {‘EmpStatus}{“雇佣”}0.31456{' EmpStatus}{' <失踪>}南{‘CustIncome} {‘28999’} -0.45455 {‘CustIncome} {“29000 - 32999”} -0.1037 {‘CustIncome} {“33000 - 41999”} 0.077768 {‘CustIncome} {“42000 - 46999”} 0.24406 {‘CustIncome}{' 47000和'}0.43536 {‘CustIncome}{' <失踪>}南{‘TmWBank} {' 11 '} -0.18221 {‘TmWBank}{' 12至44}-0.038279 {‘TmWBank}{' 45到70}0.39569 {‘TmWBank}{' 71和'}0.95074 {‘TmWBank}{' <失踪>}南{‘OtherCC}{‘不’}-0.193 {' OtherCC '}{'Yes'} 0.15868 {'OtherCC'} {' missing>'} {'Up ' 558.87'} 0.3552 {'AMBalance'} {'558.88 to 1597.43'} -0.026797 {'AMBalance'} {'1597.44 and Up '} -0.21168 {'AMBalance'} {''} NaN

点通常是缩放的,也经常是四舍五入的。要做到这一点,请使用formatpoints功能。例如,可以设置对应于目标级别赔率点的目标水平,并且还设置所需的点到双的赔率(PDO)。

TargetPoints = 500;TargetOdds = 2;PDO = 50;%表示几率加倍SC = formatpoints(SC,“PointsOddsAndPDO”[TargetPoints TargetOdds PDO]);P2 = displaypoints(SC);DISP(P2)
_____________________ ______预测本点* * * {‘CustAge}{‘多达36}53.239 {‘CustAge}{' 37到39}59.796 {‘CustAge}{40到45的}67.587 {‘CustAge} {“46 57”} 80.796 {‘CustAge}{' 58和}99.166 {‘CustAge}{' <失踪>}南{‘ResStatus}{“租户”}62.028 {‘ResStatus}{‘业主’}73.445 {‘ResStatus}{‘其他’}91.446 {‘ResStatus}{' <失踪>}南{‘EmpStatus}{‘未知’}58.777 {‘EmpStatus}{“雇佣”}86.976 {' EmpStatus '}{' <失踪>}南{‘CustIncome} {‘28999’} 31.497 {‘CustIncome} {“29000 - 32999”} 56.805 {‘CustIncome} {“33000 - 41999”} 69.896 {‘CustIncome} {“42000 - 46999”} 81.891 {‘CustIncome}{' 47000和'}95.69 {‘CustIncome}{' <失踪>}南{‘TmWBank} {' 11 '} 51.142 {‘TmWBank}{' 12至44}61.524 {‘TmWBank}{' 45到70}92.829 {‘TmWBank}{' 71和'}132.87 {‘TmWBank}{' <失踪>}南{‘OtherCC}{‘不’}50.364 {‘OtherCC}{'是的'}75.732 {' OtherCC '}{'AMBalance'} {'558.88 '} to 1597.43'} 62.353 {'AMBalance'} {'1597.44 and Up '} 49.016 {'AMBalance'} {''} NaN

步骤5.得分的数据。

得分了函数计算训练数据的分数。可选数据输入也可以传递给得分了中,例如,验证数据。为每个客户每个预测器的点被设置为一个可选的输出。

(分数,分)=分数(sc);disp(分数(1:10))
528.2044 554.8861 505.2406 564.0717 554.8861 586.1904 441.8755 515.8125 524.4553 508.3169
DISP(点(1:10,:))
CustAge ResStatus EmpStatus CustIncome TmWBank OtherCC AMBalance _______ _________ _________ __________ _______ _______ _________ 80.796 62.028 58.777 95.69 92.829 75.732 62.353 99.166 73.445 86.976 95.69 61.524 75.732 62.353 80.796 62.028 86.976 69.896 92.829 50.364 62.353 80.796 73.445 86.976 95.69 61.524 75.732 89.908 99.166 73.445 86.976 95.69 61.524 75.732 62.353 99.16673.445 86.976 95.69 92.829 75.732 62.353 53.239 73.445 58.777 56.805 61.524 75.732 62.353 80.796 91.446 86.976 95.69 61.524 50.364 49.016 80.796 62.028 58.777 95.69 61.524 75.732 89.908 80.796 73.445 58.777 95.69 61.524 75.732 62.353

步骤6.计算默认的概率。

若要计算违约概率,请使用probdefault功能。

pd = probdefault (sc);

定义“好”的概率,并绘制预测概率与格式化分数之间的关系。可视化地分析目标点和目标赔率匹配以及点对双倍赔率(PDO)关系。

ProbGood = 1 pd;PredictedOdds = ProbGood. / pd;图散射(分数,PredictedOdds)标题(“预测赔率与分数”)包含('得分了')ylabel (“预测赔率”)举行xLimits = XLIM;yLimits = ylim;%目标点和赔率情节([TargetPoints TargetPoints],[yLimits(1)TargetOdds]凯西:”)情节([xLimits(1)TargetPoints],[TargetOdds TargetOdds]凯西:”%目标点加PDO情节([靶点+ PDO靶点+ PDO], [yLimits (1) 2 * TargetOdds),凯西:”) plot([xLimits(1) TargetPoints+PDO],[2*TargetOdds 2*TargetOdds],凯西:”%目标点减去PDO图([TargetPoints-PDO TargetPoints-PDO],[yLimits(1)TargetOdds / 2],凯西:”) plot([xLimits(1) TargetPoints-PDO],[TargetOdds/2 TargetOdds/2],凯西:”)举行

步骤7。使用CAP、ROC和Kolmogorov-Smirnov统计量验证信用计分卡模型

creditscorecard类支持三种验金宝app证方法:累积精度概要(CAP)、接收器工作特性(ROC)和Kolmogorov-Smirnov (K-S)统计。有关CAP、ROC和KS的更多信息,请参见累计精度档案(CAP)接收机工作特性(ROC),Kolmogorov-Smirnov统计(KS)

[统计,T] = validatemodel(SC,'情节',{“帽子”“中华民国”'KS'});

disp(统计)
测量值________________________ _________ 0.32225{的精度比}{ROC曲线下面积的}0.66113 {“KS统计”}0.22324 499.18 {“k值”}
disp (T (1:15)):
分数ProbDefault TrueBads FalseBads TrueGoods FalseGoods灵敏度误报警PctObs ______ ___________ ________ _________ _________ __________ ___________ __________ __________ 369.4 0.7535 0 1 802 397 0 0.0012453 0.00083333 377.86 0.73107 1 1 802 396 0.0025189 0.0012453 0.0016667 379.78 0.7258 2 1 802 395 0.0050378 0.0012453 0.0025 391.81 0.69139 3 1 802394 0.0075567 0.0012453 0.0033333 394.77 0.68259 3 2 801 394 0.0075567 0.0024907 0.0041667 395.78 0.67954 4 2 801 393 0.010076 0.0024907 0.005 396.95 0.67598 5 2 801 392 0.012594 0.0024907 0.0058333 398.37 0.67167 6 2 801 391 0.015113 0.0024907 0.0066667 401.26 0.66276 7 2 801 390 0.017632 0.0024907 0.0075 403.230.65664 8 2 801 389 0.020151 0.0024907 0.0083333 405.09 0.65081 8 3 800 389 0.020151 0.003736 0.0091667 405.15 0.65062 11 5 798 386 0.027708 0.0062267 0.013333 405.37 0.64991 11 6 797 386 0.027708 0.007472 0.014167 406.18 0.64735 12 6 797 385 0.030227 0.007472 0.015 407.14 0.64433 13 6 797 3840.032746 0.007472 0.015833

也可以看看

|||||||||||||||

相关的例子

更多关于

外部网站