Cox

Создайте Cox объект модели для пожизненной вероятности значения по умолчанию

Описание

Создайте и анализируйте Cox объект модели, чтобы вычислить пожизненную вероятность значения по умолчанию (PD) с помощью этого рабочего процесса:

  1. Использование fitLifetimePDModel создать Cox объект модели.

  2. Использование predict предсказать условный PD и predictLifetime предсказать пожизненный PD.

  3. Использование modelDiscrimination возвратить данные ROC и AUROC. Можно построить использование результатов modelDiscriminationPlot.

  4. Использование modelAccuracy возвратить среднеквадратичную ошибку (RMSE) наблюдаемых и предсказанных данных о PD. Можно построить использование результатов modelAccuracyPlot.

Создание

Описание

пример

CoxPDModel = fitLifetimePDModel(data,ModelType,'AgeVar',agevar_value) создает Cox Объект модели PD.

Если вы не указываете переменную информацию для IDVar, LoanVars, MacroVars, и ResponseVarто:

  • IDVar установлен в первый столбец в data входной параметр.

  • LoanVars набор должен включать все столбцы от второго до предпоследних столбцов data входной параметр.

  • ResponseVar установлен в последний столбец в data входной параметр.

пример

CoxPDModel = fitLifetimePDModel(___,Name,Value) устанавливает дополнительные свойства с помощью дополнительных аргументов пары "имя-значение" в дополнение к обязательным аргументам в предыдущем синтаксисе. Например, CoxPDModel = fitLifetimePDModel(data(TrainDataInd,:),"Cox",'ModelID',"Cox_A",'Descripion',"Cox_model",'AgeVar',"YOB",'IDVar',"ID",'LoanVars',"ScoreGroup",'MacroVars',{'GDP','Market'},'ResponseVar',"Default",'TimeInterval',1) создает CoxPDModel использование Cox тип модели. Можно задать несколько аргументов пары "имя-значение".

Входные параметры

развернуть все

Данные в виде таблицы, в форме данных о панели. Данные должны содержать ID столбец и Age столбец. Переменная отклика должна быть бинарной переменной со значением 0 или 1, с 1 указание на значение по умолчанию.

Типы данных: table

Тип модели в виде строки со значением "Cox" или вектор символов со значением 'Cox'.

Типы данных: char | string

Cox Аргументы в виде пар имя-значение

Задайте требуемые и дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: CoxPDModel = fitLifetimePDModel(data(TrainDataInd,:),"Cox",'ModelID',"Cox_A",'Descripion',"Cox_model",'AgeVar',"YOB",'IDVar',"ID",'LoanVars',"ScoreGroup",'MacroVars',{'GDP','Market'},'ResponseVar',"Default",'TimeInterval',1)
Необходимый Cox Аргумент пары "имя-значение"

развернуть все

Переменная возраста указание, который столбец в data содержит информацию о возрасте ссуды в виде разделенной запятой пары, состоящей из 'AgeVar' и строка или вектор символов.

Примечание

Необходимый аргумент AgeVar значения имени не обработан как предиктор в Cox пожизненная модель PD. При использовании Cox модель, необходимо задать переменные предикторы с помощью LoanVars или MacroVars. AgeVar значения являются временами события для базовой Cox пропорциональная модель опасностей.

AgeVar значения для каждого ID должны увеличиваться. Если существует неположительный шаг возраста, fitLifetimePDModel предупреждает, когда вы создаете Cox модель и удаляет идентификаторы с неположительным шагом возраста. По умолчанию, TimeInterval значение установлено к наиболее распространенному шагу возраста в обучающих данных.

Типы данных: string | char

Дополнительный Cox Аргументы в виде пар имя-значение

развернуть все

Пользовательская модель ID в виде разделенной запятой пары, состоящей из 'ModelID' и строка или вектор символов. Программное обеспечение использует ModelID к форматам вывода и, как ожидают, будет короток.

Типы данных: string | char

Пользовательское описание для модели в виде разделенной запятой пары, состоящей из 'Description' и строка или вектор символов.

Типы данных: string | char

Переменная ID, указывающая, который столбец в data содержит ссуду или ID заемщика в виде разделенной запятой пары, состоящей из 'IDVar' и строка или вектор символов.

Типы данных: string | char

Переменные ссуды, указывающие, который столбец в data содержит специфичную для ссуды информацию, такую как счет происхождения или соотношение стоимости актива к сумме кредита в виде разделенной запятой пары, состоящей из 'LoanVars' и массив строк или массив ячеек из символьных векторов.

Типы данных: string | cell

Макро-переменные, указывающие, который столбец в data содержит макроэкономическую информацию, такую как рост валового внутреннего продукта (ВВП) или уровень безработицы в виде разделенной запятой пары, состоящей из 'MacroVars' и массив строк или массив ячеек из символьных векторов.

Типы данных: string | cell

Переменная, указывающая, который столбец в data содержит переменную отклика в виде разделенной запятой пары, состоящей из 'ResponseVar' и логическое значение.

Примечание

Переменная отклика в data должна быть бинарная переменная с 0 или 1 значения, с 1 указание на значение по умолчанию.

В моделях PD времени жизни Cox, ResponseVar значения, задают информацию о цензурировании для базовой Cox пропорциональная модель опасностей.

Типы данных: логический

Расстояние между значениями возраста в обучающих данных в панели data введите в виде разделенной запятой пары, состоящей из 'TimeInterval' и положительный числовой скаляр.

Используйте 'TimeInterval' аргумент значения имени, чтобы подбирать зависящие от времени модели и также как временной интервал для расчета PD, когда вы используете predict функция. Например, если данные о возрасте (AgeVar) 1, 2, 3..., затем TimeInterval 1; если данные о возрасте 0.25, 0.5, 0.75..., то TimeInterval 0.25. Для получения дополнительной информации смотрите Временной интервал для Моделей Cox и Пожизненного Предсказания и Временной интервал.

Примечание

В отличие от Logistic и Probit модели, Cox модель требует AgeVar переменная. По умолчанию, если вы не задаете TimeInterval при создании Cox модель, TimeInterval выведен из шага в AgeVar значения в учебном data.

Типы данных: double

Свойства

развернуть все

Пользовательская модель ID, возвращенная как строка.

Типы данных: string

Пользовательское описание, возвращенное как строка.

Типы данных: string

Базовая статистическая модель, возвращенная как возвращенный как Cox пропорциональный объект модели опасностей. Для получения дополнительной информации смотрите fitcox и CoxModel.

Типы данных: CoxModel

Переменная ID, указывающая, который столбец в data содержит ссуду или ID заемщика, возвращенный как строка.

Типы данных: string

Переменная возраста указание, который столбец в data содержит информацию о возрасте ссуды, возвращенную как строка.

Типы данных: string

Переменные ссуды, указывающие, который столбец в data содержит специфичную для ссуды информацию, возвращенную как массив строк.

Типы данных: string

Макро-переменные, указывающие, который столбец в data содержит макроэкономическую информацию, возвращенную как массив строк.

Типы данных: string

Переменная, указывающая, который столбец в data содержит переменную отклика, возвращенную как строка.

Типы данных: string

Это свойство доступно только для чтения.

Расстояние между значениями возраста в панели data введите, возвращенный как скаляр, положительный числовой.

Типы данных: double

Фактор экстраполяции, возвращенный в виде положительного числа между 0 и 1.

По умолчанию, ExtrapolationFactor установлен в 1. Для значений возраста (AgeVar) больше, чем максимальный возраст, наблюдаемый в обучающих данных, условном PD, вычисленном с predict, использует максимальный возраст, наблюдаемый в обучающих данных. В частности, предсказанное значение PD является постоянным, если значения предиктора не изменяются и только изменение значений возраста когда ExtrapolationFactor 1. Для получения дополнительной информации смотрите Экстраполяцию для Моделей Cox, Фактор Экстраполяции для Моделей Cox и Использование Модель PD Времени жизни Cox, чтобы Предсказать Условный PD.

Типы данных: double

Функции объекта

predictВычислите условный PD
predictLifetimeВычислите совокупный пожизненный PD, крайний PD и вероятность выживания
modelDiscriminationВычислите данные ROC и AUROC
modelAccuracyВычислите RMSE предсказанных и наблюдаемых ФУНТОВ на сгруппированных данных
modelDiscriminationPlotПостройте кривую ROC
modelAccuracyPlotПостройте наблюдаемые уровни по умолчанию по сравнению с предсказанными ФУНТАМИ на сгруппированных данных

Примеры

свернуть все

В этом примере показано, как использовать fitLifetimePDModel создать Cox модель с помощью кредита и макроэкономических данных.

Загрузка данных

Загрузите данные о кредитном портфеле.

load RetailCreditPanelData.mat
disp(head(data))
    ID    ScoreGroup    YOB    Default    Year
    __    __________    ___    _______    ____

    1      Low Risk      1        0       1997
    1      Low Risk      2        0       1998
    1      Low Risk      3        0       1999
    1      Low Risk      4        0       2000
    1      Low Risk      5        0       2001
    1      Low Risk      6        0       2002
    1      Low Risk      7        0       2003
    1      Low Risk      8        0       2004
disp(head(dataMacro))
    Year     GDP     Market
    ____    _____    ______

    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(head(data))
    ID    ScoreGroup    YOB    Default    Year     GDP     Market
    __    __________    ___    _______    ____    _____    ______

    1      Low Risk      1        0       1997     2.72      7.61
    1      Low Risk      2        0       1998     3.57     26.24
    1      Low Risk      3        0       1999     2.86      18.1
    1      Low Risk      4        0       2000     2.43      3.19
    1      Low Risk      5        0       2001     1.26    -10.51
    1      Low Risk      6        0       2002    -0.59    -22.95
    1      Low Risk      7        0       2003     0.63      2.78
    1      Low Risk      8        0       2004     1.85      9.48

Данные о разделе

Разделите данные на обучение и протестируйте разделы.

nIDs = max(data.ID);
uniqueIDs = unique(data.ID);

rng('default'); % For reproducibility
c = cvpartition(nIDs,'HoldOut',0.4);

TrainIDInd = training(c);
TestIDInd = test(c);

TrainDataInd = ismember(data.ID,uniqueIDs(TrainIDInd));
TestDataInd = ismember(data.ID,uniqueIDs(TestIDInd));

Создайте Cox Пожизненная модель PD

Используйте fitLifetimePDModel создать Cox модель с помощью обучающих данных.

pdModel = fitLifetimePDModel(data(TrainDataInd,:),"Cox",...
    'AgeVar','YOB',...
    'IDVar','ID',...
    'LoanVars','ScoreGroup',...
    'MacroVars',{'GDP','Market'},...
    'ResponseVar','Default');
disp(pdModel)
  Cox with properties:

           TimeInterval: 1
    ExtrapolationFactor: 1
                ModelID: "Cox"
            Description: ""
                  Model: [1x1 CoxModel]
                  IDVar: "ID"
                 AgeVar: "YOB"
               LoanVars: "ScoreGroup"
              MacroVars: ["GDP"    "Market"]
            ResponseVar: "Default"

Отобразите базовую модель.

disp(pdModel.Model)
Cox Proportional Hazards regression model:

                                 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

Подтвердите модель

Используйте modelDiscrimination измерять рейтинг клиентов PD.

DataSetChoice = "Testing";
if DataSetChoice =="Training"
    Ind = TrainDataInd;
else
    Ind = TestDataInd;
end

DiscMeasure = modelDiscrimination (pdModel, данные (Ind, :),'SegmentBy','ScoreGroup')
DiscMeasure=3×1 table
                                    AUROC 
                                   _______

    Cox, ScoreGroup=High Risk      0.64112
    Cox, ScoreGroup=Medium Risk    0.61989
    Cox, ScoreGroup=Low Risk        0.6314

disp(DiscMeasure)
                                    AUROC 
                                   _______

    Cox, ScoreGroup=High Risk      0.64112
    Cox, ScoreGroup=Medium Risk    0.61989
    Cox, ScoreGroup=Low Risk        0.6314

Используйте modelDiscriminationPlot визуализировать кривую ROC.

modelDiscriminationPlot(pdModel,data(Ind,:),'SegmentBy','ScoreGroup')

Figure contains an axes object. The axes object with title ROC Segmented by ScoreGroup contains 3 objects of type line. These objects represent Cox, High Risk, AUROC = 0.64112, Cox, Medium Risk, AUROC = 0.61989, Cox, Low Risk, AUROC = 0.6314.

Используйте modelAccuracy измерять точность (или калибровка) предсказанных значений PD. modelAccuracy функция требует сгруппированной переменной и сравнивает точность наблюдаемого уровня по умолчанию в группе со средним предсказанным PD для группы.

AccMeasure = modelAccuracy(pdModel,data(Ind,:),{'YOB','ScoreGroup'})
AccMeasure=table
                                         RMSE   
                                       _________

    Cox, grouped by YOB, ScoreGroup    0.0012471

disp(AccMeasure)
                                         RMSE   
                                       _________

    Cox, grouped by YOB, ScoreGroup    0.0012471

Используйте modelAccuracyPlot визуализировать наблюдаемые уровни по умолчанию по сравнению с предсказанным PD.

modelAccuracyPlot(pdModel,data(Ind,:),{'YOB','ScoreGroup'})

Figure contains an axes object. The axes object with title Scatter Grouped by YOB and ScoreGroup Cox, RMSE = 0.0012471 contains 6 objects of type line. These objects represent High Risk, Observed, Medium Risk, Observed, Low Risk, Observed, High Risk, Cox, Medium Risk, Cox, Low Risk, Cox.

Предскажите условный и пожизненный PD

Используйте predict функция, чтобы предсказать условные значения PD. Предсказание является предсказанием строки строкой.

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

    0.0162
    0.0091
    0.0081
    0.0073
    0.0064
    0.0072
    0.0030
    0.0016
    0.0162
    0.0091
      ⋮

Используйте predictLifetime предсказать пожизненные совокупные значения PD (вычисляющий крайний и значения PD выживания также поддерживается).

LifetimePD = predictLifetime(pdModel,data(Ind,:))
LifetimePD = 258627×1

    0.0162
    0.0251
    0.0330
    0.0400
    0.0461
    0.0530
    0.0559
    0.0574
    0.0162
    0.0251
      ⋮

Больше о

развернуть все

Ссылки

[1] Baesens, Барт, Дэниел Роеш и Харальд Шойле. Аналитика кредитного риска: техники измерений, приложения и примеры в SAS. Вайли, 2016.

[2] Беллини, Тициано. МСФО 9 и моделирование кредитного риска CECL и валидация: практическое руководство с примерами работало в R и SAS. Сан-Диего, CA: Elsevier, 2019.

[3] Breeden, Джозеф. Проживание с CECL: словарь моделирования. Санта-Фе, NM: наделенный даром предвидения LLC моделей, 2018.

[4] Roesch, Дэниел и Харальд Шойле. Глубокий Кредитный риск: Машинное обучение с Python. Независимо опубликованный, 2020.

Введенный в R2021b