exponenta event banner

modelAccuracyPlot

График рассеяния прогнозируемых и наблюдаемых ЖРД

Описание

пример

modelAccuracyPlot(lgdModel,data) возвращает график рассеяния наблюдаемых и прогнозируемых потерь, заданных по умолчанию (LGD), с линейной посадкой. modelAccuracyPlot поддерживает сравнение с ссылочной моделью. По умолчанию modelAccuracyPlot графики в шкале LGD.

пример

modelAccuracyPlot(___,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к входным аргументам в предыдущем синтаксисе. Вы можете использовать ModelLevel аргумент пары имя-значение для вычисления метрик с использованием трансформированного масштаба базовой модели.

пример

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

Примеры

свернуть все

В этом примере показано, как использовать fitLGDModel для совмещения данных с Regression модель, а затем использовать modelAccuracyPlot генерировать график рассеяния для прогнозируемых и наблюдаемых LGD.

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

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

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 модель с использованием обучающих данных.

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

Формирование графика рассеяния прогнозируемых и наблюдаемых LGD

Использовать modelAccuracyPlot генерировать график рассеяния прогнозируемых и наблюдаемых LGD для набора тестовых данных. ModelLevel аргумент пары имя-значение изменяет выходные данные только для Regression модели, не Tobit модели, потому что нет преобразований ответа для Tobit модель.

modelAccuracyPlot(lgdModel,data(TestInd,:),'ModelLevel',"underlying")

Figure contains an axes. The axes with title Scatter Regression, R-Squared: 0.17826 contains 2 objects of type scatter, line. These objects represent Data, Fit.

В этом примере показано, как использовать fitLGDModel для совмещения данных с Tobit модель, а затем использовать modelAccuracyPlot генерировать график рассеяния прогнозируемых и наблюдаемых LGD.

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

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

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

Создание модели 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

Формирование графика рассеяния прогнозируемых и наблюдаемых LGD

Использовать modelAccuracyPlot генерировать график рассеяния прогнозируемых и наблюдаемых LGD для набора тестовых данных.

modelAccuracyPlot(lgdModel,data(TestInd,:))

Figure contains an axes. The axes with title Scatter Tobit, R-Squared: 0.08527 contains 2 objects of type scatter, line. These objects represent Data, Fit.

modelAccuracyPlot генерирует график рассеяния наблюдаемых и прогнозируемых значений LGD. 'XData' и 'YData' аргументы пары имя-значение позволяют визуализировать остатки или генерировать график рассеяния по интересующей переменной.

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

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

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

Создание регрессионной модели LGD

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

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

Формирование графика рассеяния прогнозируемых и наблюдаемых LGD

Использовать modelAccuracyPlot для генерации графика рассеяния остатков против значений LTV.

modelAccuracyPlot(lgdModel,data(TestInd,:),'XData','LTV','YData','residuals')

Figure contains an axes. The axes with title Scatter Regression, R-Squared: 0.010419 contains 2 objects of type scatter, line. These objects represent Data, Fit.

Для Regression модели, 'ModelLevel' аргумент пары «имя-значение» позволяет визуализировать график с использованием нижележащего масштаба модели.

modelAccuracyPlot(lgdModel,data(TestInd,:),'XData','LTV','YData','residuals','ModelLevel','underlying')

Figure contains an axes. The axes with title Scatter Regression, R-Squared: 0.0029721 contains 2 objects of type scatter, line. These objects represent Data, Fit.

Для категориальных переменных modelAccuracyPlot использует роевую диаграмму. Дополнительные сведения см. в разделе swarmchart.

modelAccuracyPlot(lgdModel,data(TestInd,:),'XData','Type','YData','residuals','ModelLevel','underlying')

Figure contains an axes. The axes with title Scatter Regression, R-Squared: 6.2871e-05 contains 2 objects of type scatter, line. These objects represent Data, Fit.

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

свернуть все

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

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

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

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

(Необязательно) Допустимый объект оси, указанный как ax объект, созданный с помощью axes. График будет создан в осях, указанных опционально ax вместо в текущих осях (gca). Необязательный аргумент ax должна предшествовать любой из комбинаций входных аргументов.

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

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

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

Пример: modelAccuracyPlot(lgdModel,data(TestInd,:),'DataID','Testing','YData','residuals','XData','LTV')

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

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

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

  • 'top' - Метрики точности вычисляются в шкале LGD на верхнем уровне модели.

  • 'underlying' - Для Regression только для модели, метрики вычисляются в преобразованном масштабе базовой модели. Метрики вычисляются на преобразованных данных LGD.

Примечание

ModelLevel не оказывает влияния на Tobit модель, потому что нет преобразования ответа.

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

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

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

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

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

Данные для печати по оси X, указанные как разделенная запятыми пара, состоящая из 'XData' и символьный вектор или строку для одного из следующих вариантов:

  • 'predicted' - Постройте график прогнозируемых значений LGD по оси X.

  • 'observed' - Постройте график наблюдаемых значений LGD по оси X.

  • 'residuals' - постройте график остатков по оси X.

  • Имя переменной - используйте имя переменной в data ввод, не обязательно переменная модели, для построения графика по оси X.

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

Данные для построения графика по оси Y, указанные как разделенная запятыми пара, состоящая из 'YData' и символьный вектор или строку для одного из следующих вариантов:

  • 'predicted' - Постройте график прогнозируемых значений LGD по оси Y.

  • 'observed' - Постройте график наблюдаемых значений LGD по оси Y.

  • 'residuals' - постройте график остатков по оси Y.

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

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

свернуть все

Маркер перемещения для объектов рассеяния и линий, возвращенный как маркер перемещения.

Подробнее

свернуть все

График точности модели

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

XData аргумент пары «имя-значение» позволяет изменять значения x на графике. По умолчанию прогнозируемые значения LGD выводятся на график по оси X, но прогнозируемые значения LGD, остатки или любая переменная в data входные данные, не обязательно переменные модели, могут использоваться в качестве значений x. Если выбрано XData является категориальной переменной, используется роевая диаграмма. Дополнительные сведения см. в разделе swarmchart.

YData аргумент пары имя-значение позволяет пользователям изменять значения y на графике. По умолчанию наблюдаемые значения LGD выводятся на график по оси Y, но в качестве значений y также можно использовать прогнозируемые значения LGD или остаточные значения. YData не поддерживает табличные переменные.

Для Regression модели, если ModelLevel имеет значение 'underlying'данные LGD преобразуются в масштаб базовой модели. Преобразованные данные отображаются на графике. ModelLevel аргумент пары «имя-значение» не влияет на Tobit модели.

Линейная посадка и сообщаемое значение R-квадрата всегда соответствуют модели линейной регрессии с построенными на графике значениями y в качестве ответа и построенными на графике значениями x в качестве единственного предиктора.

Ссылки

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

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

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