predictLifetime

Вычислите совокупный пожизненный PD, крайний PD и вероятность выживания

Описание

пример

LifeTimePredictedPD = predictLifetime(pdModel,data) вычисляет совокупную пожизненную вероятность значения по умолчанию (PD), крайний PD и вероятность выживания.

пример

LifeTimePredictedPD = predictLifetime(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе.

Примеры

свернуть все

В этом примере показано, как использовать fitLifetimePDModel соответствовать данным Probit модель и затем предсказывает пожизненную вероятность значения по умолчанию (PD).

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

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

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 на обучении и тестовых данных

Используйте predictLifetime функция, чтобы получить пожизненные ФУНТЫ на обучении или тестовых данных. Чтобы получить условные ФУНТЫ, используйте predict функция. Для проверки допустимости модели используйте modelDiscrimination и modelAccuracy функции на обучении или тестовых данных.

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

% Predict lifetime PD
PD = predictLifetime (pdModel, данные (Ind, :));
голова (данные (Ind, :))
ans=8×7 table
    ID    ScoreGroup     YOB    Default    Year     GDP     Market
    __    ___________    ___    _______    ____    _____    ______

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

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

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

DataPredictLifetime.mat файл содержит проекции для двух кредитов и также для макро-переменных. Одной ссуде три года в конце 2 019 со временем жизни 10 лет, и другой ссуде шесть лет со временем жизни 10 лет. ScoreGroup является постоянным, и значения возраста являются инкрементными. Для макро-переменных прогнозы для макро-предикторов должны охватить самое долгое время жизни в портфеле.

load DataPredictLifetime.mat

disp(LoanData)
     ID      ScoreGroup      YOB    Year
    ____    _____________    ___    ____

    1304    "Medium Risk"     4     2020
    1304    "Medium Risk"     5     2021
    1304    "Medium Risk"     6     2022
    1304    "Medium Risk"     7     2023
    1304    "Medium Risk"     8     2024
    1304    "Medium Risk"     9     2025
    1304    "Medium Risk"    10     2026
    2067    "Low Risk"        7     2020
    2067    "Low Risk"        8     2021
    2067    "Low Risk"        9     2022
    2067    "Low Risk"       10     2023
disp(MacroScenario)
    Year    GDP    Market
    ____    ___    ______

    2020    1.1     4.5  
    2021    0.9     1.5  
    2022    1.2       5  
    2023    1.4     5.5  
    2024    1.6       6  
    2025    1.8     6.5  
    2026    1.8     6.5  
    2027    1.8     6.5  
LifetimeData = join(LoanData,MacroScenario);
disp(LifetimeData)
     ID      ScoreGroup      YOB    Year    GDP    Market
    ____    _____________    ___    ____    ___    ______

    1304    "Medium Risk"     4     2020    1.1     4.5  
    1304    "Medium Risk"     5     2021    0.9     1.5  
    1304    "Medium Risk"     6     2022    1.2       5  
    1304    "Medium Risk"     7     2023    1.4     5.5  
    1304    "Medium Risk"     8     2024    1.6       6  
    1304    "Medium Risk"     9     2025    1.8     6.5  
    1304    "Medium Risk"    10     2026    1.8     6.5  
    2067    "Low Risk"        7     2020    1.1     4.5  
    2067    "Low Risk"        8     2021    0.9     1.5  
    2067    "Low Risk"        9     2022    1.2       5  
    2067    "Low Risk"       10     2023    1.4     5.5  

Предскажите пожизненные ФУНТЫ и сохраните выход как новый столбец таблицы для удобства.

LifetimeData.PredictedPD = predictLifetime(pdModel,LifetimeData);
disp(LifetimeData)
     ID      ScoreGroup      YOB    Year    GDP    Market    PredictedPD
    ____    _____________    ___    ____    ___    ______    ___________

    1304    "Medium Risk"     4     2020    1.1     4.5       0.0080202 
    1304    "Medium Risk"     5     2021    0.9     1.5        0.014093 
    1304    "Medium Risk"     6     2022    1.2       5        0.018156 
    1304    "Medium Risk"     7     2023    1.4     5.5        0.020941 
    1304    "Medium Risk"     8     2024    1.6       6        0.022827 
    1304    "Medium Risk"     9     2025    1.8     6.5        0.024086 
    1304    "Medium Risk"    10     2026    1.8     6.5        0.024945 
    2067    "Low Risk"        7     2020    1.1     4.5       0.0015728 
    2067    "Low Risk"        8     2021    0.9     1.5       0.0027146 
    2067    "Low Risk"        9     2022    1.2       5        0.003431 
    2067    "Low Risk"       10     2023    1.4     5.5       0.0038939 

Визуализируйте предсказанный пожизненный PD для компании.

CompanyIDChoice = "1304";
CompanyID = str2double (CompanyIDChoice);
IndPlot = LifetimeData.ID == CompanyID;
график (LifetimeData.YOB(IndPlot), LifetimeData.PredictedPD(IndPlot))
сетка on
xlabel'YOB')
xticks (LifetimeData.YOB(IndPlot))
yLabel 'Lifetime PD')
заголовок (strcat ("Company ", CompanyIDChoice))

Figure contains an axes object. The axes object with title Company 1304 contains an object of type line.

В этом примере показано, как временной интервал играет важную роль для пожизненного предсказания при использовании Logistic, Probit, или Cox модель для вероятности значения по умолчанию (PD). Каждое значение PD является вероятностью значения по умолчанию для данного "временного интервала" (например, временной интервал 1 года), строки данных, переданные в для пожизненного предсказания, должны иметь ту же периодичность как временной интервал (то есть, вы не можете передать строку, которая представляет четверть, и затем строку, которая представляет год, и затем тот, который представляет 5 лет. Необходимо передать данные в течение периодов 1, 2, 3, 4..., но не 1, 3, 7, 10, 20. Или если временной интервал равняется 3, необходимо передать периоды 3, 6, 9... или 2, 5, 8..., но не 3, 7, 15, 30.

Соответствуйте и подтвердите модель

load RetailCreditPanelData.mat
data = join(data,dataMacro);
head(data)
ans=8×7 table
    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

Выберите тип модели. Поведение подтверждения правильности данных в predictLifetime зависит от типа модели. Для получения дополнительной информации смотрите Валидацию Ввода данных для Пожизненного Предсказания.

Временным интервалом в этом примере является 1. Это значение хранится в Cox модели как TimeInterval свойство и это используются для подбора кривой и предсказания. Logistic и Probit модели не хранят информацию временного интервала.

ModelType = "cox";

pdModel = fitLifetimePDModel (данные, ModelType,...
   'IDVar','ID','AgeVar','YOB',...
   '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"

Условный PD и проверка допустимости модели

Условные значения PD возвращены predict сопоставимы с временным интервалом, используемым для обучения модель. В этом примере, все значения PD, возвращенные predict 1-летние вероятности значения по умолчанию. Нет никакой валидации периодичности во вводе данных для predict.

dataPredictExample = data([1 2 6 10 15],:);
pdExample = predict(pdModel,dataPredictExample)
pdExample = 5×1

    0.0089
    0.0052
    0.0038
    0.0094
    0.0031

Проверка допустимости модели сделана с помощью условного PD, возвращенного predict. Поэтому в modelDiscrimination нет никакой валидации периодичности строки или modelAccuracy. Однако проверка допустимости модели требует наблюдаемых величин переменной отклика, и определение значения по умолчанию, используемого для значений отклика валидации, должно быть сопоставимо с учебным data. Другими словами, если учебный data использует временной интервал 1, данные об ответе валидации не могут быть заданы с ежеквартальными данными по умолчанию. Нет никаких проверок периодичности строки на modelDiscrimination или modelAccuracy, это принято, что определение по умолчанию в данных о валидации сопоставимо с обучающими данными.

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

Figure contains an axes object. The axes object with title Scatter Grouped by YOB and ScoreGroup Cox, RMSE = 0.0003732 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

predictLifetime функция используется для расчета пожизненный PD. При создании пожизненных предсказаний:

  • Различный набор данных, вероятно, используется, не данные, которые вы использовали для обучения и валидации, но нового набора данных с перспективными проекциями для различных кредитов.

  • Спроектированные значения в пожизненном наборе данных предсказания охватывают несколько периодов вперед, потенциально несколько лет вперед.

Загрузите DataPredictLifetime.mat данные для пожизненного предсказания. Обратите внимание на то, что для предсказания, вы не должны передавать данные об ответе, вы только передаете предикторы. Вы только передаете значения отклика для подбора кривой или валидации, не для предсказания.

load DataPredictLifetime.mat
LifetimeData = join(LoanData,MacroScenario);
disp(LifetimeData)
     ID      ScoreGroup      YOB    Year    GDP    Market
    ____    _____________    ___    ____    ___    ______

    1304    "Medium Risk"     4     2020    1.1     4.5  
    1304    "Medium Risk"     5     2021    0.9     1.5  
    1304    "Medium Risk"     6     2022    1.2       5  
    1304    "Medium Risk"     7     2023    1.4     5.5  
    1304    "Medium Risk"     8     2024    1.6       6  
    1304    "Medium Risk"     9     2025    1.8     6.5  
    1304    "Medium Risk"    10     2026    1.8     6.5  
    2067    "Low Risk"        7     2020    1.1     4.5  
    2067    "Low Risk"        8     2021    0.9     1.5  
    2067    "Low Risk"        9     2022    1.2       5  
    2067    "Low Risk"       10     2023    1.4     5.5  

Строки имеют ежегодные данные, сопоставимые с временным интервалом, используемым для обучения. Вы видите это в обоих Year переменная и YOB переменная. Нет никаких флагов в этом наборе данных для пожизненных предсказаний.

LifetimeData.PD = predict(pdModel,LifetimeData);
LifetimeData.LifetimePD = predictLifetime(pdModel,LifetimeData)
LifetimeData=11×8 table
     ID      ScoreGroup      YOB    Year    GDP    Market        PD        LifetimePD
    ____    _____________    ___    ____    ___    ______    __________    __________

    1304    "Medium Risk"     4     2020    1.1     4.5       0.0081336    0.0081336 
    1304    "Medium Risk"     5     2021    0.9     1.5       0.0063861     0.014468 
    1304    "Medium Risk"     6     2022    1.2       5       0.0047416     0.019141 
    1304    "Medium Risk"     7     2023    1.4     5.5       0.0028262     0.021913 
    1304    "Medium Risk"     8     2024    1.6       6       0.0014844     0.023365 
    1304    "Medium Risk"     9     2025    1.8     6.5       0.0014517     0.024783 
    1304    "Medium Risk"    10     2026    1.8     6.5       0.0014517     0.026198 
    2067    "Low Risk"        7     2020    1.1     4.5       0.0016091    0.0016091 
    2067    "Low Risk"        8     2021    0.9     1.5       0.0009006    0.0025082 
    2067    "Low Risk"        9     2022    1.2       5      0.00085273    0.0033588 
    2067    "Low Risk"       10     2023    1.4     5.5      0.00083391    0.0041899 

Когда периодичность строк не совпадает с периодичностью в обучающих данных, пожизненные значения PD не могут быть правильно вычислены.

Измените выбранные строки с помощью SelectedRows переменная в коде, чтобы видеть поведение predictLifetime как периодичность изменений данных. (В качестве альтернативы YOB значения могут быть вручную изменены, чтобы ввести шаг возраста, противоречивый с временным интервалом 1 года.)

SelectedRows = 1:11; % Selecting all rows 1:11 is the same as the output above, no warnings
LifetimeData2 = LifetimeData(SelectedRows,{'ID','ScoreGroup','YOB','Year','GDP','Market'});
disp(LifetimeData2)
     ID      ScoreGroup      YOB    Year    GDP    Market
    ____    _____________    ___    ____    ___    ______

    1304    "Medium Risk"     4     2020    1.1     4.5  
    1304    "Medium Risk"     5     2021    0.9     1.5  
    1304    "Medium Risk"     6     2022    1.2       5  
    1304    "Medium Risk"     7     2023    1.4     5.5  
    1304    "Medium Risk"     8     2024    1.6       6  
    1304    "Medium Risk"     9     2025    1.8     6.5  
    1304    "Medium Risk"    10     2026    1.8     6.5  
    2067    "Low Risk"        7     2020    1.1     4.5  
    2067    "Low Risk"        8     2021    0.9     1.5  
    2067    "Low Risk"        9     2022    1.2       5  
    2067    "Low Risk"       10     2023    1.4     5.5  
LifetimeData2.PD = predict(pdModel,LifetimeData2);
LifetimeData2.LifetimePD = predictLifetime(pdModel,LifetimeData2);
disp(LifetimeData2)
     ID      ScoreGroup      YOB    Year    GDP    Market        PD        LifetimePD
    ____    _____________    ___    ____    ___    ______    __________    __________

    1304    "Medium Risk"     4     2020    1.1     4.5       0.0081336    0.0081336 
    1304    "Medium Risk"     5     2021    0.9     1.5       0.0063861     0.014468 
    1304    "Medium Risk"     6     2022    1.2       5       0.0047416     0.019141 
    1304    "Medium Risk"     7     2023    1.4     5.5       0.0028262     0.021913 
    1304    "Medium Risk"     8     2024    1.6       6       0.0014844     0.023365 
    1304    "Medium Risk"     9     2025    1.8     6.5       0.0014517     0.024783 
    1304    "Medium Risk"    10     2026    1.8     6.5       0.0014517     0.026198 
    2067    "Low Risk"        7     2020    1.1     4.5       0.0016091    0.0016091 
    2067    "Low Risk"        8     2021    0.9     1.5       0.0009006    0.0025082 
    2067    "Low Risk"        9     2022    1.2       5      0.00085273    0.0033588 
    2067    "Low Risk"       10     2023    1.4     5.5      0.00083391    0.0041899 

Различия в поведении зависят от типа модели и является ли переменная возраста частью модели. Можно изменить тип модели на подходящем шаге, чтобы видеть поведение для различных типов модели. Удалите переменную возраста (AgeVar) для Logistic и Probit модели, чтобы наблюдать поведение, когда входной параметр возраста не является частью модели. Обратите внимание на то, что вход возраста (AgeVar) аргумент требуется для Cox модель. Для получения дополнительной информации смотрите Ввод данных для Пожизненного Предсказания.

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

свернуть все

Вероятность модели по умолчанию в виде ранее созданного Logistic, Probit, или Cox объектное использование fitLifetimePDModel.

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

Пожизненные данные в виде NumRows- NumCols таблица со спроектированными значениями предиктора, чтобы сделать пожизненные предсказания. Имена предиктора и типы данных должны быть сопоставимы с базовой моделью. IDVar свойство pdModel вход используется, чтобы идентифицировать столбец, содержащий Значения идентификаторов в таблице, и идентификаторы используются, чтобы идентифицировать строки, соответствующие различным идентификаторам и сделать пожизненные предсказания для каждого ID.

Примечание

  • Строки, переданные в данных для пожизненного предсказания, должны иметь ту же периодичность, как временной интервал раньше подбирал модель. Например, если временной интервал, используемый для обучения, был одним годом, ввод данных для пожизненного предсказания не может иметь ежеквартальных данных или данных в течение каждых пяти лет.

  • Последовательные строки для того же ID должны соответствовать последовательным периодам. Например, если временной интервал, используемый для обучения, был одним годом, вы не можете пропустить годы и передать данные в течение многих лет 1, 2, 5, и 10.

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

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

Аргументы name-value

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

Пример: LifetimeData = predictLifetime(pdModel,Data,'ProbabilityType','survival')

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

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

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

свернуть все

Предсказанные пожизненные значения PD, возвращенные как NumRows- 1 числовой вектор.

Больше о

свернуть все

Пожизненный PD

Lifetime PD является вероятностью стандартного события за время жизни финансового актива.

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

PDcumulative(t)=P{Tt}

где T является временем, чтобы принять значение по умолчанию.

Например, предсказанное время жизни, совокупный PD в течение второго года является вероятностью что значения по умолчанию заемщика любое время между теперь и два года с этого времени.

Тесно связанной концепцией, используемой для расчета пожизненной Ожидаемой потери кредита (ECL), является marginal PD, данный

PDmarginal=PDcumulative(t)PDcumulative(t1)

Тесно связанной вероятностью является survival probability, который является дополнением интегральной вероятности и сообщается как

S(t)=P{T>t}=1PDcumulative(t)

Следующая рекурсивная формула показывает отношение между условными ФУНТАМИ и вероятностью выживания:

S(t0)=1S(t1)=S(t0)(1PD(t1))...S(tn)=S(tn1)(1PD(tn))

То, где t it i-1 = Δt для всего i = 1, …, n и Δt является временным интервалом, раньше подбирало модель. Для получения дополнительной информации смотрите Временной интервал для Логистических Моделей и Временной интервал для Нелинейных моделей вероятности с нормальным распределением. Другими словами, потому что значения PD на правой стороне формул являются вероятностями значения по умолчанию сроком на длину Δt, шаг между временами подряд в рекурсии должен всегда иметь длину Δt в течение всех периодов i = 1, 2, …, n.

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

Ввод данных для пожизненного предсказания

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

Ввод данных для predictLifetime находится в форме данных о панели, с несколькими строками для каждого ID. Существует неявная или явная метка времени для каждой строки, и шаг времени между последовательными строками должен быть эквивалентным, временной интервал раньше подбирал модель. Для получения дополнительной информации о временных интервалах смотрите Временной интервал для Моделей Cox, Временной интервал для Логистических Моделей и Временной интервал для Нелинейных моделей вероятности с нормальным распределением.

После обозначения пожизненного PD рекурсивные формулы описали в Пожизненном PD, метки времени t 1, t 2, …, t n между последовательными строками должен удовлетворить t it i-1 = Δt для всего i = 1, …, n, где Δt является временным интервалом, раньше подбирал модель. Другими словами:

  • Строки передаются в data вход для пожизненного предсказания должен иметь ту же периодичность, как временной интервал раньше подбирал модель. Например, если временной интервал, используемый для обучения, составлял 1 год, data вход для пожизненного предсказания не может иметь ежеквартальных данных или данных в течение каждых 5 лет.

  • последовательные строки для того же ID должны соответствовать последовательным периодам. Например, если временной интервал, используемый для обучения, составлял 1 год, вы не можете пропустить годы и передать данные в течение многих лет 1, 2, 5, и 10.

Предположим для конкретности, что временной интервал Δt раньше подбирал модель, 1 год. Затем значениями PD на правой стороне формул в Пожизненном PD являются 1-летние ФУНТЫ. Поэтому:

  • Пожизненный PD для ежеквартальных данных не может быть вычислен потому что S (1.25) ≠ S (1) (1−PD (1.25)), начиная с PD (1.25) 1-летний PD, охватывающий значение по умолчанию на интервале, идущем от 0.25 к 1.25.

  • Пожизненный PD для данных каждые 5 лет не может вычисляться потому что S (10) ≠ S (5) (1−PD (10)), начиная с PD (10) 1-летний PD, охватывающий значение по умолчанию на интервале, идущем от 9 к 10.

  • Пожизненный PD для непоследовательных строк не может быть вычислен. Например, если data введите имеет строки, соответствующие годам 1, 2, 5 и 10, затем S (1) и S (2) может быть вычислен правильно, однако S (5) ≠ S (2) (1−PD (5)), потому что PD (5) 1-летний PD, охватывающий значение по умолчанию на интервале, идущем от 4 к 5, и так же для S (10).

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

Валидация ввода данных для пожизненного предсказания

Валидация периодичности строки во вводе данных для predictLifetime зависит от типа модели (ModelType) и ли модель содержит переменную возраста (AgeVar).

Cox модели могут подтвердить периодичность данных потому что переменная возраста (AgeVar) необходимый входной параметр и Cox модели хранят временной интервал (TimeInterval) используемый, чтобы подбирать модель. TimeInterval используется и чтобы подбирать модель и предсказать значения PD. Для получения дополнительной информации о временных интервалах для Cox модель, смотрите Временной интервал для Моделей Cox. Переменная возраста (AgeVar) используется в качестве измерения времени. Для каждого ID, если периодичность data введите, измеренный шагом в переменной возраста, не совпадайте с временным интервалом, используемым, чтобы обучить модель, предупреждение выведено, и пожизненные значения PD заполнены NaNs.

Logistic и Probit модели не хранят значение временного интервала. Однако предсказанные значения PD все еще сопоставимы с (явный или неявный) временной интервал в обучающих данных. Для получения дополнительной информации смотрите Временной интервал для Логистических Моделей и Временной интервал для Нелинейных моделей вероятности с нормальным распределением. Кроме того, для Logistic и Probit модели, переменная возраста (AgeVar) является дополнительным, и нет никакого другого способа задать измерение времени в модели. Поэтому:

  • Если Logistic или Probit модель не имеет никакой информации о переменной возраста, нет никакого способа подтвердить периодичность данных. Пожизненный PD вычисляется с помощью рекурсии в Пожизненном PD, принимая, что периодичность правильна. Это - ответственность вызывающей стороны гарантировать, что периодичность строк данных сопоставима с временным интервалом в учебном data.

  • Если Logistic или Probit модель имеет переменную возраста (AgeVar), это используется в качестве измерения времени. Однако, потому что временной интервал, используемый, чтобы обучить данные, неизвестен для Logistic и Probit модели, эти модели могут только подтвердить это, шаг возраста является регулярным можно следующим образом, но не может выдержать сравнение со ссылочным временным интервалом.

    • Для каждого ID, когда возраст показывает неправильный шаг возраста, существует предупреждение, и пожизненные значения PD установлены к NaNs.

    • Когда шаг возраста является регулярным в каждом ID, но некоторые идентификаторы имеют различный шаг возраста, чем другие, предупреждение выведено, но это неизвестно, какой ID имеет неправильный шаг. Пожизненные значения PD вычисляются с помощью рекурсии в Пожизненном PD для всех идентификаторов. Это - ответственность вызывающей стороны гарантировать, что периодичность строк данных для всех идентификаторов сопоставима с временным интервалом в учебном data.

Для примера см. Пожизненное Предсказание и Временной интервал.

Ссылки

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

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

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

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

Введенный в R2020b