主要内容

setmodel

设置模型预测因子和系数

描述

例子

sc= setmodel (scModelPredictorsModelCoefficients设定线性逻辑回归模型外拟合的预测因子和系数creditscorecard对象,并返回一个已更新的creditscorecard对象。预测因子和系数用于计算记分卡点。使用setmodel代替fitmodel,符合线性逻辑回归模型,因为setmodel提供更高的灵活性。例如,当一个模型与fitmodel需要修改时,可以使用setmodel.有关更多信息,请参见使用setmodel的工作流

请注意

当使用setmodel,以下假设适用:

  • 模型系数对应于线性逻辑回归模型(其中只有线性项包含在模型中,不存在相互作用或任何其他高阶项)。

  • 该模型之前使用证据权重(WOE)数据进行拟合,并将响应映射为“好”1“坏”是0

例子

全部折叠

这个例子展示了如何使用setmodel对最初使用的逻辑回归模型进行修正fitmodel函数,然后将新的逻辑回归模型设置为预测因子和回归系数creditscorecard对象。

创建一个creditscorecard对象使用CreditCardData.mat文件来加载数据(使用Refaat 2011的数据集)。

负载CreditCardDataSc =信用记分卡(数据,“IDVar”“CustID”
sc = creditscorecard与属性:GoodLabel: 0 responseval: 'status' WeightsVar: " VarNames: {1x11 cell} NumericPredictors: {1x6 cell} CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'} BinMissingData: 0 IDVar: 'CustID' PredictorVars: {1x9 cell} Data: [1200x11 table]

执行自动装箱。

Sc = autobinning(Sc);

标准的工作流程是使用fitmodel函数用逐步方法拟合逻辑回归模型。然而,fitmodel仅支持关于万博1manbetx逐步过程的有限选项。你可以使用可选选项mdl的输出参数fitmodel去拿一份合身的复印件GeneralizedLinearModel对象,以便稍后修改。

[sc,mdl] = fitmodel(sc);
1.添加CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08添加TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-063 .添加AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601。5.添加EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257。添加CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306添加ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078。添加OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769广义线性回归模型:状态~[7个预测因子中有8项的线性公式]分布=二项式估计系数:估计SE tStat pValue ________ ________ ______ __________(拦截)0.70239 0.064001 10.975 5.0538e-28 CustAge 0.60833 0.24932 2.44 0.014687 ResStatus 1.377 0.65272 2.1097 0.034888 EmpStatus 0.88565 0.293 3.0227 0.0025055 CustIncome 0.70164 0.21844 3.2121 0.0013179 TmWBank 1.1074 0.23271 4.7589 1.9464e-06 OtherCC 1.0883 0.52912 2.0569 0.039696 AMBalance 1.045 0.32214 3.2439 0.0011792 1200观测值,1192误差自由度离散度:1 Chi^2统计与常数模型:89.7, p-value = 1.4e-16

假设您想要包含或“强制”预测器“UtilRate”在逻辑回归模型中,即使逐步方法没有将其包含在拟合模型中。你可以添加“UtilRate”对logistic回归模型进行了分析GeneralizedLinearModel对象mdl直接。

mdl = mdl. addterms (“UtilRate”
mdl =广义线性回归模型:状态~[8个预测因子中有9项的线性公式]分布=二项式估计系数:估计SE tStat pValue ________ ________ ________ __________ (Intercept) 0.70239 0.064001 10.975 5.0538e-28 CustAge 0.60843 0.24936 2.44 0.014687 ResStatus 1.3773 0.6529 2.1096 0.034896 EmpStatus 0.88556 0.29303 3.0221 0.0025103 CustIncome 0.70146 0.2186 3.2089 0.0013324 TmWBank 1.1071 0.23307 4.7503 2.0316e-06 OtherCC 1.0882 0.52918 2.0563 0.03975 AMBalance 1.0413 0.36557 2.8483 0.004395 UtilRate 0.013157 0.60864 0.021618 0.98275 1200观测值,1191误差自由度离散度:1 Chi^2统计量与常数模型:89.7,p值= 5.26e-16

使用setmodel更新模型预测因子和模型系数creditscorecard对象。的ModelPredictorsInput参数没有显式地包括用于截取的字符串。然而,ModelCoefficientsInput参数确实将截取信息作为其第一个元素。

ModelPredictors = mdl。PredictorNames
ModelPredictors =8 x1细胞{'CustAge'} {'ResStatus'} {'EmpStatus'} {'CustIncome'} {'TmWBank'} {'OtherCC'} {'AMBalance'} {'UtilRate'}
模型系数= mdl.Coefficients.Estimate
ModelCoefficients =9×10.7024 0.6084 1.3773 0.8856 0.7015 1.1071 1.0882 1.0413 0.0132
sc = setmodel(sc,ModelPredictors,ModelCoefficients);

验证“UtilRate”是记分卡预测器的一部分,通过显示记分卡点。

PI = displaypoints(sc)
π=41×3表预测本点  ______________ ________________ _________ {' CustAge’}{[无穷,33)的-0.17152}{‘CustAge}{[33岁,37)的-0.15295}{‘CustAge}{[37、40)的-0.072892}{‘CustAge}{[40岁,46)的0.033856}{‘CustAge}{[46岁,48)的0.20193}{‘CustAge}{[48, 58)的0.21787}{“CustAge”}{的[58岁的Inf]} 0.46652{‘CustAge}{“失踪> <”}南{‘ResStatus}{“租户”}-0.043826{‘ResStatus}{‘业主’}0.11442{‘ResStatus}{‘其他’}0.36394{‘ResStatus}{“失踪> <”}南{' EmpStatus '}{'Unknown' } -0.088843 {'EmpStatus' } {'Employed' } 0.30193 {'EmpStatus' } {'' } NaN {'CustIncome'} {'[-Inf,29000)'} -0.46956 ⋮

这个例子展示了如何使用setmodel直接拟合逻辑回归模型,而不使用fitmodel函数,然后将新的模型预测器和系数设置回creditscorecard对象。这种方法在控制逐步过程的选项方面提供了更大的灵活性。的非默认值适合逻辑回归模型“囚禁”参数是logistic回归模型在逐步过程中接纳新预测因子的标准。

创建一个creditscorecard对象使用CreditCardData.mat文件来加载数据(使用Refaat 2011的数据集)。使用“IDVar”参数表示“CustID”包含ID信息,不应作为预测变量。

负载CreditCardDataSc =信用记分卡(数据,“IDVar”“CustID”
sc = creditscorecard与属性:GoodLabel: 0 responseval: 'status' WeightsVar: " VarNames: {1x11 cell} NumericPredictors: {1x6 cell} CategoricalPredictors: {'ResStatus' 'EmpStatus' 'OtherCC'} BinMissingData: 0 IDVar: 'CustID' PredictorVars: {1x9 cell} Data: [1200x11 table]

执行自动装箱。

Sc = autobinning(Sc);

逻辑回归模型需要与证据权重(WOE)数据相拟合。WOE转换是装箱的一种特殊情况,因为首先需要将数据装箱,然后将装箱的信息映射到相应的WOE值。这个转换是使用bindata函数。bindata具有为模型拟合步骤准备数据的参数。通过设置bindata的名称-值对参数“OutputType”WOEModelInput”

  • 所有预测器都转换为WOE值。

  • 输出只包含预测器和响应(no“IDVar”或任何未使用的变量)。

  • 具有无限或未定义的预测符(悲哀的价值观被抛弃了。

  • 响应值被映射,所以“Good”是1“坏”就是0(这意味着较高的未缩放分数对应于更好、风险更低的客户)。

Bd = bindata(sc,“OutputType”“WOEModelInput”);

例如,变量原始数据中的前十行“CustAge”“ResStatus”“CustIncome”,“状态”(响应变量)是这样的:

数据(1:10,{“CustAge”“ResStatus”“CustIncome”“状态”})
ans =10×4表CustAge ResStatus CustIncome status _______ __________ __________ ______ 53租户50000 0 61房主52000 0 47租户37000 0 50房主53000 0 68房主53000 0 65房主48000 0 34房主32000 1 50其他51000 0 50租户52000 1 49房主53000 1

下面是调用后相同的十行bindata使用名称-值对参数“OutputType”设置为“WOEModelInput”

bd (1:10, {“CustAge”“ResStatus”“CustIncome”“状态”})
ans =10×4表CustAge ResStatus CustIncome status ________ _________ __________ ______ 0.21378 -0.095564 0.47972 1 0.62245 0.019329 0.47972 1 0.18758 -0.095564 -0.026696 1 0.21378 0.019329 0.47972 1 0.62245 0.019329 0.47972 1 -0.39568 0.019329 -0.29217 0 0.21378 0.20049 0.47972 1 0.21378 -0.095564 0.47972 0 0.21378 0.019329 0.47972 0

使用统计和机器学习工具箱™功能逐步拟合逻辑线性回归模型stepwiseglm的值使用非默认值“囚禁”而且“PRemove”可选参数。的预测因素“ResStatus”而且“OtherCC”通常包括在逻辑线性回归模型中,使用逐步过程的默认选项。

MDL = stepwiseglm(bd,“不变”“分布”“二”...“上”“线性”“囚禁”, 0.025,“PRemove”, 0.05)
1.添加CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08添加TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-063 .添加AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601。5.添加EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257。添加CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
mdl =广义线性回归模型:logit(status) ~ 1 + CustAge + EmpStatus + CustIncome + TmWBank + AMBalance分布=二项估计系数:估计SE tStat pValue ________ ________ ______ __________(拦截)0.70263 0.063759 11.02 3.0544e-28 CustAge 0.57265 0.2482 2.3072 0.021043 EmpStatus 0.88356 0.29193 3.0266 0.002473 CustIncome 0.70399 0.21781 3.2321 0.001229 TmWBank 1.1 0.23185 4.7443 2.0924e-06 AMBalance 1.0313 0.32007 3.2221 0.0012724 1200观测值,1194误差自由度离散度:1 Chi^2统计与常数模型:81.4,p值= 4.18e-16

使用setmodel更新模型预测因子和模型系数creditscorecard对象。的ModelPredictorsInput参数没有显式地包括用于截取的字符串。然而,ModelCoefficientsInput参数确实将截取信息作为其第一个元素。

ModelPredictors = mdl。PredictorNames
ModelPredictors =5 x1细胞{'CustAge'} {'EmpStatus'} {'CustIncome'} {'TmWBank'} {'AMBalance'}
模型系数= mdl.Coefficients.Estimate
ModelCoefficients =6×10.7026 0.5726 0.8836 0.7040 1.1000 1.0313
sc = setmodel(sc,ModelPredictors,ModelCoefficients);

通过显示记分卡点,验证所需的模型预测器是记分卡预测器的一部分。

PI = displaypoints(sc)
π=30×3表预测本点  ______________ _________________ _________ {' CustAge’}{[无穷,33)的-0.10354}{‘CustAge}{[33岁,37)的-0.086059}{‘CustAge}{[37、40)的-0.010713}{‘CustAge}{[40岁,46)的0.089757}{‘CustAge}{[46岁,48)的0.24794}{‘CustAge}{[48, 58)的0.26294}{“CustAge”}{的[58岁的Inf]} 0.49697{‘CustAge}{“失踪> <”}南{‘EmpStatus}{‘未知’}-0.035716{‘EmpStatus}{“雇佣”}0.35417{‘EmpStatus}{“失踪> <”}南{‘CustIncome}{-0.41884}[无穷,29000){'CustIncome'} {'[29000,33000)'} -0.065161 {'CustIncome'} {'[33000,35000)'} 0.092353 {'CustIncome'} {'[35000,40000)'} 0.12173 {'CustIncome'} {'[40000,42000)'} 0.13259}

输入参数

全部折叠

信用记分卡模型,指定为creditscorecard对象。使用creditscorecard要创建creditscorecard对象。

包含在拟合模型中的预测器名称,指定为字符向量的单元格数组{‘PredictorName1’,‘PredictorName2’,…}.类型中的预测器变量名称必须匹配creditscorecard对象。

请注意

不包括常数项的字符向量ModelPredictorssetmodel内部处理“(拦截)”项基于模型系数的数量(见ModelCoefficients).

数据类型:细胞

对应于模型预测因子的模型系数,指定为模型系数的数值数组,(coeff1、coeff2 . .).如果N是否提供了预测器名称的数量ModelPredictors的大小ModelCoefficients可以NN+ 1。如果ModelCoefficientsN+1个元素,则第一个系数作为“(拦截)”适合的模型。否则,“(拦截)”设置为0

数据类型:

输出参数

全部折叠

信用记分卡模型,作为更新返回creditscorecard对象。的creditscorecard对象包含关于拟合模型的模型预测因子和系数的信息。的详细信息creditscorecard对象,看到creditscorecard

更多关于

全部折叠

使用流程setmodel

当使用setmodel,有两种可能的工作流程,将最终的模型预测因子和模型系数设置为acreditscorecard对象。

第一个工作流是:

  • 使用fitmodel获取可选输出参数mdl.这是一个GeneralizedLinearModel对象,您可以添加和删除项,或修改逐步过程的参数。模型中只有线性项(没有交互或任何其他高阶项)。

  • 一旦GeneralizedLinearModel对象是满意的,最后设定模型的预测因子和模型系数creditscorecard对象使用setmodel的输入参数ModelPredictors而且ModelCoefficients

另一个工作流程是:

  • 获取证据权重(WOE)数据使用bindata.使用“WOEModelInput”选项。“OutputType”中的名称-值对参数bindata确保:

    • 预测器数据转换为WOE。

    • 只有那些容器具有有限WOE值的预测器才会被包括在内。

    • 响应变量放在最后一列。

    • 映射响应变量(“Good”是1“坏”就是0).

  • 使用上一步的数据来拟合线性逻辑回归模型(模型中只有线性项,没有相互作用,或任何其他高阶项)。比如,stepwiseglm

  • 一旦GeneralizedLinearModel对象是满意的,最后设定模型的预测因子和模型系数creditscorecard对象使用setmodel的输入参数ModelPredictors而且ModelCoefficients

参考文献

[1]安德森信用评分工具包。牛津大学出版社,2007年。

[2] Refaat, M。信用风险记分卡:使用SAS开发和实现。lulu.com, 2011。

在R2014b中引入