主要内容

考克斯

创建考克斯违约的生存期概率的模型对象

描述

创建并分析考克斯模型对象使用以下工作流计算违约(PD)的生命周期概率:

  1. 使用fitLifetimePDModel要创建考克斯模型对象。

  2. 使用预测来预测条件PD和predictLifetime来预测一生的PD。

  3. 使用modelDiscrimination返回AUROC和ROC数据。您可以使用modelDiscriminationPlot

  4. 使用modelAccuracy返回观测和预测PD数据的均方根误差(RMSE)。您可以使用modelAccuracyPlot

创建

描述

例子

CoxPDModel= fitLifetimePDModel (数据ModelTypeAgeVar= agevar_value)创建一个考克斯PD模型对象。

如果没有指定变量信息IDVarLoanVarsMacroVars,ResponseVar,那么:

  • IDVar属性中的第一列数据输入。

  • LoanVars对象中从第二列到倒数第二列的所有列均设置为数据输入。

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

例子

CoxPDModel= fitLifetimePDModel (<年代pan class="argument_placeholder">___名称=值设置可选属性在前面的语法中,除了必需的参数之外,使用其他的名称-值参数。例如,CoxPDModel = fitLifetimePDModel(data(TrainDataInd,:),"Cox",ModelID="Cox_A", description ="Cox_model",AgeVar="YOB",IDVar="ID",LoanVars="ScoreGroup",MacroVars={'GDP','市场'},ResponseVar="Default",TimeInterval=1)创建一个CoxPDModel使用一个考克斯模型类型。您可以指定多个名称-值参数。

输入参数

全部展开

以面板数据形式指定为表的数据。数据必须包含ID列和年龄列。响应变量必须是具有值的二进制变量01,1表示默认。

数据类型:表格

模型类型,指定为具有值的字符串“考克斯”或者一个带有值的字符向量考克斯的

数据类型:字符|字符串

名称-值参数

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

例子:CoxPDModel = fitLifetimePDModel(data(TrainDataInd,:),"Cox",ModelID="Cox_A", description ="Cox_model",AgeVar="YOB",IDVar="ID",LoanVars="ScoreGroup",MacroVars={'GDP','市场'},ResponseVar="Default",TimeInterval=1)

要求考克斯名称-值参数

全部展开

年龄变量,指示在哪个列数据包含贷款年龄信息,指定为AgeVar和一个字符串或字符向量。

请注意

所需的名称-值参数AgeVar不被视为预测因素考克斯寿命PD模型。当使用考克斯模型,您必须指定预测变量使用LoanVarsMacroVars.的AgeVar值是基础Cox比例风险模型的事件时间。

AgeVar每个ID的值应该是递增的。如果有非正的年龄增量,fitLifetimePDModel类型时发出警告考克斯模型并移除年龄增量为非正的id。默认情况下,TimeIntervalValue设置为训练数据中最常见的年龄增量。

数据类型:字符串|字符

可选考克斯名称-值参数

全部展开

用户定义的模型ID,指定为ModelID和一个字符串或字符向量。该软件使用ModelID格式化输出,并期望是简短的。

数据类型:字符串|字符

用户定义的模型描述,指定为描述和一个字符串或字符向量。

数据类型:字符串|字符

ID变量,指示其中的列数据包含贷款或借款人ID,指定为IDVar和一个字符串或字符向量。

数据类型:字符串|字符

贷款变量,指示在哪个列数据包含特定于贷款的信息,例如指定为的贷款评分或贷款与价值比率LoanVars和字符向量的字符串数组或单元格数组。

数据类型:字符串|细胞

宏变量,指示其中的列数据包含宏观经济信息,如国内生产总值(GDP)增长或失业率,具体为MacroVars和字符向量的字符串数组或单元格数组。

数据类型:字符串|细胞

变量,指示其中的列数据包含响应变量,指定为ResponseVar和一个逻辑值。

请注意

响应变量<年代pan class="emphasis">数据一定是二进制变量用01值,1表示默认。

在Cox终身PD模型中ResponseVar值定义了基础Cox比例风险模型的审查信息。

数据类型:字符串|字符

面板中训练数据中年龄值之间的距离数据输入,指定为TimeInterval和一个正的标量。

使用TimeInterval参数来拟合依赖时间的模型,也可以作为PD计算的时间间隔预测函数。例如,如果年龄数据(AgeVar)是1,2,3,…,则TimeInterval1;如果年龄数据是0.25,0.5,0.75,…,则TimeInterval0.25.有关更多信息,请参见Cox模型的时间间隔而且寿命预测和时间间隔

请注意

不像物流而且Probit模型,考克斯模型需要一个AgeVar变量。默认情况下,如果不指定TimeInterval当创建考克斯模型中,TimeInterval的增量AgeVar培训中的价值观数据

数据类型:

属性

全部展开

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

数据类型:字符串

用户定义的描述,以字符串形式返回。

数据类型:字符串

底层统计模型,返回作为一个返回作为考克斯比例风险模型对象。有关更多信息,请参见fitcox而且CoxModel

数据类型:CoxModel

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

数据类型:字符串

年龄变量,指示在哪个列数据包含贷款年龄信息,以字符串形式返回。

数据类型:字符串

贷款变量,指示在哪个列数据包含特定于贷款的信息,作为字符串数组返回。

数据类型:字符串

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

数据类型:字符串

变量,指示其中的列数据包含响应变量,以字符串形式返回。

数据类型:字符串

此属性是只读的。

面板中年龄值之间的距离数据输入,作为标量正数值返回。

数据类型:

外推因子,返回为之间的正数值标量0而且1

默认情况下,ExtrapolationFactor设置为1.年龄值(AgeVar)大于训练数据中观察到的最大年龄,条件PD,用预测,使用训练数据中观察到的最大年龄。特别是,如果预测值不改变,只有年龄值改变时,预测PD值是常数ExtrapolationFactor1.有关更多信息,请参见考克斯模型的外推Cox模型的外推因子,用Cox终身PD模型预测条件PD

数据类型:

对象的功能

预测 计算条件PD
predictLifetime 计算累积寿命PD、边际PD和生存概率
modelDiscrimination 计算AUROC和ROC数据
modelAccuracy 计算分组数据上预测和观测pd的RMSE
modelDiscriminationPlot 绘制ROC曲线
modelAccuracyPlot 在分组数据上绘制观察到的违约率与预测的pd的比较图

例子

全部折叠

这个例子展示了如何使用fitLifetimePDModel要创建考克斯使用信贷和宏观经济数据建立模型。

加载数据

加载信贷组合数据。

负载<年代pan style="color:#A020F0">RetailCreditPanelData.matdisp(头(数据))
ID ScoreGroup YOB默认年份__ __________ __________ ____ 1低风险1 0 1997 1低风险20 1998 1低风险3 0 1999 1低风险4 0 2000 1低风险5 0 2001 1低风险6 0 2002 1低风险7 0 2003 1低风险8 0 2004
disp(头(dataMacro))
年GDP市场____ _____ ______ 1997 2.72 7.61 1998 3.57 26.24 1999 2.86 18.1 2000 2.43 3.19 2001 1.26 -10.51 2002 -0.59 -22.95 2003 0.63 2.78 2004 1.85 9.48

将两个数据组件连接到一个数据集中。

data = join(data,dataMacro);disp(头(数据))
ID ScoreGroup YOB默认年份GDP市场__ __________ __________ _________ ______ 1低风险10 1997 2.72 7.61 1低风险20 1998 3.57 26.24 1低风险3 0 1999 2.86 18.1 1低风险4 0 2000 2.43 3.19 1低风险5 0 2001 1.26 -10.51 1低风险6 0 2002 -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 (<年代pan style="color:#A020F0">“默认”);<年代pan style="color:#228B22">%用于再现性c = cvpartition(nIDs,<年代pan style="color:#A020F0">“坚持”, 0.4);TrainIDInd =训练(c);testdind =测试(c);TrainIDInd = ismember(data.ID,uniqueIDs(TrainIDInd));TestDataInd = ismember(data.ID,uniqueIDs(testdind));

创建一个考克斯终身PD模型

使用fitLifetimePDModel要创建考克斯使用训练数据建模。

pdModel = fitLifetimePDModel(data(TrainDataInd,:)),<年代pan style="color:#A020F0">“考克斯”,<年代pan style="color:#0000FF">...AgeVar =<年代pan style="color:#A020F0">“小无赖”,<年代pan style="color:#0000FF">...IDVar =<年代pan style="color:#A020F0">“ID”,<年代pan style="color:#0000FF">...LoanVars =<年代pan style="color:#A020F0">“ScoreGroup”,<年代pan style="color:#0000FF">...MacroVars = {<年代pan style="color:#A020F0">“国内生产总值”,<年代pan style="color:#A020F0">“市场”},<年代pan style="color:#0000FF">...ResponseVar =<年代pan style="color:#A020F0">“默认”);disp (pdModel)
考克斯与属性:时间间隔:1 ExtrapolationFactor: 1 ModelID:“考克斯”描述:“”模型:[1x1 CoxModel] IDVar:“ID”AgeVar:“YOB”LoanVars:“ScoreGroup”MacroVars:[“GDP”“市场”]responsear:“违约”

显示底层模型。

disp (pdModel.Model)
Cox比例风险回归模型Beta SE zStat pValue __________ _________ _______ ___________ ScoreGroup_Medium Risk -0.6794 0.037029 -18.348 3.4442e-75 ScoreGroup_Low Risk -1.2442 0.045244 -27.501 1.7116e-166 GDP -0.084533 0.043687 -1.935 0.052995 Market -0.0084411 0.0032221 -2.6198 0.0087991 Log-likelihood: -41742.871

验证模型

使用modelDiscrimination通过PD来衡量客户的排名。

DataSetChoice =<年代pan class="live_control_container">“测试”;<年代pan style="color:#0000FF">如果DataSetChoice = =<年代pan style="color:#A020F0">“培训”Ind = TrainDataInd;<年代pan style="color:#0000FF">其他的Ind = TestDataInd;<年代pan style="color:#0000FF">结束DiscMeasure = modelDiscrimination(pdModel,data(Ind,:),SegmentBy=<年代pan style="color:#A020F0">“ScoreGroup”)
DiscMeasure =<年代pan class="emphasis">3×1表AUROC _______ Cox, ScoreGroup=高风险0.64112 Cox, ScoreGroup=中等风险0.61989 Cox, ScoreGroup=低风险0.6314
disp (DiscMeasure)
AUROC _______ Cox, ScoreGroup=高风险0.64112 Cox, ScoreGroup=中等风险0.61989 Cox, ScoreGroup=低风险0.6314

使用modelDiscriminationPlot将ROC曲线可视化。

modelDiscriminationPlot (pdModel数据(印第安纳州,:),SegmentBy =<年代pan style="color:#A020F0">“ScoreGroup”)

图中包含一个轴对象。标题为ROC Segmented by ScoreGroup的坐标轴对象包含3个类型为line的对象。这些对象表示Cox,高风险,AUROC = 0.64112, Cox,中等风险,AUROC = 0.61989, Cox,低风险,AUROC = 0.6314。

使用modelAccuracy测量预测PD值的准确性(或校正)。的modelAccuracy函数需要一个分组变量,并将组中观察到的违约率的准确性与组的平均预测PD进行比较。

AccMeasure = modelAccuracy(pdModel,data(Ind,:),{<年代pan style="color:#A020F0">“小无赖”,<年代pan style="color:#A020F0">“ScoreGroup”})
AccMeasure =<年代pan class="emphasis">表格RMSE _________ Cox,由YOB分组,ScoreGroup 0.0012471
disp (AccMeasure)
RMSE _________ Cox,由YOB分组,ScoreGroup 0.0012471

使用modelAccuracyPlot将观察到的违约率与预测的PD进行比较。

modelAccuracyPlot (pdModel数据(印第安纳州,:),{<年代pan style="color:#A020F0">“小无赖”,<年代pan style="color:#A020F0">“ScoreGroup”})

图中包含一个轴对象。标题为Scatter Grouped by YOB和ScoreGroup Cox的坐标轴对象,RMSE = 0.0012471包含6个类型为line的对象。这些对象代表高风险、观察到的风险、中等风险、观察到的风险、低风险、观察到的风险、高风险、考克斯、中等风险、考克斯、低风险、考克斯。

预测条件和终身PD

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

%dataCustomer1 = data(1:8,:);CondPD = predict(pdModel,data(Ind,:));

使用predictLifetime预测寿命累积PD值(也支持计算边际PD值和生存PD值)。金宝app

LifetimePD = predictLifetime(pdModel,data(Ind,:));

更多关于

全部展开

参考文献

[1] Baesens, Bart, Daniel Roesch和Harald Scheule。信用风险分析:SAS中的测量技术、应用和示例。威利,2016年。

贝利尼,蒂齐亚诺。IFRS 9和CECL信用风险建模和验证:R和SAS中实例的实用指南。加州圣地亚哥:爱思唯尔,2019年。

布里登,约瑟夫。与CECL一起生活:建模词典。圣达菲,NM: Prescient Models LLC, 2018。

Roesch, Daniel和Harald Scheule。深度信用风险:使用Python的机器学习。独立出版,2020年。

版本历史

R2021b中引入

另请参阅

功能

  • |<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">