Вычисление RMSE прогнозируемых и наблюдаемых PD на сгруппированных данных
вычисляет корневую среднюю квадратичную невязку (RMSE) наблюдаемого по сравнению с предсказанными вероятностями дефолта (PD). AccMeasure
= modelAccuracy(pdModel
,data
,GroupBy
)GroupBy
требуется и может быть любым столбцом в data
вход (не обязательно переменная модели). The 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. Требуется сгруппированная переменная, и это может быть любой столбец в вход данных (не обязательно переменная модели). The modelAccuracy
функция вычисляет наблюдаемую PD как скорость по умолчанию для каждой группы, и предсказанную PD как среднюю PD для каждой группы.
DataSetChoice = "Training"; if DataSetChoice = ="Training" Ind = TrainDataInd; else Ind = TestDataInd; end GroupVar = "YOB"; AccMeasure = modelAccuracy (pdModel, данные (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
.
Примечание
The 'ModelID'
свойство pdModel
объект используется в качестве идентификатора или тега для pdModel
.
Типы данных: object
data
- ДанныеДанные, заданные как NumRows
-by- 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'
- Условные значения PD, предсказанные для data
по образцу модели[ ]
(по умолчанию) | числовой вектор'ReferenceID'
- Идентификатор для образца модели'Reference'
(по умолчанию) | вектор символов | строкаИдентификатор образца модели, заданный как разделенная запятой пара, состоящий из 'ReferenceID'
и вектор символов или строка. ReferenceID
используется в modelAccuracy
выходы для целей отчетности.
Типы данных: char
| string
AccMeasure
- значения RMSEИзмерение точности, возвращенное как таблица.
Значения RMSE, возвращенные как одноколоночные 'RMSE'
таблица. Таблица имеет одну строку, если только pdModel
измеряется точность, и она имеет две строки, если задана информация об образце модели. Имена строк AccMeasure
сообщить идентификаторы модели, сгруппированные переменные и идентификаторы данных.
Примечание
Сообщенные значения RMSE зависят от сгруппированной переменной для необходимого GroupBy
аргумент.
AccData
- Наблюдаемые и предсказанные значения PD для каждой группыДанные точности, возвращенные как таблица.
Наблюдаемые и предсказанные значения PD для каждой группы, возвращенные как таблица. Сообщенные наблюдаемые значения PD соответствуют наблюдаемой скорости по умолчанию для каждой группы. Сообщенные предсказанные значения PD являются средними значениями PD, предсказанными pdModel
объект для каждой группы и аналогично для образца модели. The modelAccuracy
функция складывает данные PD, помещая сначала наблюдаемые значения для всех групп, затем предсказанные PD для pdModel
, а затем предсказанные PD для образца модели, если даны.
Столбец 'ModelID'
определяет, какие строки соответствуют наблюдаемому PD, pdModel
, или образец модели. Таблица также имеет по одному столбцу для каждой сгруппированной переменной, показывающей уникальные комбинации значений группировки. Последний столбец AccData
является 'PD'
столбец с данными PD.
Model accuracy измеряет точность предсказанной вероятности значений по умолчанию (PD).
Чтобы измерить точность модели, также называемую калибровкой модели, необходимо сравнить предсказанные значения PD с наблюдаемыми скоростями по умолчанию. Для примера, если группе клиентов прогнозируется среднее значение PD 5%, тогда наблюдаемая ставка по умолчанию для этой группы близка к 5%?
The modelAccuracy
функция требует сгруппированной переменной, чтобы вычислить средние предсказанные значения PD в каждой группе и среднюю наблюдаемую скорость по умолчанию также в каждой группе. modelAccuracy
использует корневую среднюю квадратичную невязку (RMSE), чтобы измерить отклонения между наблюдаемыми и предсказанными значениями по группам. Например, сгруппированной переменной может быть календарный год, так что строки, соответствующие тому же календарному году, сгруппированы вместе. Затем для каждого года программное обеспечение вычисляет наблюдаемую скорость по умолчанию и среднее прогнозируемое значение PD. The modelAccuracy
затем функция применяет формулу RMSE, чтобы получить одну меру ошибки предсказания за все годы в выборке.
Предположим, что в наборе данных есть N наблюдений, и существует M группы G 1,..., G M. Скорость по умолчанию для группы G i
где:
D i - это количество значений по умолчанию, наблюдаемых в группе G i.
N i - это количество наблюдений в группе G i.
Средняя предсказанная вероятность дефолта <reservedrangesplaceholder3> <reservedrangesplaceholder2> для группы <reservedrangesplaceholder1> <reservedrangesplaceholder0>
где PD (j) - вероятность дефолта для j наблюдений. Другими словами, это среднее значение предсказанных PD в групповой G i.
Поэтому RMSE вычисляется как
RMSE, как определено, зависит от выбранной сгруппированной переменной. Например, группировка по календарному году и группировка по годам по книгам могут привести к различным значениям RSME.
Использовать modelAccuracyPlot
визуализировать наблюдаемые скорости дефолта и предсказанные значения PD на сгруппированных данных.
[1] Baesens, Bart, Daniel Roesch, and Harald Scheule. Аналитика кредитных рисков: методы измерения, приложения и примеры в SAS. Уайли, 2016.
[2] Беллини, Тициано. МСФО (IFRS) 9 и CECL «Моделирование и валидация кредитных рисков: практическое руководство с примерами, используемыми в R и SAS». Сан-Диего, Калифорния: Elsevier, 2019.
[3] Бриден, Джозеф. Жизнь с CECL: Словарь моделирования. Santa Fe, NM: Prescient Models LLC, 2018.
fitLifetimePDModel
| Logistic
| modelAccuracyPlot
| modelDiscrimination
| modelDiscriminationPlot
| predict
| predictLifetime
| Probit
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.