В этом примере показано, как соответствовать различным типам моделей к данным о потере, данной значение по умолчанию (LGD). Этот пример демонстрирует следующие подходы:
Для всех этих подходов этот пример показывает:
Как подбирать модель с помощью обучающих данных, где LGD является функцией других переменных или предикторов.
Как предсказать при тестировании данных.
Раздел Model Comparison содержит подробное сравнение, которое включает визуализацию и несколько ошибочных метрик предсказания для всех моделей в этом примере.
Регрессия и модели Товита адаптированы с помощью fitLGDModel
функция от Risk Management Toolbox™. Для получения дополнительной информации см. Обзор Потери, Данной Модели По умолчанию. Другие модели приспособлены, основываясь на существующей функциональности в Optimization Toolbox™ и Statistics and Machine Learning Toolbox™.
LGD является одним из основных параметров для анализа кредитного риска. Несмотря на то, что существуют разные подходы, чтобы оценить резервы кредита потерь и капитал кредита, общие методологии требуют оценки вероятностей значения по умолчанию (PD), потеря, данная значение по умолчанию (LGD) и воздействие в значении по умолчанию (EAD). Резервы и потребности в капитале вычисляются с помощью формул или симуляций, которые используют эти параметры. Например, резервы потерь обычно оцениваются как ожидаемая потеря (EL), данная следующей формулой:
.
У практиков есть десятилетия опыта моделирующие и предсказывающие ФУНТЫ. Однако моделирование LGD (и также EAD) запустилось намного позже. Одной причиной является относительный дефицит данных LGD по сравнению с данными о PD. Данные о значении по умолчанию кредита (например, пропущенные платежи) легче собрать и более доступный, чем убытки, которые в конечном счете потерпели в случае значения по умолчанию. Когда учетная запись перемещена в этап восстановления, информация может быть передана различной системе, кредиты могут быть консолидированы, процесс восстановления может занять много времени, и несколько затрат понесены во время процесса, некоторые, которых трудно отследить подробно. Однако банки нарастили свои усилия, чтобы собрать данные, которые могут использоваться для моделирования LGD, частично из-за инструкций, которые требуют оценки этих параметров риска, и моделирование LGD (и EAD) теперь широко распространено в промышленности.
Это использование в качестве примера симулировало данные LGD, но рабочий процесс был применен к действительным наборам данных, чтобы подбирать модели LGD, предсказать значения LGD и сравнить модели. Особое внимание этого примера не должно предлагать конкретный подход, но показать, как эти различные модели могут быть подходящими, как модели используются, чтобы предсказать значения LGD, и как сравнить модели. Этим примером является также начальная точка для изменений и расширений этих моделей; например, можно хотеть использовать более усовершенствованную классификацию и инструменты регрессии как часть модели 2D этапа.
Эти три предиктора в этом примере являются конкретной ссудой. Однако можно использовать подходы, описанные в этом примере с наборами данных, которые включают несколько предикторов и даже макроэкономических переменных. Кроме того, можно использовать модели, которые включают макроэкономические предикторы для стресс-тестирования или пожизненного LGD, моделирующего, чтобы поддержать нормативные требования, такие как CCAR, IFRS 9 и CECL.
Набор данных в этом примере является симулированными данными, которые получают типичные функции данных LGD. Например, типичная функция является распределением значений LGD, которое имеет высокие частоты в 0
(полное восстановление), и также много наблюдений в 1
(никакое восстановление вообще). Другая характеристика данных LGD является существенным количеством "шумовых" или "необъясненных" данных. Можно визуализировать этот "шум" в графиках рассеивания ответа против предикторов, где точки, кажется, не следуют за ясным трендом, и все же могут быть обнаружены некоторые базовые отношения. Кроме того, распространено получить значительные ошибки предсказания для моделей LGD. Эмпирические исследования показывают, что модели LGD имеют высокие ошибки предсказания в целом. Например, в [4] авторы сообщают о значениях R-squared в пределах от 4% к 43% для области значений моделей через различные портфели. В этом примере все подходы получают значения R-squared чуть менее чем 10%. Кроме того, нахождение полезных предикторов на практике может потребовать важного понимания среды кредитования определенного портфеля, например, знания правовых рамок и процесса набора [2]. Симулированный набор данных включает только три предиктора, и это переменные, часто находимые в моделях LGD, а именно, соотношении стоимости актива к сумме кредита, возрасте ссуды, и живет ли заемщик в свойстве или если заемщик купил его в инвестиционных целях.
Подготовка данных для моделирования LGD выходит за рамки этого примера. Этот пример принимает, что данные были ранее подготовлены, поскольку особое внимание примера включено, как подбирать модели LGD и как использовать их для предсказания. Подготовка данных для моделирования LGD требует существенного количества работы на практике. Подготовка данных требует консолидации сведений об аккаунте, вытягивая данные из нескольких источников данных, составляя различные затраты и учетные ставки, и экранируя предикторы 1[] 2[].
Загрузите набор данных от LGDData.mat
файл. Набор данных хранится в data
таблица. Это содержит эти три предиктора и переменную LGD, которая является переменной отклика.
Вот предварительный просмотр данных и описания набора данных и переменных.
load('LGDData.mat')
disp(head(data))
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
disp(data.Properties.Description)
Loss given default (LGD) data. This is a simulated data set.
disp([data.Properties.VariableNames' data.Properties.VariableDescriptions'])
{'LTV' } {'Loan-to-Value (LTV) ratio at...'} {'Age' } {'Age of the loan in years at ...'} {'Type'} {'Type of property, either res...'} {'LGD' } {'Loss given default' }
Данные LGD обычно имеют значения 0
(никакие потери, полное восстановление) или 1
(никакое восстановление вообще). Распределение значений промежуточный 0
и 1
принимает различные формы в зависимости от типа портфеля и других характеристик.
histogram(data.LGD) title('LGD Distribution') ylabel('Frequency') xlabel('Observed LGD')
Исследуйте отношения между предикторами и ответом. Корреляция Копьеносца между выбранным предиктором и LGD отображена сначала. Корреляция Копьеносца является одними из статистических данных рангового порядка, обычно используемых для LGD моделирование [5].
SelectedPredictor = 'LTV'; fprintf'Spearman correlation between %s and LGD: %g', SelectedPredictor, поправка (дважды (данные. (SelectedPredictor)), data.LGD,'Type','Spearman'))
Spearman correlation between LTV and LGD: 0.271204
if isnumeric(data.(SelectedPredictor)) scatter(data.(SelectedPredictor),data.LGD) X = [ones(height(data),1) data.(SelectedPredictor)]; b = X\data.LGD; y = X*b; hold on plot(data.(SelectedPredictor),y) ylim([0 1]) hold off xlabel(SelectedPredictor) ylabel('LGD') end
Для числовых предикторов существует график рассеивания LGD против выбранных значений предиктора с наложенной линейной подгонкой. Существует существенное количество шума в данных с точками, рассеянными на всем протяжении графика. Это - общая ситуация для моделирования данных LGD. Плотность точек иногда отличается в различных областях графика, предлагая отношения. Наклон линейной подгонки и корреляции Копьеносца дает больше информации об отношении между выбранным предиктором и ответом.
Визуально оценка плотности точек в графике рассеивания не может быть надежным подходом, чтобы изучить распределение данных. Чтобы лучше изучить распределение значений LGD для разных уровней выбранного предиктора, создайте диаграмму.
% Choose the number of discretization levels for numeric predictors NumLevels =3; if isnumeric (данные. (SelectedPredictor)) PredictorEdges = linspace (min (данные. (SelectedPredictor)), макс. (данные. (SelectedPredictor)), NumLevels+1); PredictorDiscretized = дискретизируют (данные. (SelectedPredictor), PredictorEdges,'Categorical', строка (PredictorEdges (2:end))); коробчатая диаграмма (data.LGD, PredictorDiscretized) xlabel ([SelectedPredictor ' Discretized']) yLabel 'LGD') else коробчатая диаграмма (data.LGD, данные. (SelectedPredictor)) xlabel (SelectedPredictor) yLabel 'LGD') end
Для категориальных данных диаграмма является прямой, поскольку небольшое количество уровней уже дано. Для числовых данных можно дискретизировать данные сначала и затем сгенерировать диаграмму. Различные размеры поля и высоты показывают, что распределение значений LGD изменяется для различных уровней предиктора. Монотонный тренд в медиане (красная горизонтальная линия в центре полей) показывает потенциальное линейное соотношение между предиктором и LGD (хотя возможно умеренное отношение, из-за широких распределений).
Основной подход, чтобы предсказать LGD должен просто использовать среднее значение данных LGD. Несмотря на то, что это - прямой подход, легкий изучать и использовать, оборотная сторона - то, что среднее значение является постоянным значением, и этот подход не проливает света на чувствительность LGD к другим факторам риска. В частности, предикторы в наборе данных проигнорированы.
Чтобы ввести чувствительность к предикторам, средние значения LGD могут быть оценены по различным группам или сегментам данных, где группы заданы с помощью областей значений значений предиктора. Этот подход является все еще относительно прямым подходом, все же он может заметно уменьшать ошибку предсказания по сравнению с одним средним значением LGD для всех наблюдений.
Чтобы запуститься, разделите набор данных на данные об обучении и тестировании. То же обучение и тестирующий наборы данных используется для всех подходов в этом примере.
NumObs = height(data); % Reset the random stream state, for reproducibility % Comment this line out to generate different data partitions each time the example is run rng('default'); c = cvpartition(NumObs,'HoldOut',0.4); TrainingInd = training(c); TestInd = test(c);
В этом примере группы заданы с помощью этих трех предикторов. LTV
дискретизируется в низкие уровни и высокий уровень. Age
дискретизируется в молодые и старые кредиты. Type
уже имеет два уровня, а именно, жилой и инвестиции. Группы являются всеми комбинациями этих значений (например, низкий LTV, молодая ссуда, жилая, и так далее).
Количество уровней и определенных пороговых значений в целях рисунка только, можно основывать другие дискретизации на различных критериях. Кроме того, использование всех предикторов для дискретизации не может быть идеальным, когда набор данных содержит много предикторов. В некоторых случаях использования одного предиктора или нескольких предикторов, может быть достаточно, чтобы найти полезные группы с отличными средними значениями LGD. Когда данные включают макро-информацию, группировка может включать макро-переменную; например, среднее значение LGD должно отличаться по рецессиям по сравнению с подъемами экономики.
Вычислите средний LGD по восьми группам данных, использующим обучающие данные.
% Discretize LTV LTVEdges = [0 0.5 max(data.LTV)]; data.LTVDiscretized = discretize(data.LTV,LTVEdges,'Categorical',{'low','high'}); % Discretize Age AgeEdges = [0 2 max(data.Age)]; data.AgeDiscretized = discretize(data.Age,AgeEdges,'Categorical',{'young','old'}); % Find group means on training data gs = groupsummary(data(TrainingInd,:),{'LTVDiscretized','AgeDiscretized','Type'},'mean','LGD'); disp(gs)
LTVDiscretized AgeDiscretized Type GroupCount mean_LGD ______________ ______________ ___________ __________ ________ low young residential 163 0.12166 low young investment 26 0.087331 low old residential 175 0.021776 low old investment 23 0.16379 high young residential 1134 0.16489 high young investment 257 0.25977 high old residential 265 0.066068 high old investment 50 0.11779
Для предсказания тестовые данные сопоставлены в эти восемь групп, и затем соответствующее среднее значение группы установлено как предсказанное значение LGD.
LGDGroupTest = findgroups(data(TestInd,{'LTVDiscretized' 'AgeDiscretized' 'Type'})); LGDPredictedByGroupMeans = gs.mean_LGD(LGDGroupTest);
Сохраните наблюдаемый LGD и предсказанный LGD в новой таблице dataLGDPredicted
. Эта таблица хранилища предсказала значения LGD для всех других подходов в примере.
dataLGDPredicted = table; dataLGDPredicted.Observed = data.LGD(TestInd); dataLGDPredicted.GroupMeans = LGDPredictedByGroupMeans; disp(head(dataLGDPredicted))
Observed GroupMeans _________ __________ 0.0064766 0.066068 0.007947 0.12166 0.063182 0.25977 0 0.066068 0.10904 0.16489 0 0.16489 0.89463 0.16489 0 0.021776
Раздел Model Comparison имеет более подробное сравнение всех моделей, которое включает визуализацию и ошибочные метрики предсказания.
Естественный подход должен использовать модель регрессии, чтобы явным образом смоделировать отношение между LGD и некоторыми предикторами. Данные LGD, однако, ограничены в единичном интервале, тогда как переменная отклика для моделей линейной регрессии, в теории, неограниченной.
Чтобы применить простые подходы линейной регрессии, данные LGD могут быть преобразованы. Общее преобразование является функцией логита, которая приводит к следующей модели регрессии:
Значения LGD 0
или 1
заставьте функцию логита принимать бесконечные значения, таким образом, данные LGD являются обычно усеченными прежде, чем применить преобразование.
data.LGDTruncated = data.LGD; data.LGDTruncated(data.LGD==0) = 0.00001; data.LGDTruncated(data.LGD==1) = 0.99999; data.LGDLogit = log(data.LGDTruncated./(1-data.LGDTruncated));
Ниже гистограмма преобразованных данных LGD, которые используют функцию логита. Область значений значений охватывает положительные и отрицательные величины, который сопоставим с требованиями линейной регрессии. Распределение все еще показывает значительные массовые точки вероятности в концах распределения.
histogram(data.LGDLogit)
title('Logit Transformation of Truncated LGD Data')
Другие преобразования предлагаются в литературе [1]. Например, вместо функции логита, усеченные значения LGD могут быть сопоставлены с обратным стандартным нормальным распределением (похожий на нелинейную модель вероятности с нормальным распределением).
Подбирайте модель регрессии использование fitLGDModel
функция от Risk Management Toolbox™ с помощью обучающих данных. По умолчанию преобразование логита применяется к данным об ответе LGD с контуром tolerace 1e-5
. Для получения дополнительной информации о поддерживаемых преобразованиях и дополнительных аргументах, смотрите Regression
.
mdlRegression = fitLGDModel(data(TrainingInd,:),'regression','PredictorVars',{'LTV' 'Age' 'Type'},'ResponseVar','LGD'); disp(mdlRegression)
Regression with properties: ResponseTransform: "logit" BoundaryTolerance: 1.0000e-05 ModelID: "Regression" Description: "" UnderlyingModel: [1x1 classreg.regr.CompactLinearModel] PredictorVars: ["LTV" "Age" "Type"] ResponseVar: "LGD"
disp(mdlRegression.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
Коэффициенты модели совпадают с результатами в исследовательском анализе данных с положительным коэффициентом для LTV
, отрицательный коэффициент для Age
, и положительный коэффициент для объектов инвестиционной недвижимости в Type
переменная.
Regression
Модели LGD поддерживают предсказание и применяют обратное преобразование, таким образом, предсказанные значения LGD находятся в шкале LGD. Например, для модели, подбиравшей выше этого, использует преобразование логита, обратное преобразование логита (также известный как логистическую, или сигмоидальную функцию) применяется предсказать функцией, чтобы возвратить ожидаемое значение LGD.
dataLGDPredicted.Regression = predict(mdlRegression,data(TestInd,:)); disp(head(dataLGDPredicted))
Observed GroupMeans Regression _________ __________ __________ 0.0064766 0.066068 0.00091169 0.007947 0.12166 0.0036758 0.063182 0.25977 0.18774 0 0.066068 0.0010877 0.10904 0.16489 0.011213 0 0.16489 0.041992 0.89463 0.16489 0.052947 0 0.021776 3.7188e-06
Раздел Model Comparison в конце этого примера имеет более подробное сравнение всех моделей, которое включает визуализацию и ошибочные метрики предсказания. В частности, гистограмма предсказанных значений LGD показывает, что модель регрессии предсказывает много значений LGD около нуля, даже при том, что высокая вероятность около нуля не была явным образом смоделирована.
Товит или подвергнутая цензуре регрессия спроектированы для моделей, где ответ ограничен. Идея состоит в том, что существует базовая (скрытая) линейная модель, но что наблюдаемые значения отклика, в этом случае значения LGD, являются усеченными. В данном примере используйте модель, подвергнутую цензуре с обеих сторон с левым пределом в 0
и правильный предел в 1
, соответствие следующей формуле модели
с:
Параметры модели весь s и стандартное отклонение ошибки .
Подбирайте модель регрессии Товита с fitLGDModel
использование обучающих данных. По умолчанию модель, подвергнутая цензуре с обеих сторон, оснащена пределами в 0
и 1
. Для получения дополнительной информации о моделях Товита смотрите Tobit
.
mdlTobit = fitLGDModel(data(TrainingInd,:),'tobit','CensoringSide','both','PredictorVars',{'LTV' 'Age' 'Type'},'ResponseVar','LGD'); disp(mdlTobit)
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(mdlTobit.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
Модели Товита предсказывают использование безусловного ожидаемого значения ответа, учитывая значения предиктора. Для получения дополнительной информации смотрите Потерю, Данную Значение по умолчанию Товит Моделс.
dataLGDPredicted.Tobit = predict(mdlTobit,data(TestInd,:)); disp(head(dataLGDPredicted))
Observed GroupMeans Regression Tobit _________ __________ __________ ________ 0.0064766 0.066068 0.00091169 0.087889 0.007947 0.12166 0.0036758 0.12432 0.063182 0.25977 0.18774 0.32043 0 0.066068 0.0010877 0.093354 0.10904 0.16489 0.011213 0.16718 0 0.16489 0.041992 0.22382 0.89463 0.16489 0.052947 0.23695 0 0.021776 3.7188e-06 0.010234
Раздел Model Comparison в конце этого примера имеет более подробное сравнение всех моделей, которое включает визуализацию и ошибку предсказания с различными метриками. Гистограмма предсказанных значений LGD для модели Товита не имеет U-образного распределения, но это занимает место хорошо по сравнению с другими моделями.
В бета модели регрессии для LGD модель непосредственно не предсказывает одного значения LGD, это предсказывает целое распределение LGDs (учитывая значения предиктора). От того распределения значение должно быть полно решимости предсказать одно значение LGD для ссуды, обычно среднее значение того распределения.
Технически, учитывая значения предиктора и коэффициенты модели и , вы можете:
Вычислите значения для параметров (среднее значение) и (иногда названный "объемом выборки") бета распределения со следующими формулами:
Вычислите значения для и , типичные параметры бета распределения, с этими формулами:
Оцените функцию плотности соответствующего бета распределения для данного уровня , где гамма функция; см. [1] для деталей:
Для того, чтобы подбирать модель, когда-то функция плотности оценена, можно обновить функцию правдоподобия и найти оптимальные коэффициенты подходом вероятности имеющим. Смотрите раздел Local Functions, где наибольшее правдоподобие функционирует hLogLikelihoodBeta
задан.
Для предсказания, когда-то коэффициенты модели являются подходящими, предсказание может быть сделано, обычно с помощью среднего значения распределения, то есть, параметр, как предсказанное значение LGD.
Подбирайте бета модель регрессии, использующую обучающие данные с наибольшим правдоподобием. Максимизация hLogLikelihoodBeta
функция выполняется с неограниченным решателем fminunc
от Optimization Toolbox™.
% Convert Type to numeric binary TypeDummy = dummyvar(data.Type); data.Type01 = TypeDummy(:,2); ColumnNames = {'Intercept' 'LTV' 'Age' 'Type'}; NumCols = length(ColumnNames); % Initial guess x0 = 0.1*ones(2*NumCols,1); % Predictors Matrix and LGD, training % Use truncated LGD to avoid numerical issues at the boundaries XTrain = [ones(sum(TrainingInd),1) data.LTV(TrainingInd) data.Age(TrainingInd) data.Type01(TrainingInd)]; LGDTrain = data.LGDTruncated(TrainingInd); % Minimize negative likelihood objFunctionBeta = @(x)(-hLogLikelihoodBeta(x,XTrain,LGDTrain)); [Estimate,~,~,~,~,Hessian] = fminunc(objFunctionBeta,x0);
Computing finite-difference Hessian using objective function. Local minimum found. Optimization completed because the size of the gradient is less than the value of the optimality tolerance.
ParameterNamesBeta = [strcat('Mu_',ColumnNames) strcat('Nu_',ColumnNames)]; ModelParametersBeta = array2table(Estimate,'RowNames',ParameterNamesBeta); ModelParametersBeta.StdError = sqrt(diag(inv(Hessian))); ModelParametersBeta.DF = size(XTrain,1)*ones(length(Estimate),1); ModelParametersBeta.T = Estimate./ModelParametersBeta.StdError; ModelParametersBeta.PValue = 2*(1-tcdf(abs(ModelParametersBeta.T),ModelParametersBeta.DF)); ModelParametersBeta.ConfidenceInterval = Estimate+ModelParametersBeta.StdError*[-1.96 1.96]; disp(ModelParametersBeta)
Estimate StdError DF T PValue ConfidenceInterval ________ ________ ____ _______ __________ ____________________ Mu_Intercept -1.3772 0.13201 2093 -10.433 0 -1.636 -1.1185 Mu_LTV 0.6027 0.15087 2093 3.9947 6.7017e-05 0.30698 0.89841 Mu_Age -0.47464 0.040264 2093 -11.788 0 -0.55356 -0.39572 Mu_Type 0.4537 0.085143 2093 5.3287 1.0954e-07 0.28682 0.62058 Nu_Intercept -0.16338 0.12591 2093 -1.2976 0.19457 -0.41017 0.083406 Nu_LTV 0.055904 0.14719 2093 0.37981 0.70412 -0.23259 0.3444 Nu_Age 0.22888 0.040335 2093 5.6743 1.5858e-08 0.14982 0.30793 Nu_Type -0.14101 0.078154 2093 -1.8042 0.071342 -0.29419 0.012176
Для предсказания вспомните, что бета регрессия соединяет предикторы с целым бета распределением. Например, предположите, что ссуда имеет LTV
из 0.7
и Возраст 1.1
годы, и это - инвестиционная недвижимость. Бета модель регрессии дает нам предсказание для и параметры для этой ссуды и модель предсказывают, что для этой ссуды область значений возможных значений LGD следует за соответствующим бета распределением.
XExample = [1 0.7 1.1 1]; MuExample = 1/(1+exp(-XExample*Estimate(1:NumCols))); NuExample = exp(XExample*Estimate(NumCols+1:end)); AlphaExample = MuExample*NuExample; BetaExample = (1-MuExample)*NuExample; xDomain = 0.01:0.01:0.99; pBeta = betapdf(xDomain,AlphaExample,BetaExample); plot(xDomain,pBeta) title('Predicted Distribution, Single Loan') xlabel('Possible LGD') ylabel('Predicted Density')
Форма распределения имеет U-образный шаблон данных. Однако это - предсказанное распределение значений LGD для одной ссуды. Это распределение может быть очень полезно для целей симуляции. Однако, чтобы предсказать значение LGD для этой ссуды, метод требуется, который идет от целого распределения до одного значения.
Один способ предсказать состоял бы в том, чтобы случайным образом чертить значение от предыдущего распределения. Это имело бы тенденцию давать ожидаемые значения к концам единичного интервала, и полная форма распределения для набора данных будет совпадать с U-образной скороговоркой наблюдаемых значений LGD. Однако, даже если форма распределения выглядела правильной, случайная ничья от распределения не работает хорошо на цели предсказания. Две точки с теми же значениями предиктора имели бы два отличающихся предсказанных LGDs, который парадоксален. Кроме того, ошибка предсказания на уровне наблюдения могла быть большой, поскольку много кредитов с маленьким заметили, что LGDs мог получить случайные предсказания большого LGDs, и наоборот.
Чтобы уменьшать ошибку предсказания на индивидуальном уровне, ожидаемое значение бета распределения обычно используется, чтобы предсказать. Распределение ожидаемых значений с этим подходом не имеет ожидаемого U-образного шаблона, потому что среднее значение имеет тенденцию быть вдали от контуров единичного интервала. Однако при помощи среднего значения бета распределения, все наблюдения с теми же значениями предиктора добираются, то же самое предсказало LGDs. Кроме того, среднее значение не может быть близко к значениям, которые находятся на концах распределения, но средняя погрешность может быть меньшей по сравнению со случайными ничьими от предыдущего подхода.
Предскажите использование среднего значения бета распределения. Помните, что ожидаемое значение распределения параметр, таким образом, предсказание среднего значения является прямым.
XTest = [ones(sum(TestInd),1) data.LTV(TestInd) data.Age(TestInd) data.Type01(TestInd)]; MuTest = 1./(1+exp(-XTest*Estimate(1:NumCols))); dataLGDPredicted.Beta = MuTest; disp(head(dataLGDPredicted))
Observed GroupMeans Regression Tobit Beta _________ __________ __________ ________ ________ 0.0064766 0.066068 0.00091169 0.087889 0.093695 0.007947 0.12166 0.0036758 0.12432 0.14915 0.063182 0.25977 0.18774 0.32043 0.35262 0 0.066068 0.0010877 0.093354 0.096434 0.10904 0.16489 0.011213 0.16718 0.18858 0 0.16489 0.041992 0.22382 0.2595 0.89463 0.16489 0.052947 0.23695 0.26767 0 0.021776 3.7188e-06 0.010234 0.021315
Раздел Model Comparison в конце этого примера имеет более подробное сравнение всех моделей, которое включает визуализацию и ошибочные метрики предсказания. В частности, гистограмма предсказанных значений LGD показывает, что бета подход регрессии не производит U-образное распределение. Однако этот подход действительно имеет хорошую эффективность под другими метриками сообщаемой.
2D подготовьте модели LGD, отдельные случай без потерь (LGD, равный 0
) от случаев с фактическими потерями (LGD, больше, чем 0
) и создайте две модели. Модель этапа 1 является моделью классификации, чтобы предсказать, будет ли ссуда иметь положительный LGD. Этап 2 моделирует модель типа регрессии, чтобы предсказать фактический LGD, когда LGD, как ожидают, будет положителен. Предсказание является ожидаемым значением двух объединенных моделей, которое является продуктом вероятности наличия потери (предсказание этапа 1) времена ожидаемое значение LGD (предсказание этапа 2).
В этом примере модель логистической регрессии используется для этапа 1. Подготовьте два, регрессия на преобразовании логита положительных данных LGD, адаптированном использовании fitLGDModel
. Более сложные модели могут использоваться для этапа 1 и моделей этапа 2, видеть, например [4] или [6]. Кроме того, другое расширение должно явным образом обработать LGD = 1
контур. Модель этапа 1 произвела бы вероятности наблюдения LGD 0
, LGD 1
, и значение LGD строго между 0
и 1
. Модель этапа 2 предсказала бы значения LGD, когда LGD, как ожидают, будет строго между 0
и 1
.
Подбирайте модель этапа 1 использование обучающих данных. Переменная отклика является индикатором со значением 1
если наблюдаемый LGD положителен, и 0
если наблюдаемый LGD является нулем.
IndLGDPositive = data.LGD>0; data.LGDPositive = IndLGDPositive; disp(head(data))
LTV Age Type LGD LTVDiscretized AgeDiscretized LGDTruncated LGDLogit Type01 LGDPositive _______ _______ ___________ _________ ______________ ______________ ____________ ________ ______ ___________ 0.89101 0.39716 residential 0.032659 high young 0.032659 -3.3884 0 true 0.70176 2.0939 residential 0.43564 high old 0.43564 -0.25887 0 true 0.72078 2.7948 residential 0.0064766 high old 0.0064766 -5.0331 0 true 0.37013 1.237 residential 0.007947 low young 0.007947 -4.827 0 true 0.36492 2.5818 residential 0 low old 1e-05 -11.513 0 false 0.796 1.5957 residential 0.14572 high young 0.14572 -1.7686 0 true 0.60203 1.1599 residential 0.025688 high young 0.025688 -3.6357 0 true 0.92005 0.50253 investment 0.063182 high young 0.063182 -2.6965 1 true
mdl1 = fitglm(data(TrainingInd,:),"LGDPositive ~ 1 + LTV + Age + Type",'Distribution',"binomial"); disp(mdl1)
Generalized linear regression model: logit(LGDPositive) ~ 1 + LTV + Age + Type Distribution = Binomial Estimated Coefficients: Estimate SE tStat pValue ________ ________ _______ __________ (Intercept) 1.3157 0.21193 6.2083 5.3551e-10 LTV 1.3159 0.25328 5.1954 2.0433e-07 Age -0.79597 0.053607 -14.848 7.1323e-50 Type_investment 0.66784 0.17019 3.9241 8.7051e-05 2093 observations, 2089 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 404, p-value = 2.68e-87
О графике кривой рабочей характеристики приемника (ROC) для модели этапа 1 обычно сообщают с помощью тестовых данных, а также области под кривой ROC (AUROC или просто AUC).
PredictedProbLGDPositive = predict(mdl1,data(TestInd,:));
[x,y,~,AUC] = perfcurve(data.LGDPositive(TestInd),PredictedProbLGDPositive,1);
plot(x,y)
title(sprintf('ROC Stage 1 Model (AUROC: %g)',AUC))
Подбирайте модель этапа 2 с fitLGDModel
использование только обучающих данных с положительным LGD. Это - тот же тип модели, используемой ранее в разделе Regression, однако, на этот раз это адаптировано с помощью только наблюдения от обучающих данных с положительным LGDs.
dataLGDPositive = data(TrainingInd&IndLGDPositive,{'LTV','Age','Type','LGD'}); mdl2 = fitLGDModel(dataLGDPositive,'regression'); disp(mdl2.UnderlyingModel)
Compact linear regression model: LGD_logit ~ 1 + LTV + Age + Type Estimated Coefficients: Estimate SE tStat pValue ________ ________ _______ __________ (Intercept) -2.9083 0.27538 -10.561 3.2039e-25 LTV 1.3883 0.31838 4.3604 1.384e-05 Age -0.46116 0.081939 -5.6281 2.1608e-08 Type_investment 0.78223 0.18096 4.3226 1.6407e-05 Number of observations: 1546, Error degrees of freedom: 1542 Root Mean Squared Error: 2.8 R-squared: 0.0521, Adjusted R-Squared: 0.0503 F-statistic vs. constant model: 28.3, p-value = 8.73e-18
Выполните предсказание на тестовых данных с помощью объединенных моделей для этапа 1 и этапа 2. Предсказанный LGD является продуктом вероятности наблюдения положительного LGD со времен модели этапа 1 ожидаемое значение LGD, предсказанное моделью этапа 2. Вспомните, что модели регрессии соответствовали использованию fitLGDModel
примените обратное преобразование во время предсказания, таким образом, ожидаемое значение является допустимым значением LGD.
PredictedLGDPositive = predict(mdl2,data(TestInd,:)); % PredictedProbLGDPositive is computed before the ROC curve above % Final LGD prediction is the product of stage 1 and stage 2 predictions dataLGDPredicted.TwoStage = PredictedProbLGDPositive.*PredictedLGDPositive; disp(head(dataLGDPredicted))
Observed GroupMeans Regression Tobit Beta TwoStage _________ __________ __________ ________ ________ _________ 0.0064766 0.066068 0.00091169 0.087889 0.093695 0.020038 0.007947 0.12166 0.0036758 0.12432 0.14915 0.034025 0.063182 0.25977 0.18774 0.32043 0.35262 0.2388 0 0.066068 0.0010877 0.093354 0.096434 0.022818 0.10904 0.16489 0.011213 0.16718 0.18858 0.060072 0 0.16489 0.041992 0.22382 0.2595 0.097685 0.89463 0.16489 0.052947 0.23695 0.26767 0.11142 0 0.021776 3.7188e-06 0.010234 0.021315 0.0003689
Раздел Model Comparison в конце этого примера имеет более подробное сравнение всех моделей, которое включает визуализацию и ошибочные метрики предсказания. Этот подход также занимает место хорошо по сравнению с другими моделями, и гистограмма предсказанных значений LGD показывает высокие частоты около 0
.
Чтобы оценить эффективность моделей LGD, различные метрики обычно используются. Одна метрика является R-squared линейной подгонки, регрессирующей наблюдаемые значения LGD на ожидаемых значениях. Вторая метрика является некоторой корреляцией или статистической величиной рангового порядка; этот пример использует корреляцию Копьеносца. Для ошибки предсказания среднеквадратическая ошибка (RMSE) является общей метрикой. Кроме того, простая метрика, о которой иногда сообщают, является различием между средним значением LGD в данных и средним значением LGD предсказаний.
Регрессия и модели Товита непосредственно поддерживают эти метрики с modelAccuracy
функция, включая сравнение против образца модели. Например, вот отчет этих метрик для модели регрессии, передавая предсказания простой непараметрической модели как ссылка.
AccMeasure = modelAccuracy(mdlRegression,data(TestInd,:),'DataID','Test','ReferenceLGD',dataLGDPredicted.GroupMeans,'ReferenceID','Group Means','CorrelationType','spearman'); disp(AccMeasure)
RSquared RMSE Correlation SampleMeanError ________ _______ ___________ _______________ Regression, Test 0.070867 0.25988 0.42152 0.10759 Group Means, Test 0.041622 0.2406 0.33807 -0.0078124
Визуализация также непосредственно поддерживается с modelAccuracyPlot
.
modelAccuracyPlot(mdlRegression,data(TestInd,:),'DataID','Test','ReferenceLGD',dataLGDPredicted.GroupMeans,'ReferenceID','Group Means')
Кроме того, Regression
и Tobit
инструменты дискриминации модели поддержки моделей, с modelDiscrimination
и modelDiscriminationPlot
функции. Для дискриминации модели данные LGD дискретизируются (высокий LGD по сравнению с низким LGD) и кривая ROC, и соответствующие AUROC вычисляются стандартным способом. Для получения дополнительной информации смотрите modelDiscrimination
и modelDiscriminationPlot
. Например, вот кривая ROC для модели регрессии с кривой ROC непараметрической модели как ссылка.
modelDiscriminationPlot(mdlRegression,data(TestInd,:),'DataID','Test','ReferenceLGD',dataLGDPredicted.GroupMeans,'ReferenceID','Group Means')
Остальная часть этого раздела проверки допустимости модели работает с предсказанными значениями LGD из всех моделей, чтобы вычислить упомянутые выше метрики (R-squared, корреляция Копьеносца, RMSE и демонстрационная средняя погрешность). Это также показывает график рассеивания, гистограмму и диаграмму далее анализировать эффективность моделей.
Об этих четырех метриках сообщают ниже, сортируют путем уменьшения значений R-squared.
ModelNames = dataLGDPredicted.Properties.VariableNames(2:end); % Remove 'Observed' NumModels = length(ModelNames); SampleMeanError = zeros(NumModels,1); RSquared = zeros(NumModels,1); Spearman = zeros(NumModels,1); RMSE = zeros(NumModels,1); lmAll = struct; meanLGDTest = mean(dataLGDPredicted.Observed); for ii=1:NumModels % R-squared, and store linear model fit for visualization section Formula = ['Observed ~ 1 + ' ModelNames{ii}]; lmAll.(ModelNames{ii}) = fitlm(dataLGDPredicted,Formula); RSquared(ii) = lmAll.(ModelNames{ii}).Rsquared.Ordinary; % Spearman correlation Spearman(ii) = corr(dataLGDPredicted.Observed,dataLGDPredicted.(ModelNames{ii}),'type','Spearman'); % Root mean square error RMSE(ii) = sqrt(mean((dataLGDPredicted.Observed-dataLGDPredicted.(ModelNames{ii})).^2)); % Sample mean error SampleMeanError(ii) = meanLGDTest-mean(dataLGDPredicted.(ModelNames{ii})); end PerformanceMetrics = table(RSquared,Spearman,RMSE,SampleMeanError,'RowNames',ModelNames); PerformanceMetrics = sortrows(PerformanceMetrics,'RSquared','descend'); disp(PerformanceMetrics)
RSquared Spearman RMSE SampleMeanError ________ ________ _______ _______________ TwoStage 0.090814 0.41987 0.24197 0.060619 Tobit 0.08527 0.42217 0.23712 -0.034412 Beta 0.080804 0.41557 0.24112 -0.052396 Regression 0.070867 0.42152 0.25988 0.10759 GroupMeans 0.041622 0.33807 0.2406 -0.0078124
Для конкретного обучения по сравнению с тестовым разделом, используемым в этом примере, модель 2D этапа имеет самый высокий R-squared, несмотря на то, что для других разделов, у Товита есть самое высокое значение R-squared. Даже при том, что средний подход группы не имеет высокого значения R-squared, он обычно имеет самую маленькую демонстрационную среднюю погрешность (среднее значение предсказанных значений LGD минус средний LGD в тестовых данных). Средние значения группы также конкурентоспособны для метрики RMSE.
Сообщите о производительности модели один подход за один раз, включая визуализацию. Отобразите метрики для выбранной модели.
ModelSelected = "TwoStage";
disp (PerformanceMetrics (ModelSelected, :))
RSquared Spearman RMSE SampleMeanError ________ ________ _______ _______________ TwoStage 0.090814 0.41987 0.24197 0.060619
Постройте подгонку регрессии (наблюдал LGD по сравнению с предсказанным LGD), который является общим визуальным инструментом, чтобы оценить производительность модели. Это - по существу та же визуализация как modelAccuracyPlot
функция, показанная выше, но использование plot
функция подбиравших линейных моделей. R-squared, о котором сообщают выше, является R-squared этой регрессии. График показывает существенное количество ошибки для всех моделей. Хорошей прогнозной модели определили бы местоположение точек в основном по диагонали и не была бы рассеяна на всем протяжении модульного квадрата. Однако метрики выше действительно показывают некоторые различия в прогнозирующей эффективности для различных моделей, которые могут быть важными на практике.
plot(lmAll.(ModelSelected)) xlim([0 1]) ylim([0 1])
Сравните гистограммы предсказанных и наблюдаемых значений LGD. Для некоторых моделей распределение ожидаемых значений показывает высокие частоты около нуля, похожего на форму U наблюдаемого распределения LGD. Однако соответствие с формой распределения не означает высокой точности на уровне отдельных предсказаний; некоторые модели показывают лучшую ошибку предсказания даже при том, что их гистограмма не имеет формы U.
LGDEdges = 0:0.1:1; % Ten bins to better show the distribution shape y1 = histcounts(dataLGDPredicted.(ModelSelected),LGDEdges); y2 = histcounts(dataLGDPredicted.Observed,LGDEdges); bar((LGDEdges(1:end-1)+LGDEdges(2:end))/2,[y1; y2]) title(strcat(ModelSelected,' Model')) ylabel('Frequency') xlabel('LGD') legend('Predicted','Observed') grid on
Покажите диаграмму наблюдаемых значений LGD для различных областей значений предсказанных значений LGD. Более грубая дискретизация (только пять интервалов) сглаживает некоторый шум и лучше обобщает базовое отношение. Идеально, медиана (красная горизонтальная линия в середине) должна иметь монотонный тренд и явно отличаться от одного уровня до следующего. Высокие поля также означают, что существует существенное количество ошибки вокруг ожидаемых значений, которые в некоторых случаях могут произойти из-за очень немногих наблюдений на том уровне. Для хорошей прогнозной модели поля должны быть короткими и быть расположены около диагонали, когда вы перемещаетесь от одного уровня до следующего.
LGDEdges = linspace(min(dataLGDPredicted.(ModelSelected)),max(dataLGDPredicted.(ModelSelected)),6); % Five bins LGDDiscretized = discretize(dataLGDPredicted.(ModelSelected),LGDEdges,'Categorical',string(LGDEdges(2:end))); boxplot(dataLGDPredicted.Observed,LGDDiscretized) ylim([0 1]) title(strcat(ModelSelected,' Model')) xlabel('Predicted LGD, Discretized') ylabel('Observed LGD')
Этот пример показывает несколько подходов для моделирования LGD и предсказания. Регрессия и модели Товита (включая модель регрессии второго этапа в модели 2D этапа) адаптированы с помощью fitLGDModel
функция от Risk Management Toolbox. Другие модели приспособлены, основываясь на существующей функциональности в Optimization Toolbox и Statistics and Machine Learning Toolbox.
Рабочий процесс в этом примере может быть адаптирован, чтобы далее анализировать модели, обсужденные здесь или реализовать и подтвердить другие подходы моделирования. Этот пример может быть расширен, чтобы выполнить более полное сравнение моделей LGD (см., например [3] и [4]).
Пример может также быть расширен, чтобы выполнить анализ перекрестной проверки, чтобы или протестировать альтернативных моделей в сравнении с эталоном или подстроить гиперпараметры. Например, лучшие пороговые значения для средних значений группы могли быть выбраны с помощью перекрестной проверки, или альтернативные преобразования значений отклика LGD (логит, пробит) могли быть протестированы в сравнении с эталоном, чтобы выбрать тот с лучшей эффективностью. Этим примером может также быть начальная точка, чтобы выполнить backtesting анализ с помощью несвоевременных данных; смотрите, например [5].
[1] Baesens, B., Д. Рош и Х. Шеул. Аналитика кредитного риска. Вайли, 2016.
[2] Джонстон Росс, E. и Л. Шибут. "Что управляет потерей, данной значение по умолчанию? Доказательство от кредитов коммерческой недвижимости в банках-банкротах". Федеральная корпорация страхования депозитов, сосредоточьтесь для финансового исследования, рабочего документа 2015-03, март 2015.
[3] Литий, P., С. Чжан и С. Чжао. "Моделируя потерю, данную значение по умолчанию. "Федеральная корпорация страхования депозитов, центр финансового исследования, рабочего документа 2018-03, июль 2018.
[4] Лотермен, G. i. Браун, D. Куницы, К. Муес и Б. Бэезенс. "Тестируя Алгоритмов Регрессии в сравнении с эталоном за Потерю, Данную Моделирование Значения по умолчанию". Международный журнал Прогнозирования. Издание 28, № 1, стр 161–170, 2012.
[5] Лотермен, G., М. Дебруин, К. Вэнден Брэнден, Т. ван Джестель и К. Муес. "Предложенная Среда за Потерю Backtesting, Данную Модели По умолчанию". Журнал Проверки допустимости модели Риска. Издание 8, № 1, стр 69-90, март 2014.
[6] Tanoue, Y. и С. Ямасита. "Потеря, Данная Оценку По умолчанию: Модель 2D Этапа с Классификацией Основанная на дереве Логистическая регрессия Вектора Повышения и Поддержки". Журнал Риска. Издание 21 № 4, стр 19-37, 2019.
Бета логарифмическая вероятность
Функция логарифмической правдоподобности для бета модели регрессии
,
где:
и
Матрица предиктора и вектор из наблюдаемых значения прибывают из обучающих данных с наблюдения. Функция плотности для бета распределения дана ( Гамма функция),
Учитывая данные, функция логарифмической правдоподобности является функцией содействующих параметров и , даже при том, что формулы выше не делают эту зависимость явным образом, чтобы упростить обозначение. Функция логарифмической правдоподобности максимизируется путем варьирования и параметры. Параметры распределения и > 0, и и промежуточные преобразования, требуемые выполнять функцию логарифмической правдоподобности. Для получения дополнительной информации смотрите, например [1].
function f = hLogLikelihoodBeta(Params, X, y) nCols = size(X,2); b = Params(1:nCols); c = Params(nCols+1:end); % Linear predictors yMu = X*b; yNu = X*c; mu = 1 ./ (1 + exp(-yMu)); nu = exp(yNu); % Transform to standard parameterization alpha = mu .* nu; beta = (1-mu) .* nu; % Negative log-likelihood likelihood = betapdf(y,alpha,beta); f = sum(log(likelihood)); end