主要内容

Probit

创建Probit为一生的违约概率模型对象

自从R2020b

描述

创建和分析Probit模型对象一生来计算违约概率(PD)使用此工作流:

  1. 使用fitLifetimePDModel创建一个Probit模型对象。

  2. 使用预测条件PD和预测predictLifetime预测终生PD。

  3. 使用modelDiscrimination返回AUROC和ROC数据。你可以画出结果modelDiscriminationPlot

  4. 使用modelCalibration返回的RMSE观察和预测PD数据。你可以画出结果modelCalibrationPlot

创建

描述

例子

ProbitPDModel= fitLifetimePDModel (数据,ModelType)创建一个ProbitPD模型对象。

如果你不指定变量的信息IDVar,AgeVar,LoanVars,MacroVars,ResponseVar,那么:

  • IDVar第一列被设置为在吗数据输入。

  • LoanVars将包括所有从第二列的倒数第二个列数据输入。

  • ResponseVar将最后一列的数据输入。

例子

ProbitPDModel= fitLifetimePDModel (___,名称,值)指定选项使用一个或多个名称-值对参数除了输入参数在前面的语法。可选名称-值对参数设置模型对象属性。例如,ProbitPDModel = fitLifetimePDModel(数据(TrainDataInd,:),“Probit”、“ModelID”,“Probit_A”、“Descripion”、“Probit_model”、“AgeVar”、“小无赖”、“IDVar”,“ID”、“LoanVars”、“ScoreGroup”、“MacroVars”{“GDP”、“市场”},“ResponseVar”、“违约”)创建一个ProbitPDModel对象使用Probit模型类型。

输入参数

全部展开

数据,指定为一个表,在面板数据形式。的数据必须包含一个ID列。响应变量必须是一个二进制变量的值01,1表示默认。

数据,指定为一个表第一列的位置IDVar,最后一列是ResponseVar,和所有其他列LoanVars

数据类型:

模型类型,指定为一个字符串值“Probit”或一个特征矢量与价值“Probit”

数据类型:字符|字符串

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:ProbitPDModel = fitLifetimePDModel(数据(TrainDataInd,:),“Probit”、“ModelID”,“Probit_A”、“Descripion”、“Probit_model”、“AgeVar”、“小无赖”、“IDVar”,“ID”、“LoanVars”、“ScoreGroup”、“MacroVars”{“GDP”、“市场”},“ResponseVar”、“违约”)

用户自定义模型ID指定为逗号分隔组成的“ModelID”和一个字符串或字符向量。软件使用ModelID格式输出,预计将短。

数据类型:字符串|字符

用户定义的描述模型,指定为逗号分隔组成的“描述”和一个字符串或字符向量。

数据类型:字符串|字符

ID变量指示列数据包含贷款或借款人ID指定为逗号分隔组成的“IDVar”和一个字符串或字符向量。

数据类型:字符串|字符

年龄变量指示列数据包含贷款年龄信息,指定为逗号分隔组成的“AgeVar”和一个字符串或字符向量。

数据类型:字符串|字符

贷款变量指示列数据包含loan-specific信息,如发放成绩或贷款价值比率,指定为逗号分隔组成的“LoanVars”和一个字符串数组或单元阵列的特征向量。

数据类型:字符串|细胞

宏变量指示列数据包含宏观经济信息,比如国内生产总值(GDP)增长或失业率,指定为逗号分隔组成的“MacroVars”和一个字符串数组或单元阵列的特征向量。

数据类型:字符串|细胞

变量显示哪些列数据包含响应变量指定为逗号分隔组成的“ResponseVar”和一个字符串或字符向量。

请注意

响应变量数据必须是一个二进制变量01值,1表示默认。

数据类型:字符串|字符

属性

全部展开

用户自定义模型ID作为字符串返回。

数据类型:字符串

用户定义的描述,作为字符串返回。

数据类型:字符串

潜在的统计模型,作为一个紧凑的广义线性模型对象返回。有关更多信息,请参见fitglmCompactGeneralizedLinearModel

数据类型:CompactGneralizedLinearModel

ID变量指示列数据包含贷款或借款人身份证,作为字符串返回。

数据类型:字符串

年龄变量指示列数据包含贷款年龄信息,作为字符串返回。

数据类型:字符串

贷款变量指示列数据包含loan-specific信息,作为字符串数组返回。

数据类型:字符串

宏变量指示列数据包含宏观经济信息,作为字符串数组返回。

数据类型:字符串

变量显示哪些列数据包含响应变量,作为字符串返回。

数据类型:逻辑

对象的功能

预测 计算条件PD
predictLifetime 计算累积一生PD、边际PD和生存概率
modelDiscrimination 计算AUROC和ROC数据
modelCalibration 观察到的预测和计算RMSE PDs分组数据
modelDiscriminationPlot 绘制ROC曲线
modelCalibrationPlot 情节观察违约率相比,预测PDs分组数据

例子

全部折叠

这个例子展示了如何使用fitLifetimePDModel创建一个Probit模型使用信用卡和宏观经济数据。

加载数据

加载信贷投资组合数据。

负载RetailCreditPanelData.matdisp(头(数据))
ID ScoreGroup小无赖默认年__ __________ ___ ____ ____ 1低风险1 0 1998 1997 1低风险2 0 1低风险1999 1低风险4 0 0 2001 2000 1低风险5 0 1低风险6 0 2002 1低风险7 0 2003 1低风险8 0 2004
disp(头(dataMacro))
1998年国内生产总值__专攻市场1997 2.72 - 7.61 3.57 - 26.24 1999 2.86 2001 18.1 2000 2.43 3.19 1.26 -10.51 2002 -0.59 2004 -22.95 2003 0.63 - 2.78 1.85 - 9.48

加入到一个数据集的两个数据组件。

data =加入(数据、dataMacro);disp(头(数据))
ID ScoreGroup小无赖违约GDP年市场__ __________ ___ ____ ____专攻1低风险1 0 1997 2.72 7.61 - 1低风险2 0 1998 1999 2.86 18.1 3.57 26.24 - 1低风险3 0 1低风险4 0 2000 2.43 3.19 1低风险5 0 2002 2001 1.26 -10.51 - 1低风险6 0 -0.59 -22.95 1低风险7 0 2003 0.63 2.78 1低风险8 0 2004 1.85 - 9.48

对数据进行分区

单独的数据为训练和测试的分区。

nIDs = max (data.ID);uniqueIDs =独特(data.ID);rng (“默认”);%的再现性c = cvpartition (nIDs“坚持”,0.4);TrainIDInd =培训(c);TestIDInd =测试(c);TrainDataInd = ismember (data.ID uniqueIDs (TrainIDInd));TestDataInd = ismember (data.ID uniqueIDs (TestIDInd));

创建一个Probit一生PD模型

使用fitLifetimePDModel创建一个Probit使用训练数据模型。

pdModel = fitLifetimePDModel(数据(TrainDataInd,:),“Probit”,“AgeVar”,“小无赖”,“IDVar”,“ID”,“LoanVars”,“ScoreGroup”,“MacroVars”,{“国内生产总值”,“市场”},“ResponseVar”,“默认”);disp (pdModel)
概率单位属性:ModelID:“Probit”描述:“UnderlyingModel: [1 x1 classreg.regr。CompactGeneralizedLinearModel] IDVar: "ID" AgeVar: "YOB" LoanVars: "ScoreGroup" MacroVars: ["GDP" "Market"] ResponseVar: "Default"

显示底层模型。

disp (pdModel.UnderlyingModel)
紧凑的广义线性回归模型:probit(默认)~ 1 + GDP ScoreGroup +小无赖+ +市场=二项分布估计系数:估计SE tStat pValue __________ ___________和___________(拦截)-1.6267 0.03811 -42.685 0 ScoreGroup_Medium风险-0.26542 0.01419 -18.704 4.5503 e - 78 ScoreGroup_Low风险-0.46794 0.016364 -28.595 7.775 e - 180小无赖-0.11421 0.0049724 -22.969 9.6208 e - 117 GDP市场-0.041537 0.014807 -2.8052 0.0050291 -0.0029609 0.0010618 -2.7885 0.0052954 388097年观察,388091错误自由度色散:1 x ^ 2-statistic与常数模型:1.85 e + 03,假定值= 0

预测条件和PD一生

使用预测函数来预测条件PD值。预测是一个逐行预测。

dataCustomer1 =数据(1:8,:);CondPD =预测(pdModel dataCustomer1)
CondPD =8×10.0095 0.0054 0.0045 0.0039 0.0036 0.0036 0.0017 0.0009

使用predictLifetime预测寿命累积PD值(计算边际和生存PD值还支持)。金宝app的predictLifetime函数使用ID变量(参见“IDVar”财产物流对象)将有条件的PDs累积PDs对每个ID。

LifetimePD = predictLifetime (pdModel dataCustomer1)
LifetimePD =8×10.0095 0.0149 0.0193 0.0232 0.0267 0.0302 0.0318 0.0327

验证模型

使用modelDiscrimination衡量顾客PD的排名。

DiscMeasure = modelDiscrimination (pdModel、数据(TestDataInd:) DataID =“测试数据”);disp (DiscMeasure)
0.69984 AUROC累积概率单位,测试数据

使用modelDiscriminationPlot可视化ROC曲线。

modelDiscriminationPlot (pdModel、数据(TestDataInd:), DataID =“测试数据”);

图包含一个坐标轴对象。坐标轴对象与标题中华民国测试数据Probit AUROC = 0.69984,包含一部分Non-Defaulters, ylabel违约者的包含一个类型的对象。这个对象表示概率单位。

使用modelCalibration衡量预测的PD的校准值。的modelCalibration函数需要一个分组变量和对比组中观察到的违约率的准确性的平均预测PD组。例如,您可以使用group by日历年“年”变量。

CalMeasure = modelCalibration (pdModel、数据(TestDataInd:)“年”DataID =“测试数据”);disp (CalMeasure)
RMSE __________ Probit,分组,0.00039494测试数据

使用modelCalibrationPlot可视化观察到的违约率相比,预测违约概率(PD)。

modelCalibrationPlot (pdModel、数据(TestDataInd:),“年”DataID =“测试数据”);

图包含一个坐标轴对象。坐标轴对象标题分散按年测试数据分组Probit RMSE = 0.00039494,包含一年,ylabel PD包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表观察到的,概率单位。

更多关于

全部展开

引用

[1]Baesens,巴特,丹尼尔•罗斯切和Harald Scheule。信贷风险分析:测量技术、应用程序和SAS的例子。威利,2016年。

[2]贝里尼,Tiziano。IFRS 9和CECL信用风险建模和验证:一个实用指南的例子在R和SAS。圣地亚哥CA:爱思唯尔出版社,2019年。

[3]布里登,约瑟夫。生活在CECL:建模字典。圣达菲,海里:先见之明模型有限责任公司,2018年。

[4]罗斯切,丹尼尔和哈拉尔德Scheule。与Python深信用风险:机器学习。独立出版,2020年。

版本历史

介绍了R2020b

全部展开