fitmodel

Подбор логистической регрессионной модели к данным о весе доказательств (WOE)

Описание

пример

sc = fitmodel(sc) подбирает логистическую регрессионую модель к данным о весе доказательств (WOE) и хранит имена предикторов модели и соответствующие коэффициенты в creditscorecard объект.

fitmodel внутренне преобразует все переменные предиктора в значения WOE, используя интервалы, найденные в процессе автоматического или ручного раскладывания. Переменная отклика сопоставлена так, что «Good» 1, и «Плохо» 0. Это подразумевает, что более высокие (не масштабированные) счета соответствуют лучшим (менее рискованным) индивидуумам (меньшая вероятность дефолта).

Также можно использовать setmodel предоставить имена предикторов, которые вы хотите в логистической регрессионой модели, наряду с их соответствующими коэффициентами.

пример

[sc,mdl] = fitmodel(sc) подбирает логистическую регрессионую модель к данным о весе доказательств (WOE) и хранит имена предикторов модели и соответствующие коэффициенты в creditscorecard объект. fitmodel возвращает обновленный creditscorecard объект и GeneralizedLinearModel объект, содержащий подобранную модель.

fitmodel внутренне преобразует все переменные предиктора в значения WOE, используя интервалы, найденные в процессе автоматического или ручного раскладывания. Переменная отклика сопоставлена так, что «Good» 1, и «Плохо» 0. Это подразумевает, что более высокие (не масштабированные) счета соответствуют лучшим (менее рискованным) индивидуумам (меньшая вероятность дефолта).

Также можно использовать setmodel предоставить имена предикторов, которые вы хотите в логистической регрессионой модели, наряду с их соответствующими коэффициентами.

пример

[sc,mdl] = fitmodel(___,Name,Value) подбирает логистическую регрессионую модель к данным о весе доказательств (WOE) с помощью необязательных аргументов пары "имя-значение" и хранит имена предикторов модели и соответствующие коэффициенты в creditscorecard объект. Используя аргументы пары "имя-значение", можно выбрать, какая Обобщенная Линейная Модель будет соответствовать данным. fitmodel возвращает обновленный creditscorecard объект и GeneralizedLinearModel объект, содержащий подобранную модель.

Примеры

свернуть все

Создайте creditscorecard объект с использованием CreditCardData.mat файл для загрузки data (использование набора данных из Refaat 2011).

load CreditCardData
sc = creditscorecard(data,'IDVar','CustID')
sc = 
  creditscorecard with properties:

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

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

sc = autobinning(sc)
sc = 
  creditscorecard with properties:

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

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

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

Используйте CreditCardData.mat файл для загрузки данных (dataWeights), который содержит столбец (RowWeights) для весов (использование набора данных из Refaat 2011).

load CreditCardData

Создайте creditscorecard объект, используя необязательный аргумент пары "имя-значение" для 'WeightsVar'.

sc = creditscorecard(dataWeights,'IDVar','CustID','WeightsVar','RowWeights')
sc = 
  creditscorecard with properties:

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

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

sc = autobinning(sc)
sc = 
  creditscorecard with properties:

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

Использование fitmodel для подбора логистической регрессионной модели с использованием данных о весе доказательств (WOE). fitmodel внутренне преобразует все переменные предиктора в значения WOE, используя интервалы, найденные в процессе автоматического раскладывания. fitmodel затем подходит для логистической регрессионной модели с помощью пошагового метода (по умолчанию). Когда необязательный аргумент пары "имя-значение" 'WeightsVar' используется для задания весов наблюдений (выборки), mdl выход использует взвешенные счетчики с stepwiseglm и fitglm.

[sc,mdl] = fitmodel(sc);
1. Adding CustIncome, Deviance = 764.3187, Chi2Stat = 15.81927, PValue = 6.968927e-05
2. Adding TmWBank, Deviance = 751.0215, Chi2Stat = 13.29726, PValue = 0.0002657942
3. Adding AMBalance, Deviance = 743.7581, Chi2Stat = 7.263384, PValue = 0.007037455

Generalized linear regression model:
    logit(status) ~ 1 + CustIncome + TmWBank + AMBalance
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    0.70642     0.088702     7.964    1.6653e-15
    CustIncome      1.0268      0.25758    3.9862    6.7132e-05
    TmWBank         1.0973      0.31294    3.5063     0.0004543
    AMBalance       1.0039      0.37576    2.6717     0.0075464


1200 observations, 1196 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 36.4, p-value = 6.22e-08

Создайте creditscorecard объект с использованием CreditCardData.mat файл для загрузки data (использование набора данных из Refaat 2011).

load CreditCardData
sc = creditscorecard(data,'IDVar','CustID')
sc = 
  creditscorecard with properties:

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

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

sc = autobinning(sc,'Algorithm','EqualFrequency')
sc = 
  creditscorecard with properties:

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

Использование fitmodel для подбора логистической регрессионной модели с использованием данных о весе доказательств (WOE). fitmodel внутренне преобразует все переменные предиктора в значения WOE, используя интервалы, найденные в процессе автоматического раскладывания. Установите VariableSelection аргумент пары "имя-значение" в FullModel чтобы указать, что все предикторы должны быть включены в подобранную модель логистической регрессии.

sc = fitmodel(sc,'VariableSelection','FullModel');
Generalized linear regression model:
    status ~ [Linear formula with 10 terms in 9 predictors]
    Distribution = Binomial

Estimated Coefficients:
                   Estimate       SE        tStat      pValue  
                   ________    ________    _______    _________

    (Intercept)    0.70262     0.063862     11.002    3.734e-28
    CustAge        0.57683      0.27064     2.1313     0.033062
    TmAtAddress     1.0653      0.55233     1.9287     0.053762
    ResStatus       1.4189      0.65162     2.1775     0.029441
    EmpStatus      0.89916      0.29217     3.0776     0.002087
    CustIncome     0.77506      0.21942     3.5323    0.0004119
    TmWBank         1.0826      0.26583     4.0727    4.648e-05
    OtherCC         1.1354      0.52827     2.1493     0.031612
    AMBalance      0.99315      0.32642     3.0425    0.0023459
    UtilRate       0.16723      0.55745    0.29999      0.76419


1200 observations, 1190 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 85.6, p-value = 1.25e-14

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

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: {1×11 cell}
        NumericPredictors: {'CustAge'  'TmAtAddress'  'CustIncome'  'TmWBank'  'AMBalance'  'UtilRate'}
    CategoricalPredictors: {'ResStatus'  'EmpStatus'  'OtherCC'}
           BinMissingData: 1
                    IDVar: 'CustID'
            PredictorVars: {1×9 cell}
                     Data: [1200×11 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')

Использование fitmodel для подбора логистической регрессионной модели с использованием данных о весе доказательств (WOE). fitmodel внутренне преобразует все переменные предиктора в значения WOE, используя интервалы, найденные в процессе автоматического раскладывания. fitmodel затем подходит для логистической регрессионной модели с помощью пошагового метода (по умолчанию). Для предикторов, которые имеют отсутствующие данные, существует явное <missing> интервал с соответствующим значением WOE, вычисленным из данных. При использовании fitmodelсоответствующее значение ГОРЕ для < отсутствующего > интервала применяется при выполнении преобразования ГОРЕ. Например, отсутствующее значение для возраста клиента (CustAge) заменяется на -0.15787 которое является значением ГОРЕ для <missing> интервал для CustAge предиктор. Однако, когда 'BinMissingData' false, отсутствующее значение для CustAge остатки как отсутствующие (NaN) при применении преобразования ГОРЕ.

[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:
    logit(status) ~ 1 + CustAge + ResStatus + EmpStatus + CustIncome + TmWBank + OtherCC + AMBalance
    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

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

свернуть все

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

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: [sc,mdl] = fitmodel(sc,'VariableSelection','FullModel')

Переменные предиктора для подбора кривой creditscorecard объект, заданный как разделенная разделенными запятой парами, состоящая из 'PredictorVars' и массив ячеек из векторов символов. Когда предусмотрено, creditscorecard свойство объекта PredictorsVars обновляется. Обратите внимание, что порядок предикторов в исходном наборе данных принудителен, независимо от порядка, в котором 'PredictorVars' предоставляется. Когда это не предусмотрено, предикторы использовали для создания creditscorecard объект (при помощи creditscorecard) используются.

Типы данных: cell

Метод выбора переменных для соответствия логистической регрессионой модели, заданный как разделенная разделенными запятой парами, состоящая из 'VariableSelection' и вектор символов со значениями 'Stepwise' или 'FullModel':

  • Stepwise - Использует пошаговый метод выбора, который вызывает функцию Statistics and Machine Learning Toolbox™ stepwiseglm. Только переменные в PredictorVars потенциально может стать частью модели и использует StartingModel аргумент пары "имя-значение" для выбора стартовой модели.

  • FullModel - Подходит для модели со всеми переменными предиктора в PredictorVars Аргумент пары "имя-значение" и звонки fitglm.

Примечание

Только переменные в PredictorVars свойство creditscorecard объект может потенциально стать частью логистической регрессионой модели и только линейные условия включены в эту модель без взаимодействий или любых других членов более высокого порядка.

Переменная отклика сопоставлена так, что «Good» 1 а «Плохой» 0.

Типы данных: char

Начальная модель для Stepwise метод выбора переменной, заданный как разделенная разделенными запятой парами, состоящая из 'StartingModel' и вектор символов со значениями 'Constant' или 'Linear'. Эта опция определяет начальную модель (постоянную или линейную), которую функция Statistics and Machine Learning Toolbox stepwiseglm начинается с.

  • Constant - Запускает пошаговый метод с пустой (только для константы) моделью.

  • Linear - Запускает пошаговый метод из полной (все предикторы в) модели.

Примечание

StartingModel используется только для Stepwise опция VariableSelection и не имеет эффекта для FullModel опция VariableSelection.

Типы данных: char

Индикатор для отображения информации о модели в командной строке, заданный как разделенная разделенными запятой парами, состоящая из 'Display' и вектор символов со значением 'On' или 'Off'.

Типы данных: char

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

свернуть все

Модель карты показателей кредита, возвращенная как обновленная creditscorecard объект. The creditscorecard объект содержит информацию о предикторах модели и коэффициентах, используемых для соответствия данным WOE. Для получения дополнительной информации об использовании creditscorecard объект, см. creditscorecard.

Подобранная логистическая модель, переделанная как объект типа GeneralizedLinearModel содержащая подобранную модель. Для получения дополнительной информации о GeneralizedLinearModel объект, см. GeneralizedLinearModel.

Примечание

При создании creditscorecard объект с creditscorecard, если необязательный аргумент пары "имя-значение" WeightsVar использовался для определения весов наблюдений (выборки), затем mdl использует взвешенные счетчики с stepwiseglm и fitglm.

Подробнее о

свернуть все

Использование fitmodel с весами

Когда веса наблюдений указаны в карте показателей кредита dataвеса используются для калибровки коэффициентов модели.

Базовая функциональность Statistics and Machine Learning Toolbox для stepwiseglm и fitglm поддерживает веса наблюдений. Веса также влияют на логистическую модель через значения ГОРЕ. Преобразование ГОРЕ применяется ко всем предикторам перед подгонкой логистической модели. Веса наблюдений непосредственно влияют на значения ГОРЕ. Для получения дополнительной информации смотрите Использование bininfo с весами и Моделирование кредитной карты показателей с использованием весов наблюдений.

Поэтому точки кредитной карты результатов и итоговый счет зависят от весов наблюдений как через коэффициенты логистической модели, так и от значений ГОРЕ.

Модели

Логистическая регрессионая модель используется в creditscorecard объект.

Для модели вероятность быть «Плохой» определяется как: ProbBad = exp(-s) / (1 + exp(-s)).

Ссылки

[1] Anderson, R. The Credit Scoring Toolkit. Oxford University Press, 2007.

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

Введенный в R2014b