exponenta event banner

modelDiscrimination

Вычисление данных AUROC и ROC

Описание

пример

DiscMeasure = modelDiscrimination(lgdModel,data) вычисляет площадь под кривой рабочих характеристик приемника (AUROC). modelDiscrimination поддерживает сегментацию и сравнение с эталонной моделью, а также альтернативные методы для дискретизации ответа LGD в двоичную переменную.

пример

[DiscMeasure,DiscData] = modelDiscrimination(___,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к входным аргументам в предыдущем синтаксисе.

Примеры

свернуть все

В этом примере показано, как использовать fitLGDModel для совмещения данных с Regression модель, а затем использовать modelDiscrimination для вычисления AUROC и ROC.

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

Загрузите данные о потерях по умолчанию.

load LGDData.mat
head(data)
ans=8×4 table
      LTV        Age         Type           LGD   
    _______    _______    ___________    _________

    0.89101    0.39716    residential     0.032659
    0.70176     2.0939    residential      0.43564
    0.72078     2.7948    residential    0.0064766
    0.37013      1.237    residential     0.007947
    0.36492     2.5818    residential            0
      0.796     1.5957    residential      0.14572
    0.60203     1.1599    residential     0.025688
    0.92005    0.50253    investment      0.063182

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

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

rng('default'); % for reproducibility
NumObs = height(data);

c = cvpartition(NumObs,'HoldOut',0.4);
TrainingInd = training(c);
TestInd = test(c);

Создать Regression Модель LGD

Использовать fitLGDModel для создания Regression модель с использованием обучающих данных. Также можно использовать fitLGDModel для создания Tobit путем изменения lgdModel входной аргумент для 'Tobit'.

lgdModel = fitLGDModel(data(TrainingInd,:),'Regression');
disp(lgdModel)    
  Regression with properties:

    ResponseTransform: "logit"
    BoundaryTolerance: 1.0000e-05
              ModelID: "Regression"
          Description: ""
      UnderlyingModel: [1x1 classreg.regr.CompactLinearModel]
        PredictorVars: ["LTV"    "Age"    "Type"]
          ResponseVar: "LGD"

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

disp(lgdModel.UnderlyingModel)
Compact linear regression model:
    LGD_logit ~ 1 + LTV + Age + Type

Estimated Coefficients:
                       Estimate       SE        tStat       pValue  
                       ________    ________    _______    __________

    (Intercept)        -4.7549      0.36041    -13.193    3.0997e-38
    LTV                 2.8565      0.41777     6.8377    1.0531e-11
    Age                -1.5397     0.085716    -17.963    3.3172e-67
    Type_investment     1.4358       0.2475     5.8012     7.587e-09


Number of observations: 2093, Error degrees of freedom: 2089
Root Mean Squared Error: 4.24
R-squared: 0.206,  Adjusted R-Squared: 0.205
F-statistic vs. constant model: 181, p-value = 2.42e-104

Вычислить данные AUROC и ROC

Использовать modelDiscrimination для вычисления AUROC и ROC для набора тестовых данных.

DiscMeasure = modelDiscrimination(lgdModel,data(TestInd,:))
DiscMeasure=table
                   AUROC 
                  _______

    Regression    0.67897

Данные ROC можно визуализировать с помощью modelDiscriminationPlot.

modelDiscriminationPlot(lgdModel,data(TestInd,:))

Figure contains an axes. The axes with title ROC Regression, AUROC = 0.67897 contains an object of type line. This object represents Regression.

В этом примере показано, как использовать fitLGDModel для совмещения данных с Tobit модель, а затем использовать modelDiscrimination для вычисления AUROC и ROC.

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

Загрузите данные о потерях по умолчанию.

load LGDData.mat
head(data)
ans=8×4 table
      LTV        Age         Type           LGD   
    _______    _______    ___________    _________

    0.89101    0.39716    residential     0.032659
    0.70176     2.0939    residential      0.43564
    0.72078     2.7948    residential    0.0064766
    0.37013      1.237    residential     0.007947
    0.36492     2.5818    residential            0
      0.796     1.5957    residential      0.14572
    0.60203     1.1599    residential     0.025688
    0.92005    0.50253    investment      0.063182

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

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

rng('default'); % for reproducibility
NumObs = height(data);

c = cvpartition(NumObs,'HoldOut',0.4);
TrainingInd = training(c);
TestInd = test(c);

Создать Tobit Модель LGD

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

lgdModel = fitLGDModel(data(TrainingInd,:),'tobit');
disp(lgdModel)    
  Tobit with properties:

      CensoringSide: "both"
          LeftLimit: 0
         RightLimit: 1
            ModelID: "Tobit"
        Description: ""
    UnderlyingModel: [1x1 risk.internal.credit.TobitModel]
      PredictorVars: ["LTV"    "Age"    "Type"]
        ResponseVar: "LGD"

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

disp(lgdModel.UnderlyingModel)
Tobit regression model:
     LGD = max(0,min(Y*,1))
     Y* ~ 1 + LTV + Age + Type

Estimated coefficients:
                       Estimate        SE         tStat       pValue  
                       _________    _________    _______    __________

    (Intercept)         0.058257     0.027276     2.1358      0.032809
    LTV                  0.20126     0.031373      6.415    1.7363e-10
    Age                -0.095407    0.0072543    -13.152             0
    Type_investment      0.10208     0.018054     5.6542    1.7802e-08
    (Sigma)              0.29288     0.005704     51.346             0

Number of observations: 2093
Number of left-censored observations: 547
Number of uncensored observations: 1521
Number of right-censored observations: 25
Log-likelihood: -698.383

Вычислить данные AUROC и ROC

Использовать modelDiscrimination для вычисления AUROC и ROC для набора тестовых данных.

DiscMeasure = modelDiscrimination(lgdModel,data(TestInd,:),'SegmentBy',"Type",'DiscretizeBy',"median")
DiscMeasure=2×1 table
                                AUROC 
                               _______

    Tobit, Type=residential    0.70101
    Tobit, Type=investment     0.73252

Можно визуализировать ROC с помощью modelDiscriminationPlot.

modelDiscriminationPlot(lgdModel,data(TestInd,:),'SegmentBy',"Type",'DiscretizeBy',"median")

Figure contains an axes. The axes with title ROC Segmented by Type contains 2 objects of type line. These objects represent Tobit, residential, AUROC = 0.70101, Tobit, investment, AUROC = 0.73252.

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

свернуть все

Потеря заданной модели по умолчанию, указанной как ранее созданная Regression или Tobit объект с использованием fitLGDModel.

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

Данные, указанные как NumRowsоколо-NumCols таблица с предиктором и значениями ответа. Имена переменных и типы данных должны соответствовать базовой модели.

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

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

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

Пример: [DiscMeasure,DiscData] = modelDiscrimination(lgdModel,data(TestInd,:),'DataID','Testing','DiscretizeBy','median')

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

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

Метод дискретизации для LGD data, указанная как пара, разделенная запятыми, состоящая из 'DiscretizeBy' и символьный вектор или строку.

  • 'mean' - Дискретизированный ответ 1 если наблюдаемый LGD больше или равен среднему LGD, 0 в противном случае.

  • 'median' - Дискретизированный ответ 1 если наблюдаемый LGD больше или равен среднему LGD, 0 в противном случае.

  • 'positive' - Дискретизированный ответ 1 если наблюдаемая LGD положительная, 0 в противном случае (полное восстановление).

  • 'total' - Дискретизированный ответ 1 если наблюдаемая LGD больше или равна 1 (общий убыток), 0 в противном случае.

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

Имя столбца в data вход, не обязательно переменная модели, которая должна использоваться для сегментации набора данных, указанного как пара, разделенная запятыми, состоящая из 'SegmentBy' и символьный вектор или строку. Один AUROC сообщается для каждого сегмента, и соответствующие данные ROC для каждого сегмента возвращаются в необязательном выводе.

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

Прогнозируемые значения LGD для data ссылочной моделью, указанной как разделенная запятыми пара, состоящая из 'ReferenceID' и NumRowsоколо-1 числовой вектор. modelDiscrimination выводимая информация выводится для обоих lgdModel объект и ссылочная модель.

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

Идентификатор ссылочной модели, указанный как разделенная запятыми пара, состоящая из 'ReferenceID' и символьный вектор или строку. 'ReferenceID' используется в modelDiscrimination выходные данные для целей отчетности.

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

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

свернуть все

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

Данные ROC для каждой модели и каждого сегмента возвращаются в виде таблицы. Существует три столбца для данных ROC с именами столбцов 'X', 'Y', и 'T', где первые два являются координатами X и Y кривой ROC, а T содержит соответствующие пороги. Дополнительные сведения см. в разделе Дискриминация моделей или perfcurve.

Если вы используете SegmentBy, функция накапливает данные ROC для всех сегментов и DiscData содержит столбец со значениями сегментации для указания места начала и окончания каждого сегмента.

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

Подробнее

свернуть все

Типовая дискриминация

Типовая дискриминация измеряет ранжирование риска.

modelDiscrimination функция вычисляет площадь под кривой характеристики оператора приемника (AUROC), иногда называемой просто площадью под кривой (AUC). Эта метрика в диапазоне от 0 до 1 и выше указывает на лучшее различение.

Для вычисления AUROC необходимо числовое предсказание и двоичный ответ. Для моделей потерь, заданных по умолчанию (LGD), предсказанный LGD используется непосредственно в качестве прогноза. Однако наблюдаемый LGD должен быть дискретизирован в двоичную переменную. По умолчанию наблюдаемым значениям LGD, большим или равным среднему значению LGD, присваивается значение 1, а значениям ниже среднего - значение 0. Этот дискретизированный ответ интерпретируется как «высокий LGD» по сравнению с «низким LGD». Следовательно, modelDiscrimination функция измеряет, насколько хорошо предсказанный LGD отделяет «высокий LGD» от «низких LGD» наблюдений. Вы можете изменить критерий дискретизации с помощью DiscretizeBy аргумент пары имя-значение.

Для построения графика характеристики оператора приемника (ROC) используйте modelDiscriminationPlot функция. Однако если необходимы данные ROC-кривой, используйте необязательный параметр. DiscData выходной аргумент из modelDiscrimination функция.

Кривая ROC - это параметрическая кривая, отображающая пропорцию

  • Случаи высокого LGD с прогнозируемым LGD, большим или равным параметру t, или истинной положительной скоростью (TPR)

  • Случаи низкого LGD с прогнозируемым LGD больше или равно одному и тому же параметру t, или ложноположительная скорость (FPR)

Параметр t протягивает все наблюдаемые прогнозируемые значения LGD для данных. DiscData дополнительный вывод содержит TPR в 'X' столбец, FPR в 'Y' и соответствующие параметры t в 'T' столбец. Дополнительные сведения о кривых ROC см. в разделе Кривые производительности.

Ссылки

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

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

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