Вычисление 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.