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 ЛГД- Модели

Использование 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 ЛГД- Модели

Использование 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-by- NumCols таблица с предиктором и значениями отклика. Имена переменных и типы данных должны соответствовать базовой модели.

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

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

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

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

Идентификатор набора данных, заданный как разделенная разделенными запятой парами, состоящая из 'DataID' и вектор символов или строка. The 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' и a NumRows-by- 1 числовой вектор. The 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' указывает, где начала и концы каждая модель.

Подробнее о

свернуть все

Моделирование дискриминации

Model discrimination измеряет рейтинг рисков.

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

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

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

Кривая ROC является параметрической кривой, которая строит график пропорции

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

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

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

Ссылки

[1] Baesens, Bart, Daniel Roesch, and Harald Scheule. Аналитика кредитных рисков: методы измерения, приложения и примеры в SAS. Уайли, 2016.

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

Введенный в R2021a