displaypoints

Возвратите точки на предиктор на интервал

Синтаксис

PointsInfo = displaypoints(sc)
[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
[PointsInfo,MinScore,MaxScore] = displaypoints(___,Name,Value)

Описание

пример

PointsInfo = displaypoints(sc) возвращает таблицу точек для всех интервалов всех переменных прогноза, используемых в объекте creditscorecard после того, как линейная модель логистической регрессии будет подходящим использованием fitmodel к Весу данных о Доказательстве. Таблица PointsInfo показывает информацию об имени предиктора, метках интервала и соответствующих точках на интервал.

пример

[PointsInfo,MinScore,MaxScore] = displaypoints(sc) возвращает таблицу точек для всех интервалов всех переменных прогноза, используемых в объекте creditscorecard после того, как линейная модель логистической регрессии будет подходящей (fitmodel) к Весу данных о Доказательстве. Таблица PointsInfo показывает информацию об имени предиктора, метках интервала и соответствующих точках на интервал и displaypoints. Кроме того, дополнительный MinScore и значения MaxScore возвращены.

пример

[PointsInfo,MinScore,MaxScore] = displaypoints(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе.

Примеры

свернуть все

Этот пример показывает, как использовать displaypoints после того, как модель адаптирована, чтобы вычислить немасштабированные точки на интервал для данного предиктора в модели creditscorecard.

Создайте объект creditscorecard с помощью файла CreditCardData.mat, чтобы загрузить data (использующий набор данных от Refaat 2011). Используйте аргумент 'IDVar' в функции creditscorecard, чтобы указать, что 'CustID' содержит информацию о ID и не должен быть включен как переменная прогноза.

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое раскладывание к интервалу для всех предикторов.

sc = autobinning(sc);

Соответствуйте модели линейной регрессии, использующей параметры по умолчанию.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Отобразите немасштабированные точки для предикторов, сохраненных в подходящей модели.

PointsInfo = displaypoints(sc)
PointsInfo=30×3 table
     Predictors           Bin           Points  
    ____________    _______________    _________

    'CustAge'       '[-Inf,33)'         -0.15894
    'CustAge'       '[33,37)'           -0.14036
    'CustAge'       '[37,40)'          -0.060323
    'CustAge'       '[40,46)'           0.046408
    'CustAge'       '[46,48)'            0.21445
    'CustAge'       '[48,58)'            0.23039
    'CustAge'       '[58,Inf]'             0.479
    'ResStatus'     'Tenant'           -0.031252
    'ResStatus'     'Home Owner'         0.12696
    'ResStatus'     'Other'              0.37641
    'EmpStatus'     'Unknown'          -0.076317
    'EmpStatus'     'Employed'           0.31449
    'CustIncome'    '[-Inf,29000)'      -0.45716
    'CustIncome'    '[29000,33000)'     -0.10466
    'CustIncome'    '[33000,35000)'     0.052329
    'CustIncome'    '[35000,40000)'     0.081611
      ⋮

Создайте объект creditscorecard с помощью файла CreditCardData.mat, чтобы загрузить data с отсутствующими значениями.

load CreditCardData.mat 
head(dataMissing,5)
ans=5×11 table
    CustID    CustAge    TmAtAddress     ResStatus     EmpStatus    CustIncome    TmWBank    OtherCC    AMBalance    UtilRate    status
    ______    _______    ___________    ___________    _________    __________    _______    _______    _________    ________    ______

      1          53          62         <undefined>    Unknown        50000         55         Yes       1055.9        0.22        0   
      2          61          22         Home Owner     Employed       52000         25         Yes       1161.6        0.24        0   
      3          47          30         Tenant         Employed       37000         61         No        877.23        0.29        0   
      4         NaN          75         Home Owner     Employed       53000         20         Yes       157.37        0.08        0   
      5          68          56         Home Owner     Employed       53000         14         Yes       561.84        0.11        0   

fprintf('Number of rows: %d\n',height(dataMissing))
Number of rows: 1200
fprintf('Number of missing values CustAge: %d\n',sum(ismissing(dataMissing.CustAge)))
Number of missing values CustAge: 30
fprintf('Number of missing values ResStatus: %d\n',sum(ismissing(dataMissing.ResStatus)))
Number of missing values ResStatus: 40

Используйте creditscorecard с набором аргумента 'BinMissingData' значения имени к true к интервалу недостающие числовые или категориальные данные в отдельном интервале. Примените автоматическое раскладывание.

sc = creditscorecard(dataMissing,'IDVar','CustID','BinMissingData',true);
sc = autobinning(sc);

disp(sc)
  creditscorecard with properties:

                GoodLabel: 0
              ResponseVar: 'status'
               WeightsVar: ''
                 VarNames: {1x11 cell}
        NumericPredictors: {1x6 cell}
    CategoricalPredictors: {'ResStatus'  'EmpStatus'  'OtherCC'}
           BinMissingData: 1
                    IDVar: 'CustID'
            PredictorVars: {1x9 cell}
                     Data: [1200x11 table]

Отобразите и постройте информацию об интервале для числовых данных для 'CustAge', который включает недостающие данные в отдельный интервал, маркировал <missing>.

[bi,cp] = bininfo(sc,'CustAge');
disp(bi)
        Bin        Good    Bad     Odds       WOE       InfoValue 
    ___________    ____    ___    ______    ________    __________

    '[-Inf,33)'     69      52    1.3269    -0.42156      0.018993
    '[33,37)'       63      45       1.4    -0.36795      0.012839
    '[37,40)'       72      47    1.5319     -0.2779     0.0079824
    '[40,46)'      172      89    1.9326    -0.04556     0.0004549
    '[46,48)'       59      25      2.36     0.15424     0.0016199
    '[48,51)'       99      41    2.4146     0.17713     0.0035449
    '[51,58)'      157      62    2.5323     0.22469     0.0088407
    '[58,Inf]'      93      25      3.72     0.60931      0.032198
    '<missing>'     19      11    1.7273    -0.15787    0.00063885
    'Totals'       803     397    2.0227         NaN      0.087112
plotbins(sc,'CustAge')

Отобразите и постройте информацию об интервале для категориальных данных для 'ResStatus', который включает недостающие данные в отдельный интервал, маркировал <missing>.

[bi,cg] = bininfo(sc,'ResStatus');
disp(bi)
        Bin         Good    Bad     Odds        WOE       InfoValue 
    ____________    ____    ___    ______    _________    __________

    'Tenant'        296     161    1.8385    -0.095463     0.0035249
    'Home Owner'    352     171    2.0585     0.017549    0.00013382
    'Other'         128      52    2.4615      0.19637     0.0055808
    '<missing>'      27      13    2.0769     0.026469    2.3248e-05
    'Totals'        803     397    2.0227          NaN     0.0092627
plotbins(sc,'ResStatus')

Для 'CustAge' и предикторов 'ResStatus', там пропускает данные (NaNs и <undefined>) в данных тренировки, и процесс раскладывания оценивает значение WOE -0.15787 и 0.026469 соответственно для недостающих данных в этих предикторах, как показано выше.

Используйте fitmodel, чтобы соответствовать модели логистической регрессии использование данных о Весе доказательства (WOE). fitmodel внутренне преобразовывает все переменные прогноза в значения WOE, с помощью интервалов, найденных с автоматическим процессом раскладывания. fitmodel затем соответствует модели логистической регрессии использование пошагового метода (по умолчанию). Для предикторов, которые имеют недостающие данные, существует явный интервал <missing> с соответствующим значением WOE, вычисленным из данных. При использовании fitmodel соответствующее значение WOE для <недостающего> интервала применяется при выполнении преобразования WOE.

[sc,mdl] = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1442.8477, Chi2Stat = 4.4974731, PValue = 0.033944979
6. Adding ResStatus, Deviance = 1438.9783, Chi2Stat = 3.86941, PValue = 0.049173805
7. Adding OtherCC, Deviance = 1434.9751, Chi2Stat = 4.0031966, PValue = 0.045414057

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70229     0.063959     10.98    4.7498e-28
    CustAge        0.57421      0.25708    2.2335      0.025513
    ResStatus       1.3629      0.66952    2.0356       0.04179
    EmpStatus      0.88373       0.2929    3.0172      0.002551
    CustIncome     0.73535       0.2159     3.406    0.00065929
    TmWBank         1.1065      0.23267    4.7556    1.9783e-06
    OtherCC         1.0648      0.52826    2.0156      0.043841
    AMBalance       1.0446      0.32197    3.2443     0.0011775


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 88.5, p-value = 2.55e-16

Отобразите немасштабированные точки для предикторов, сохраненных в подходящей модели (чтобы масштабироваться, точки используют formatpoints).

PointsInfo = displaypoints(sc)
PointsInfo=33×3 table
     Predictors          Bin           Points  
    ____________    ______________    _________

    'CustAge'       '[-Inf,33)'        -0.14173
    'CustAge'       '[33,37)'          -0.11095
    'CustAge'       '[37,40)'         -0.059244
    'CustAge'       '[40,46)'          0.074167
    'CustAge'       '[46,48)'            0.1889
    'CustAge'       '[48,51)'           0.20204
    'CustAge'       '[51,58)'           0.22935
    'CustAge'       '[58,Inf]'          0.45019
    'CustAge'       '<missing>'       0.0096749
    'ResStatus'     'Tenant'          -0.029778
    'ResStatus'     'Home Owner'        0.12425
    'ResStatus'     'Other'             0.36796
    'ResStatus'     '<missing>'          0.1364
    'EmpStatus'     'Unknown'         -0.075948
    'EmpStatus'     'Employed'          0.31401
    'CustIncome'    '[-Inf,29000)'     -0.48396
      ⋮

Заметьте, что точки для интервала <missing> для CustAge и ResStatus явным образом показывают. Эти точки вычисляются из значения WOE для <недостающего> интервала и логистических коэффициентов модели.

Для предикторов, которые не имеют никаких недостающих данных в наборе обучающих данных, нет никакого явного интервала <missing>, и по умолчанию точки установлены в NaN для недостающих данных, и они приводят к счету NaN при выполнении score. Для предикторов, которые не имеют никакого явного интервала <missing>, используйте аргумент 'Missing' значения имени в formatpoints, чтобы указать, как недостающие данные нужно лечить от выигрыша целей.

Этот пример показывает, как использовать formatpoints после того, как модель адаптирована, чтобы отформатировать масштабируемые точки, и затем использовать displaypoints, чтобы отобразить масштабированные точки на интервал, для данного предиктора в модели creditscorecard.

Точки становятся масштабированными, когда область значений задана. А именно, линейное преобразование от немасштабированного до масштабированных точек необходимо. Это преобразование задано или путем предоставления сдвига и наклона или путем определения худших и лучших возможных очков. (Для получения дополнительной информации смотрите formatpoints.)

Создайте объект creditscorecard с помощью файла CreditCardData.mat, чтобы загрузить data (использующий набор данных от Refaat 2011). Используйте аргумент 'IDVar' в функции creditscorecard, чтобы указать, что 'CustID' содержит информацию о ID и не должен быть включен как переменная прогноза.

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое раскладывание к интервалу для всех предикторов.

sc = autobinning(sc);

Соответствуйте модели линейной регрессии, использующей параметры по умолчанию.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Используйте функцию formatpoints, чтобы масштабировать обеспечение 'Worst' и значений счета 'Best'. Спектр, предоставленный ниже, является общей областью значений счета.

sc = formatpoints(sc,'WorstAndBestScores',[300 850]);

Отобразите информацию о точках снова, чтобы проверить, что точки теперь масштабируются и также отображают масштабированные минимальные и максимальные очки.

[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=30×3 table
     Predictors           Bin          Points
    ____________    _______________    ______

    'CustAge'       '[-Inf,33)'        46.396
    'CustAge'       '[33,37)'          48.727
    'CustAge'       '[37,40)'          58.772
    'CustAge'       '[40,46)'          72.167
    'CustAge'       '[46,48)'          93.256
    'CustAge'       '[48,58)'          95.256
    'CustAge'       '[58,Inf]'         126.46
    'ResStatus'     'Tenant'           62.421
    'ResStatus'     'Home Owner'       82.276
    'ResStatus'     'Other'            113.58
    'EmpStatus'     'Unknown'          56.765
    'EmpStatus'     'Employed'         105.81
    'CustIncome'    '[-Inf,29000)'     8.9706
    'CustIncome'    '[29000,33000)'    53.208
    'CustIncome'    '[33000,35000)'     72.91
    'CustIncome'    '[35000,40000)'    76.585
      ⋮

MinScore = 300
MaxScore = 850.0000

Заметьте, что как ожидалось значения MinScore и MaxScore соответствуют худшим и самым лучшим очкам.

Этот пример показывает, как использовать displaypoints после того, как модель адаптирована, чтобы разделить базисные точки от остальной части точек, присвоенных каждой переменной прогноза. Аргументом пары "имя-значение" 'BasePoints' в функции formatpoints является булевская переменная, которая служит этой цели. По умолчанию базисные точки распространены через все переменные в протоколе результатов.

Создайте объект creditscorecard с помощью файла CreditCardData.mat, чтобы загрузить data (использующий набор данных от Refaat 2011). Используйте аргумент 'IDVar' в функции creditscorecard, чтобы указать, что 'CustID' содержит информацию о ID и не должен быть включен как переменная прогноза.

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое раскладывание к интервалу для всех предикторов.

sc = autobinning(sc);

Соответствуйте модели линейной регрессии, использующей параметры по умолчанию.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Используйте функцию formatpoints, чтобы разделить базисные точки путем обеспечения аргумента пары "имя-значение" 'BasePoints'.

sc = formatpoints(sc,'BasePoints',true);

Отобразите базисные точки, выделенные от других точек, для предикторов, сохраненных в подходящей модели.

PointsInfo = displaypoints(sc)
PointsInfo=31×3 table
     Predictors           Bin           Points  
    ____________    _______________    _________

    'BasePoints'    'BasePoints'         0.70239
    'CustAge'       '[-Inf,33)'         -0.25928
    'CustAge'       '[33,37)'           -0.24071
    'CustAge'       '[37,40)'           -0.16066
    'CustAge'       '[40,46)'          -0.053933
    'CustAge'       '[46,48)'            0.11411
    'CustAge'       '[48,58)'            0.13005
    'CustAge'       '[58,Inf]'           0.37866
    'ResStatus'     'Tenant'            -0.13159
    'ResStatus'     'Home Owner'        0.026616
    'ResStatus'     'Other'              0.27607
    'EmpStatus'     'Unknown'           -0.17666
    'EmpStatus'     'Employed'           0.21415
    'CustIncome'    '[-Inf,29000)'       -0.5575
    'CustIncome'    '[29000,33000)'       -0.205
    'CustIncome'    '[33000,35000)'    -0.048013
      ⋮

Этот пример показывает, как использовать displaypoints после того, как модель адаптирована, и функция modifybins используется, чтобы обеспечить пользовательские метки интервала для числового предиктора.

Создайте объект creditscorecard с помощью файла CreditCardData.mat, чтобы загрузить data (использующий набор данных от Refaat 2011). Используйте аргумент 'IDVar' в функции creditscorecard, чтобы указать, что 'CustID' содержит информацию о ID и не должен быть включен как переменная прогноза.

load CreditCardData 
sc = creditscorecard(data,'IDVar','CustID');

Выполните автоматическое раскладывание к интервалу для всех предикторов.

sc = autobinning(sc);

Соответствуйте модели линейной регрессии, использующей параметры по умолчанию.

sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Используйте функцию displaypoints, чтобы отобразить информацию о точке.

[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=30×3 table
     Predictors           Bin           Points  
    ____________    _______________    _________

    'CustAge'       '[-Inf,33)'         -0.15894
    'CustAge'       '[33,37)'           -0.14036
    'CustAge'       '[37,40)'          -0.060323
    'CustAge'       '[40,46)'           0.046408
    'CustAge'       '[46,48)'            0.21445
    'CustAge'       '[48,58)'            0.23039
    'CustAge'       '[58,Inf]'             0.479
    'ResStatus'     'Tenant'           -0.031252
    'ResStatus'     'Home Owner'         0.12696
    'ResStatus'     'Other'              0.37641
    'EmpStatus'     'Unknown'          -0.076317
    'EmpStatus'     'Employed'           0.31449
    'CustIncome'    '[-Inf,29000)'      -0.45716
    'CustIncome'    '[29000,33000)'     -0.10466
    'CustIncome'    '[33000,35000)'     0.052329
    'CustIncome'    '[35000,40000)'     0.081611
      ⋮

MinScore = -1.3100
MaxScore = 3.0726

Используйте функцию modifybins, чтобы задать пользовательские метки интервала для 'CustAge' так, чтобы области значений интервала были описаны на естественном языке.

labels = {'Up to 32','33 to 36','37 to 39','40 to 45','46 to 47','48 to 57','At least 58'};
sc = modifybins(sc,'CustAge','BinLabels',labels);

Повторно выполните displaypoints, чтобы проверить обновленные метки интервала.

[PointsInfo,MinScore,MaxScore] = displaypoints(sc)
PointsInfo=30×3 table
     Predictors           Bin           Points  
    ____________    _______________    _________

    'CustAge'       'Up to 32'          -0.15894
    'CustAge'       '33 to 36'          -0.14036
    'CustAge'       '37 to 39'         -0.060323
    'CustAge'       '40 to 45'          0.046408
    'CustAge'       '46 to 47'           0.21445
    'CustAge'       '48 to 57'           0.23039
    'CustAge'       'At least 58'          0.479
    'ResStatus'     'Tenant'           -0.031252
    'ResStatus'     'Home Owner'         0.12696
    'ResStatus'     'Other'              0.37641
    'EmpStatus'     'Unknown'          -0.076317
    'EmpStatus'     'Employed'           0.31449
    'CustIncome'    '[-Inf,29000)'      -0.45716
    'CustIncome'    '[29000,33000)'     -0.10466
    'CustIncome'    '[33000,35000)'     0.052329
    'CustIncome'    '[35000,40000)'     0.081611
      ⋮

MinScore = -1.3100
MaxScore = 3.0726

Этот пример показывает, как использовать протокол результатов кредита, чтобы вычислить веса предикторов. Веса предикторов определяются из области значений точек каждого предиктора, разделенного на общую область значений точек для протокола результатов. Точки для протокола результатов не только учитывают беты, но также и неявно раскладывание значений предиктора и соответствующие веса доказательства.

Создайте протокол результатов.

load CreditCardData.mat
sc = creditscorecard(data,'IDVar','CustID');
sc = autobinning(sc);
sc = fitmodel(sc);
1. Adding CustIncome, Deviance = 1490.8527, Chi2Stat = 32.588614, PValue = 1.1387992e-08
2. Adding TmWBank, Deviance = 1467.1415, Chi2Stat = 23.711203, PValue = 1.1192909e-06
3. Adding AMBalance, Deviance = 1455.5715, Chi2Stat = 11.569967, PValue = 0.00067025601
4. Adding EmpStatus, Deviance = 1447.3451, Chi2Stat = 8.2264038, PValue = 0.0041285257
5. Adding CustAge, Deviance = 1441.994, Chi2Stat = 5.3511754, PValue = 0.020708306
6. Adding ResStatus, Deviance = 1437.8756, Chi2Stat = 4.118404, PValue = 0.042419078
7. Adding OtherCC, Deviance = 1433.707, Chi2Stat = 4.1686018, PValue = 0.041179769

Generalized linear regression model:
    status ~ [Linear formula with 8 terms in 7 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70239     0.064001    10.975    5.0538e-28
    CustAge        0.60833      0.24932      2.44      0.014687
    ResStatus        1.377      0.65272    2.1097      0.034888
    EmpStatus      0.88565        0.293    3.0227     0.0025055
    CustIncome     0.70164      0.21844    3.2121     0.0013179
    TmWBank         1.1074      0.23271    4.7589    1.9464e-06
    OtherCC         1.0883      0.52912    2.0569      0.039696
    AMBalance        1.045      0.32214    3.2439     0.0011792


1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.4e-16

Вычислите точки протокола результатов и очки MaxPts и MinPts.

sc = formatpoints(sc,'PointsOddsAndPDO',[500 2 50]);
[PointsTable,MinPts,MaxPts] = displaypoints(sc);
PtsRange = MaxPts-MinPts;
disp(PointsTable(1:10,:)); 
    Predictors         Bin         Points
    ___________    ____________    ______

    'CustAge'      '[-Inf,33)'     52.821
    'CustAge'      '[33,37)'       54.161
    'CustAge'      '[37,40)'       59.934
    'CustAge'      '[40,46)'       67.633
    'CustAge'      '[46,48)'       79.755
    'CustAge'      '[48,58)'       80.905
    'CustAge'      '[58,Inf]'      98.838
    'ResStatus'    'Tenant'        62.031
    'ResStatus'    'Home Owner'    73.444
    'ResStatus'    'Other'         91.438
 fprintf('Min points: %g, Max points: %g\n',MinPts,MaxPts); 
Min points: 355.505, Max points: 671.64

Вычислите веса предиктора.

Predictor = unique(PointsTable.Predictors,'stable');
NumPred = length(Predictor);
Weight = zeros(NumPred,1);
for ii=1:NumPred
   Ind = cellfun(@(x)strcmpi(Predictor{ii},x),PointsTable.Predictors);
   MaxPtsPred = max(PointsTable.Points(Ind));
   MinPtsPred = min(PointsTable.Points(Ind));
   Weight(ii) = 100*(MaxPtsPred-MinPtsPred)/PtsRange;
end

PredictorWeights = table(Predictor,Weight);
PredictorWeights(end+1,:) = PredictorWeights(end,:);
PredictorWeights.Predictor{end} = 'Total';
PredictorWeights.Weight(end) = sum(Weight);
disp(PredictorWeights)
     Predictor      Weight
    ____________    ______

    'CustAge'       14.556
    'ResStatus'      9.302
    'EmpStatus'     8.9174
    'CustIncome'    20.401
    'TmWBank'       25.884
    'OtherCC'       7.9885
    'AMBalance'     12.951
    'Total'            100

Веса заданы как область значений точек для предиктора, разделенного на область значений точек для протокола результатов.

Чтобы создать объект creditscorecard с помощью файла CreditCardData.mat, загрузите data (использующий набор данных от Refaat 2011). Используя набор данных dataMissing, набор индикатор 'BinMissingData' to true.

load CreditCardData.mat 
sc = creditscorecard(dataMissing,'BinMissingData',true); 

Используйте autobinning с объектом creditscorecard.

sc = autobinning(sc);

Карта раскладывания или правила для категориальных данных получены в итоге в "таблице" группировки категории, возвращенной как дополнительный вывод. По умолчанию каждая категория помещается в отдельный интервал. Вот является информация для предиктора ResStatus.

[bi,cg] = bininfo(sc,'ResStatus')
bi=5×6 table
        Bin         Good    Bad     Odds        WOE       InfoValue 
    ____________    ____    ___    ______    _________    __________

    'Tenant'        296     161    1.8385    -0.095463     0.0035249
    'Home Owner'    352     171    2.0585     0.017549    0.00013382
    'Other'         128      52    2.4615      0.19637     0.0055808
    '<missing>'      27      13    2.0769     0.026469    2.3248e-05
    'Totals'        803     397    2.0227          NaN     0.0092627

cg=3×2 table
      Category      BinNumber
    ____________    _________

    'Tenant'            1    
    'Home Owner'        2    
    'Other'             3    

К категориям группы 'Tenant' и 'Other', измените таблицу cg группировки категории, таким образом, номер интервала для 'Other' совпадает с номером интервала для 'Tenant'. Затем используйте modifybins, чтобы обновить объект creditscorecard.

cg.BinNumber(3) = 2; 
sc = modifybins(sc,'ResStatus','Catg',cg); 

Отобразите обновленную информацию об интервале с помощью bininfo. Обратите внимание на то, что метки интервала были обновлены и что информация о членстве в интервале содержится в категории, группирующей cg.

[bi,cg] = bininfo(sc,'ResStatus')
bi=4×6 table
        Bin        Good    Bad     Odds        WOE       InfoValue 
    ___________    ____    ___    ______    _________    __________

    'Group1'       296     161    1.8385    -0.095463     0.0035249
    'Group2'       480     223    2.1525     0.062196     0.0022419
    '<missing>'     27      13    2.0769     0.026469    2.3248e-05
    'Totals'       803     397    2.0227          NaN       0.00579

cg=3×2 table
      Category      BinNumber
    ____________    _________

    'Tenant'            1    
    'Home Owner'        2    
    'Other'             2    

Используйте formatpoints с аргументом пары "имя-значение" 'Missing', чтобы указать, что недостающими данными является присвоенный 'maxpoints'.

sc = formatpoints(sc,'BasePoints',true,'Missing','maxpoints','WorstAndBest',[300 800]); 

Используйте fitmodel, чтобы соответствовать модели.

sc = fitmodel(sc,'VariableSelection','fullmodel','Display','Off'); 

Затем используйте displaypoints с объектом creditscorecard возвратить таблицу точек для всех интервалов всех переменных прогноза, используемых в объекте compactCreditScorecard. Путем установки аргумента пары "имя-значение" displaypoints для 'ShowCategoricalMembers' к true отображены все участники, содержавшиеся в каждой отдельной группе.

[PointsInfo,MinScore,MaxScore] = displaypoints(sc,'ShowCategoricalMembers',true)
PointsInfo=43×3 table
     Predictors          Bin         Points 
    _____________    ____________    _______

    'BasePoints'     'BasePoints'     535.25
    'CustID'         '[-Inf,121)'     12.085
    'CustID'         '[121,241)'      5.4738
    'CustID'         '[241,1081)'    -1.4061
    'CustID'         '[1081,Inf]'    -7.2217
    'CustAge'        '[-Inf,33)'     -25.973
    'CustAge'        '[33,37)'        -22.67
    'CustAge'        '[37,40)'       -17.122
    'CustAge'        '[40,46)'       -2.8071
    'CustAge'        '[46,48)'        9.5034
    'CustAge'        '[48,51)'        10.913
    'CustAge'        '[51,58)'        13.844
    'CustAge'        '[58,Inf]'       37.541
    'CustAge'        '<missing>'     -9.7271
    'TmAtAddress'    '[-Inf,23)'     -9.3683
    'TmAtAddress'    '[23,83)'        2.4156
      ⋮

MinScore = 300.0000
MaxScore = 800.0000

Входные параметры

свернуть все

Модель протокола результатов кредита, заданная как объект creditscorecard. Используйте creditscorecard, чтобы создать объект creditscorecard.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: [PointsInfo,MinScore,MaxScore] = displaypoints(sc,‘ShowCategoricalMembers’,true)

Индикатор для того, как отобразить метки интервалов категорий, которые группировались, задал как пара, разделенная запятой, состоящая из 'ShowCategoricalMembers' и логического скаляра со значением true или false.

По умолчанию, когда 'ShowCategoricalMembers' является false, метки интервала отображены как Group1, Group2, …, Group n, или если метки интервала были изменены в creditscorecard, то пользовательские имена метки интервала отображены.

Если 'ShowCategoricalMembers' является true, все участники, содержавшиеся в каждой отдельной группе, отображены.

Типы данных: логический

Выходные аргументы

свернуть все

Одна строка на интервал, на предиктор, с соответствующими точками, возвратилась как таблица. Например:

ПредикторыИнтервал'points'
Predictor_1Bin_11Points_11
 ......
Predictor_2Bin_21Points_21
 ......
Predictor_jBin_jiPoints_ji
 ......

Когда о базисных точках сообщают отдельно (см. formatpoints), первая строка возвращенной таблицы PointsInfo содержит базисные точки.

Минимальный возможный общий счет, возвращенный как скаляр.

Примечание

Минимальный счет является самым низким общим счетом в математическом смысле, независимо от того, означает ли низкий балл высокий риск или низкий риск.

Максимальный возможный общий счет, возвращенный как скаляр.

Примечание

Максимальный счет является максимально возможным общим счетом в математическом смысле, независимо от того, означает ли высокий счет высокий риск или низкий риск.

Алгоритмы

Точками для предиктора j и интервал i, по умолчанию, дают

Points_ji = (Shift + Slope*b0)/p + Slope*(bj*WOEj(i))
где bj является коэффициентом модели предиктора j, p является количеством предикторов в модели, и WOEj (i) является значением Веса доказательства (WOE) для i-th интервал, соответствующий j-th образцовому предиктору. Shift и Slope масштабируют константы.

Когда о базисных точках сообщают отдельно (см. аргумент пары "имя-значение" formatpoints BasePoints), базисными точками дают

Base Points = Shift + Slope*b0,
и точки для j-th предиктор, i-th строка дают
Points_ji = Slope*(bj*WOEj(i))).

По умолчанию о базисных точках не сообщают отдельно.

Минимальные и максимальные очки:

MinScore = Shift + Slope*b0 + min(Slope*b1*WOE1) + ... +min(Slope*bp*WOEp)),
MaxScore = Shift + Slope*b0 + max(Slope*b1*WOE1) + ... +max(Slope*bp*WOEp)).

Используйте formatpoints, чтобы управлять способом, которым точки масштабируются, округляются, и сообщают ли о базисных точках отдельно. Смотрите formatpoints для получения дополнительной информации о параметрах формата и для деталей и формул на этих параметрах форматирования.

Ссылки

[1] Андерсон, R. Инструментарий рейтинга кредитоспособности. Издательство Оксфордского университета, 2007.

[2] Refaat, M. Протоколы результатов кредитного риска: разработка и реализация Используя SAS. lulu.com, 2011.

Введенный в R2014b