В этом примере показано, как использовать fitEADModel создать Regression модель и Tobit модель для воздействия в значении по умолчанию (EAD) и затем сравнивает результаты.
Загрузите данные EAD.
load EADData.mat
head(EADData)ans=8×6 table
UtilizationRate Age Marriage Limit Drawn EAD
_______________ ___ ___________ __________ __________ __________
0.24359 25 not married 44776 10907 44740
0.96946 44 not married 2.1405e+05 2.0751e+05 40678
0 40 married 1.6581e+05 0 1.6567e+05
0.53242 38 not married 1.7375e+05 92506 1593.5
0.2583 30 not married 26258 6782.5 54.175
0.17039 54 married 1.7357e+05 29575 576.69
0.18586 27 not married 19590 3641 998.49
0.85372 42 not married 2.0712e+05 1.7682e+05 1.6454e+05
rng('default'); NumObs = height(EADData); c = cvpartition(NumObs,'HoldOut',0.4); TrainingInd = training(c); TestInd = test(c);
Выберите Regression и Tobit тип модели.
ModelTypeR ="Regression"; ModelTypeT =
"Tobit";
Выберите меру по преобразованию для значений отклика EAD.
ConversionMeasure =
"LCF";Regression Модель EADИспользуйте fitEADModel создать Regression модель с помощью EADData.
eadModelRegression = fitEADModel(EADData,ModelTypeR,'PredictorVars',{'UtilizationRate','Age','Marriage'}, ... 'ConversionMeasure',ConversionMeasure,'DrawnVar','Drawn','LimitVar','Limit','ResponseVar','EAD'); disp(eadModelRegression);
Regression with properties:
ConversionTransform: "logit"
BoundaryTolerance: 1.0000e-07
ModelID: "Regression"
Description: ""
UnderlyingModel: [1x1 classreg.regr.CompactLinearModel]
PredictorVars: ["UtilizationRate" "Age" "Marriage"]
ResponseVar: "EAD"
LimitVar: "Limit"
DrawnVar: "Drawn"
ConversionMeasure: "lcf"
Отобразите базовую модель. Базовый Regression переменной отклика модели является logit преобразование данных об ответе EAD. Используйте 'BoundaryTolerance', 'LimitVar', и 'DrawnVar' аргументы name-value, чтобы изменить преобразование.
disp(eadModelRegression.UnderlyingModel);
Compact linear regression model:
EAD_lcf_logit ~ 1 + UtilizationRate + Age + Marriage
Estimated Coefficients:
Estimate SE tStat pValue
_________ _________ _______ __________
(Intercept) -2.4745 0.29892 -8.2781 1.6448e-16
UtilizationRate 6.0045 0.19901 30.172 7.703e-182
Age -0.020095 0.0073019 -2.752 0.0059471
Marriage_not married -0.03509 0.13935 -0.2518 0.8012
Number of observations: 4378, Error degrees of freedom: 4374
Root Mean Squared Error: 4.48
R-squared: 0.173, Adjusted R-Squared: 0.173
F-statistic vs. constant model: 305, p-value = 5.7e-180
Tobit Модель EADИспользуйте fitEADModel создать Tobit модель с помощью EADData.
eadModelTobit = fitEADModel(EADData,ModelTypeT,'PredictorVars',{'UtilizationRate','Age','Marriage'}, ... 'ConversionMeasure',ConversionMeasure,'DrawnVar','Drawn','LimitVar','Limit','ResponseVar','EAD','CensoringSide',"right",'LeftLimit',0.4,'RightLimit',0.5); disp(eadModelTobit);
Tobit with properties:
CensoringSide: "right"
LeftLimit: 0.4000
RightLimit: 0.5000
ModelID: "Tobit"
Description: ""
UnderlyingModel: [1x1 risk.internal.credit.TobitModel]
PredictorVars: ["UtilizationRate" "Age" "Marriage"]
ResponseVar: "EAD"
LimitVar: "Limit"
DrawnVar: "Drawn"
ConversionMeasure: "lcf"
Отобразите базовую модель. Базовый Tobit переменной отклика модели является complog преобразование данных об ответе EAD. Используйте 'LimitVar', 'DrawnVar', 'CensoringSide', 'RightLimit', 'LeftLimit', и 'SolverOptions' аргументы name-value, чтобы изменить преобразование.
disp(eadModelTobit.UnderlyingModel);
Tobit regression model, right-censored:
EAD_lcf = min(Y*,0.5)
Y* ~ 1 + UtilizationRate + Age + Marriage
Estimated coefficients:
Estimate SE tStat pValue
__________ __________ ________ ________
(Intercept) 0.18088 0.021124 8.5628 0
UtilizationRate 0.42381 0.013869 30.558 0
Age -0.0014564 0.00052238 -2.788 0.005326
Marriage_not married -0.0040197 0.0096584 -0.41619 0.67729
(Sigma) 0.27917 0.0043245 64.555 0
Number of observations: 4378
Number of left-censored observations: 0
Number of uncensored observations: 2802
Number of right-censored observations: 1576
Log-likelihood: -1756.98
Regression МодельПредсказание EAD работает с базовой компактной статистической моделью и затем преобразовывает ожидаемые значения назад к шкале EAD. Можно задать predict функция с различными вариантами для 'ModelLevel' аргумент долины имени.
predictedEADRegression = predict(eadModelRegression,EADData(TestInd,:),'ModelLevel','ead'); predictedConversionRegression = predict(eadModelRegression,EADData(TestInd,:),'ModelLevel','ConversionMeasure');
Tobit МодельПредсказание EAD работает с базовой компактной статистической моделью и затем преобразовывает ожидаемые значения назад к шкале EAD. Можно задать predict функция с различными вариантами для 'ModelLevel' аргумент долины имени.
predictedEADTobit = predict(eadModelTobit,EADData(TestInd,:),'ModelLevel','ead'); predictedConversionTobit = predict(eadModelTobit,EADData(TestInd,:),'ModelLevel','ConversionMeasure');
Regression EAD МодельДля проверки допустимости модели Regression модель, используйте modelDiscrimination, modelDiscriminationPlot, modelAccuracy, и modelAccuracyPlot.
Используйте modelDiscrimination и затем modelDiscriminationPlot построить кривую ROC.
ModelLevel ="ConversionMeasure"; [DiscMeasureRegression, DiscDataRegression] = modelDiscrimination (eadModelRegression, EADData (TestInd, :),'ModelLevel', ModelLevel); modelDiscriminationPlot (eadModelRegression, EADData (TestInd, :),'ModelLevel', ModelLevel,'SegmentBy','Marriage');

Используйте modelAccuracy и затем modelAccuracyPlot показать график рассеивания предсказаний.
YData ="Observed"; [AccMeasureRegression, AccDataRegression] = modelAccuracy (eadModelRegression, EADData (TestInd, :),'ModelLevel', ModelLevel)
AccMeasureRegression=1×4 table
RSquared RMSE Correlation SampleMeanError
________ _______ ___________ _______________
Regression 0.16148 0.41023 0.40184 -0.025994
AccDataRegression=1751×3 table
Observed Predicted_Regression Residuals_Regression
__________ ____________________ ____________________
0.99919 0.17519 0.824
0.0020632 0.17343 -0.17137
0.03741 0.7527 -0.71529
0.75518 0.89867 -0.14349
0.00076139 0.042389 -0.041628
0.9998 0.95153 0.048274
0.0056134 0.1338 -0.12819
0.048451 0.043424 0.0050276
0.01448 0.059339 -0.044858
0.95329 0.67009 0.2832
0.97847 0.939 0.03947
0.71895 0.80122 -0.082271
0.79096 0.3791 0.41186
0.042816 0.52542 -0.4826
0.97169 0.2119 0.75979
0.99182 0.62543 0.36639
⋮
modelAccuracyPlot(eadModelRegression, EADData(TestInd,:), 'ModelLevel', ModelLevel, 'YData', YData);

Tobit EAD МодельДля проверки допустимости модели Tobit модель, используйте modelDiscrimination, modelDiscriminationPlot, modelAccuracy, и modelAccuracyPlot.
Используйте modelDiscrimination и затем modelDiscriminationPlot построить кривую ROC.
ModelLevel ="ConversionMeasure"; [DiscMeasureTobit, DiscDataTobit] = modelDiscrimination (eadModelTobit, EADData (TestInd, :),'ModelLevel', ModelLevel); modelDiscriminationPlot (eadModelTobit, EADData (TestInd, :),'ModelLevel', ModelLevel,'SegmentBy','Marriage');

Используйте modelAccuracy и затем modelAccuracyPlot показать график рассеивания предсказаний.
YData ="Observed"; [AccMeasureTobit, AccDataTobit] = modelAccuracy (eadModelTobit, EADData (TestInd, :),'ModelLevel', ModelLevel)
AccMeasureTobit=1×4 table
RSquared RMSE Correlation SampleMeanError
________ _______ ___________ _______________
Tobit 0.15929 0.39572 0.39911 0.13366
AccDataTobit=1751×3 table
Observed Predicted_Tobit Residuals_Tobit
__________ _______________ _______________
0.99919 0.21657 0.78261
0.0020632 0.21571 -0.21365
0.03741 0.35115 -0.31374
0.75518 0.39272 0.36245
0.00076139 0.12184 -0.12107
0.9998 0.41744 0.58237
0.0056134 0.19913 -0.19351
0.048451 0.12215 -0.073701
0.01448 0.14323 -0.12875
0.95329 0.33415 0.61914
0.97847 0.41069 0.56778
0.71895 0.3627 0.35624
0.79096 0.27467 0.51629
0.042816 0.30579 -0.26297
0.97169 0.23025 0.74144
0.99182 0.32461 0.66721
⋮
modelAccuracyPlot(eadModelTobit,EADData(TestInd,:),'ModelLevel',ModelLevel,'YData',YData);

Постройте гистограмму наблюдаемых относительно предсказанного EAD для Regression модель.
figure; histogram(AccDataRegression.Observed); hold on; histogram(AccDataRegression.(('Predicted_' + ModelTypeR))); legend('Observed','Predicted');

Постройте гистограмму наблюдаемых относительно предсказанного EAD для Tobit модель.
figure; histogram(AccDataTobit.Observed); hold on; histogram(AccDataTobit.(('Predicted_' + ModelTypeT))); legend('Observed','Predicted');

Для обоих Tobit и Regression модели, Age и UtilizationRate предикторы являются статистически значительными, в то время как Marriage предиктор не является статистически значительным. Кроме того, Tobit и Regression модели имеют различные значения R-квадрата.
Regression | Tobit | fitEADModel | predict | modelDiscrimination | modelDiscriminationPlot | modelAccuracy | modelAccuracyPlot