exponenta event banner

Логистический

Создать Logistic объект модели для пожизненной вероятности дефолта

Описание

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

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

  2. Использовать predict для прогнозирования условного PD и predictLifetime для прогнозирования времени жизни PD.

  3. Использовать modelDiscrimination для возврата данных AUROC и ROC. Результаты можно распечатать с помощью modelDiscriminationPlot.

  4. Использовать modelAccuracy для возврата RMSE наблюдаемых и прогнозируемых данных PD. Результаты можно распечатать с помощью modelAccuracyPlot.

Создание

Описание

пример

LogisticPDModel = fitLifetimePDModel(data,ModelType) создает Logistic Объект модели PD.

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

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

  • LoanVars включает все столбцы, начиная со второго и заканчивая вторым столбцами data вход.

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

пример

LogisticPDModel = fitLifetimePDModel(___,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к входным аргументам в предыдущем синтаксисе. Необязательные аргументы пары имя-значение задают свойства объекта модели. Например, LogisticPDModel = fitLifetimePDModel(data(TrainDataInd,:),"Logistic",'ModelID',"Logistic_A",'Description',"Logisitic_model",'AgeVar',"YOB",'IDVar',"ID",'LoanVars',"ScoreGroup','MacroVars',{'GDP','Market',}'ResponseVar',"Default") создает Logistic объект модели.

Входные аргументы

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

Данные, указанные как таблица, в которой первый столбец IDVar, последний столбец - ResponseVar, и все остальные столбцы LoanVars.

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

Тип модели, указанный как строка со значением "Logistic" или символьный вектор со значением 'Logistic'.

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

Logistic Аргументы пары «имя-значение»

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

Пример: LogisticPDModel = fitLifetimePDModel(data(TrainDataInd,:),"Logistic",'ModelID',"Logistic_A",'Description',"Logisitic_model",'AgeVar',"YOB",'IDVar',"ID",'LoanVars',"ScoreGroup','MacroVars',{'GDP','Market',}'ResponseVar',"Default")

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

Свойства

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

Идентификатор пользовательской модели, возвращаемый в виде строки.

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

Определяемое пользователем описание, возвращаемое в виде строки.

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

Модель, возвращенная как вектор.

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

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

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

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

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

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

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

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

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

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

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

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

predictВычислить условный PD
predictLifetimeВычислите совокупный срок службы PD, предельный PD и вероятность выживания
modelDiscriminationВычисление данных AUROC и ROC
modelAccuracyВычислить RMSE прогнозируемых и наблюдаемых PD по сгруппированным данным
modelDiscriminationPlotГрафик кривой ROC
modelAccuracyPlotГрафик наблюдаемых показателей по умолчанию по сравнению с прогнозируемыми ПД на сгруппированных данных

Примеры

свернуть все

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

Загрузить данные

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

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));

Создать Logistic Модель жизненного цикла PD

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

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

        ModelID: "Logistic"
    Description: ""
          Model: [1x1 classreg.regr.CompactGeneralizedLinearModel]
          IDVar: "ID"
         AgeVar: "YOB"
       LoanVars: "ScoreGroup"
      MacroVars: ["GDP"    "Market"]
    ResponseVar: "Default"

Отображение базовой модели.

disp(pdModel.Model)
Compact generalized linear regression model:
    logit(Default) ~ 1 + ScoreGroup + YOB + GDP + Market
    Distribution = Binomial

Estimated Coefficients:
                               Estimate        SE         tStat       pValue   
                              __________    _________    _______    ___________

    (Intercept)                  -2.7422      0.10136    -27.054     3.408e-161
    ScoreGroup_Medium Risk      -0.68968     0.037286    -18.497     2.1894e-76
    ScoreGroup_Low Risk          -1.2587     0.045451    -27.693    8.4736e-169
    YOB                         -0.30894     0.013587    -22.738    1.8738e-114
    GDP                         -0.11111     0.039673    -2.8006      0.0051008
    Market                    -0.0083659    0.0028358    -2.9502      0.0031761


388097 observations, 388091 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 1.85e+03, p-value = 0

Прогнозирование условного и срока службы PD

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

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

    0.0092
    0.0053
    0.0045
    0.0039
    0.0037
    0.0037
    0.0019
    0.0012

Использовать predictLifetime для прогнозирования совокупных значений PD за время жизни (также поддерживается вычисление предельных значений PD и значений PD выживания). predictLifetime функция использует переменную ID (см. 'IDVar' для свойства Logistic объект) для преобразования условных PDS в накопительные PDS для каждого идентификатора.

LifetimePD = predictLifetime(pdModel,dataCustomer1)
LifetimePD = 8×1

    0.0092
    0.0145
    0.0189
    0.0228
    0.0264
    0.0300
    0.0319
    0.0330

Проверка модели

Использовать modelDiscrimination для измерения ранжирования клиентов по PD.

DiscMeasure = modelDiscrimination(pdModel,data(TestDataInd,:),'DataID','test data');
disp(DiscMeasure)
                            AUROC 
                           _______

    Logistic, test data    0.70009

Использовать modelDiscriminationPlot для визуализации кривой ROC.

modelDiscriminationPlot(pdModel,data(TestDataInd,:),'DataID','test data');

Figure contains an axes. The axes with title ROC test data Logistic, AUROC = 0.70009 contains an object of type line. This object represents Logistic.

Использовать modelAccuracy для измерения точности прогнозируемых значений PD. modelAccuracy функция требует переменной группировки и сравнивает точность наблюдаемой скорости по умолчанию в группе со средней прогнозируемой PD для группы. Например, можно сгруппировать по календарному году с помощью 'Year' переменная.

AccMeasure = modelAccuracy(pdModel,data(TestDataInd,:),'Year','DataID','test data');
disp(AccMeasure)
                                              RMSE  
                                            ________

    Logistic, grouped by Year, test data    0.000453

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

modelAccuracyPlot(pdModel,data(TestDataInd,:),'Year','DataID','test data');

Figure contains an axes. The axes with title Scatter Grouped by Year test data Logistic, RMSE = 0.000453 contains 2 objects of type line. These objects represent Observed, Logistic.

Ссылки

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

[2] Беллини, Тициано. МСФО (IFRS) 9 и CECL «Моделирование и валидация кредитных рисков: практическое руководство с примерами, работающими в R и SAS». Сан-Диего, Калифорния: Elsevier, 2019.

[3] Бриден, Иосиф. Жизнь с CECL: The Modeling Dictionary. Santa Fe, NM: Prescient Models LLC, 2018.

Представлен в R2020b