Вычислить RMSE прогнозируемых и наблюдаемых PD по сгруппированным данным
вычисляет среднеквадратичную ошибку (RMSE) наблюдаемого по сравнению с предсказанными вероятностями дефолта (PD). AccMeasure = modelAccuracy(pdModel,data,GroupBy)GroupBy является обязательным и может быть любым столбцом в data входные данные (не обязательно переменная модели). modelAccuracy функция вычисляет наблюдаемый PD как скорость по умолчанию для каждой группы и прогнозируемый PD как средний PD для каждой группы. modelAccuracy поддерживает сравнение с ссылочной моделью.
[ указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к входным аргументам в предыдущем синтаксисе.AccMeasure,AccData] = modelAccuracy(___,Name,Value)
В этом примере показано, как использовать fitLifetimePDModel для совмещения данных с Logistic модель, а затем использовать modelAccuracy для вычисления среднеквадратичной ошибки (RMSE) наблюдаемых вероятностей дефолта (PD) относительно предсказанных 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));
Создать Logistic Модель жизненного цикла PD
Использовать fitLifetimePDModel для создания Logistic модель с использованием обучающих данных.
pdModel = fitLifetimePDModel(data(TrainDataInd,:),"Logistic",... 'AgeVar','YOB',... 'IDVar','ID',... 'LoanVars','ScoreGroup',... 'MacroVars',{'GDP','Market'},... 'ResponseVar','Default'); disp(pdModel)
Logistic with properties:
ModelID: "Logistic"
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:
logit(Default) ~ 1 + ScoreGroup + YOB + GDP + Market
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
__________ _________ _______ ___________
(Intercept) -2.7422 0.10136 -27.054 3.408e-161
ScoreGroup_Medium Risk -0.68968 0.037286 -18.497 2.1894e-76
ScoreGroup_Low Risk -1.2587 0.045451 -27.693 8.4736e-169
YOB -0.30894 0.013587 -22.738 1.8738e-114
GDP -0.11111 0.039673 -2.8006 0.0051008
Market -0.0083659 0.0028358 -2.9502 0.0031761
388097 observations, 388091 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 1.85e+03, p-value = 0
Точность расчета модели
Точность модели измеряет точность прогнозируемых вероятностей по умолчанию. Например, если модель прогнозирует 10% PD для группы, показывает ли группа приблизительную 10% норму по умолчанию или возможную норму намного выше или ниже? В то время как дискриминация модели измеряет только ранжирование риска, точность модели измеряет точность прогнозируемых уровней риска.
modelAccuracy вычисляет среднеквадратичную ошибку (RMSE) наблюдаемых PD относительно предсказанных PD. Необходима переменная группирования, и она может быть любым столбцом на входе данных (не обязательно переменной модели). modelAccuracy функция вычисляет наблюдаемый PD как скорость по умолчанию для каждой группы и прогнозируемый PD как средний PD для каждой группы.
DataSetChoice ="Training"; if DataSetChoice=="Training" Ind = TrainDataInd; else Ind = TestDataInd; end GroupingVar =
"YOB"; AccMeasure = modelAccuracy(pdModel,data(Ind,:),GroupingVar,'DataID',DataSetChoice); disp(AccMeasure)
RMSE
_________
Logistic, grouped by YOB, Training 0.0004142
Визуализация точности модели с помощью modelAccuracyPlot.
modelAccuracyPlot(pdModel,data(Ind,:),GroupingVar,'DataID',DataSetChoice);
Для группировки можно использовать несколько переменных. В этом примере группирование по переменным YOB и ScoreGroup.
AccMeasure = modelAccuracy(pdModel,data(Ind,:),["YOB","ScoreGroup"],'DataID',DataSetChoice); disp(AccMeasure)
RMSE
__________
Logistic, grouped by YOB, ScoreGroup, Training 0.00066239
Теперь визуализируйте две переменные группировки с помощью modelAccuracyPlot.
modelAccuracyPlot(pdModel,data(Ind,:),["YOB","ScoreGroup"],'DataID',DataSetChoice);

pdModel - Вероятность модели по умолчаниюLogistic объект | Probit объектВероятность модели по умолчанию, указанная как Logistic или Probit объект, ранее созданный с помощью fitLifetimePDModel.
Примечание
'ModelID' имущества pdModel объект используется в качестве идентификатора или тега для pdModel.
Типы данных: object
data - ДанныеДанные, указанные как NumRowsоколо-NumCols таблица с спроецированными предикторными значениями для прогнозирования срока службы. Имена предикторов и типы данных должны соответствовать базовой модели.
Типы данных: table
GroupBy - Наименование столбца в data входные данные, используемые для группировки данных Имя столбца в data используется для группирования данных, указанных как строковый или символьный вектор. GroupBy не обязательно должно быть именем переменной модели. Для каждой группы, обозначенной GroupBy, modelAccuracy функция вычисляет наблюдаемые скорости по умолчанию, а средние прогнозируемые PD вычисляются для измерения RMSE.
Типы данных: string | char
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
[AccMeasure,AccData] = modelAccuracy(pdModel,data(Ind,:),'GroupBy',["YOB","ScoreGroup"],'DataID',DataSetChoice)'DataID' - Идентификатор набора данных""
(по умолчанию) | символьный вектор | строкаИдентификатор набора данных, указанный как разделенная запятыми пара, состоящая из 'DataID' и символьный вектор или строку. DataID включен в modelAccuracy выходные данные для целей отчетности.
Типы данных: char | string
'ReferencePD' - Условные значения ПД, прогнозируемые для data по ссылочной модели[ ]
(по умолчанию) | числовой вектор'ReferenceID' - Идентификатор ссылочной модели'Reference'
(по умолчанию) | символьный вектор | строкаИдентификатор ссылочной модели, указанный как разделенная запятыми пара, состоящая из 'ReferenceID' и символьный вектор или строку. ReferenceID используется в modelAccuracy выходные данные для целей отчетности.
Типы данных: char | string
AccMeasure - значения RMSEИзмерение точности, возвращаемое в виде таблицы.
Значения RMSE, возвращаемые в виде одного столбца 'RMSE' таблица. Таблица имеет одну строку, если только pdModel измеряют точность и при наличии информации эталонной модели она имеет две строки. Имена строк AccMeasure сообщите идентификаторы модели, переменные группировки и идентификатор данных.
Примечание
Сообщаемые значения RMSE зависят от переменной группировки для требуемого GroupBy аргумент.
AccData - Наблюдаемые и прогнозируемые значения PD для каждой группыДанные точности, возвращаемые в виде таблицы.
Наблюдаемые и прогнозируемые значения PD для каждой группы, возвращаемые в виде таблицы. Сообщаемые наблюдаемые значения PD соответствуют наблюдаемой норме по умолчанию для каждой группы. Сообщаемые прогнозируемые значения PD являются средними значениями PD, прогнозируемыми pdModel для каждой группы и аналогично для ссылочной модели. modelAccuracy функция накапливает данные PD, помещая сначала наблюдаемые значения для всех групп, затем прогнозируемые PD для pdModelи затем прогнозируемые PD для эталонной модели, если они заданы.
Колонка 'ModelID' определяет, какие строки соответствуют наблюдаемому PD, pdModelили ссылочная модель. Таблица также имеет один столбец для каждой переменной группирования, показывающий уникальные комбинации значений группирования. Последний столбец AccData является 'PD' столбец с данными PD.
Точность модели измеряет точность прогнозируемых значений вероятности дефолта (PD).
Для измерения точности модели, также называемой калибровкой модели, необходимо сравнить прогнозируемые значения PD с наблюдаемыми значениями по умолчанию. Например, если группе клиентов прогнозируется средний PD 5%, то будет ли наблюдаемая ставка по умолчанию для этой группы близка к 5%?
modelAccuracy функция требует переменной группировки для вычисления средних прогнозируемых значений PD в каждой группе и средней наблюдаемой скорости по умолчанию также в каждой группе. modelAccuracy использует среднеквадратичную ошибку (RMSE) для измерения отклонений между наблюдаемыми и прогнозируемыми значениями по группам. Например, переменной группировки может быть календарный год, так что строки, соответствующие одному и тому же календарному году, группируются вместе. Затем для каждого года программное обеспечение вычисляет наблюдаемую частоту по умолчанию и среднее прогнозируемое PD. modelAccuracy затем функция применяет формулу RMSE для получения одной меры ошибки прогнозирования за все годы в выборке.
Предположим, что в наборе данных имеется N наблюдений, а G1,...,GM M групп. Ставка по умолчанию для группы Gi составляет
DiNi
где:
Di - количество значений по умолчанию, наблюдаемых в группе Gi.
Ni - количество наблюдений в группе Gi.
Средняя прогнозируемая вероятность PDi по умолчанию для группы Gi равна
)
где PD (j) - вероятность дефолта для наблюдения j. Другими словами, это среднее из прогнозируемых PD в группе Gi.
Поэтому RMSE вычисляется как
PDi) 2
RMSE, как определено, зависит от выбранной переменной группировки. Например, группирование по календарному году и группирование по годам в книгах может привести к различным значениям RSME.
Использовать modelAccuracyPlot для визуализации наблюдаемых показателей по умолчанию и прогнозируемых значений PD на сгруппированных данных.
[1] Бэзенс, Барт, Даниэль Рош и Харальд Шиле. Анализ кредитных рисков: методы измерения, приложения и примеры в SAS. Уайли, 2016.
[2] Беллини, Тициано. МСФО (IFRS) 9 и CECL «Моделирование и валидация кредитных рисков: практическое руководство с примерами, работающими в R и SAS». Сан-Диего, Калифорния: Elsevier, 2019.
[3] Бриден, Иосиф. Жизнь с CECL: The Modeling Dictionary. Santa Fe, NM: Prescient Models LLC, 2018.
fitLifetimePDModel | Logistic | modelAccuracyPlot | modelDiscrimination | modelDiscriminationPlot | predict | predictLifetime | Probit
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.