Probit

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

Описание

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

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

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

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

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

Создание

Описание

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

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

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

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

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

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

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

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

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

Данные в виде таблицы, где первым столбцом является IDVar, последним столбцом является ResponseVar, и всеми другими столбцами является LoanVars.

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

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

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

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

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

Пример: ProbitPDModel = fitLifetimePDModel(data(TrainDataInd,:),"Probit",'ModelID',"Probit_A",'Descripion',"Probit_model",'AgeVar',"YOB",'IDVar',"ID",'LoanVars',"ScoreGroup",'MacroVars',{'GDP','Market'},'ResponseVar',"Default")

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

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

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

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

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

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

        ModelID: "Probit"
    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:
    probit(Default) ~ 1 + ScoreGroup + YOB + GDP + Market
    Distribution = Binomial

Estimated Coefficients:
                               Estimate        SE         tStat       pValue   
                              __________    _________    _______    ___________

    (Intercept)                  -1.6267      0.03811    -42.685              0
    ScoreGroup_Medium Risk      -0.26542      0.01419    -18.704     4.5503e-78
    ScoreGroup_Low Risk         -0.46794     0.016364    -28.595     7.775e-180
    YOB                         -0.11421    0.0049724    -22.969    9.6208e-117
    GDP                        -0.041537     0.014807    -2.8052      0.0050291
    Market                    -0.0029609    0.0010618    -2.7885      0.0052954


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.0095
    0.0054
    0.0045
    0.0039
    0.0036
    0.0036
    0.0017
    0.0009

Используйте predictLifetime предсказать пожизненные совокупные значения PD (вычисляющий крайний и значения PD выживания также поддерживается). predictLifetime функционируйте использует переменную ID (см. 'IDVar' свойство для Logistic объект), чтобы преобразовать условные ФУНТЫ к совокупным ФУНТАМ для каждого ID.

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

    0.0095
    0.0149
    0.0193
    0.0232
    0.0267
    0.0302
    0.0318
    0.0327

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

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

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

    Probit, test data    0.69984

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

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

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

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

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

    Probit, grouped by Year, test data    0.00039494

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

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

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

Больше о

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

Ссылки

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

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

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

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

Введенный в R2020b
Для просмотра документации необходимо авторизоваться на сайте