bininfo

Возвратите информацию об интервале предиктора

Описание

пример

bi = bininfo(sc,PredictorName) возвращает информацию на уровне интервала, таком как частоты “Хороших”, “Плохо”, и статистика интервала для предиктора, заданного в PredictorName.

пример

bi = bininfo(___,Name,Value) добавляют дополнительные аргументы значения имени.

пример

[bi,bm] = bininfo(sc,PredictorName,Name,Value) добавляют дополнительные аргументы значения имени. bininfo также опционально возвращает карту раскладывания (bm) или интервал управляет в форме вектора точек разделения для числовых предикторов или таблицы группировок категории для категориальных предикторов.

пример

[bi,bm,mv] = bininfo(sc,PredictorName,Name,Value) возвращает информацию на уровне интервала, таком как частоты “Хороших”, “Плохо", и статистика интервала для предиктора, заданного в PredictorName использование дополнительных аргументов пары "имя-значение". bininfo опционально возвращает карту раскладывания или правила интервала в форме вектора точек разделения для числовых предикторов или таблицу группировок категории для категориальных предикторов. Кроме того, дополнительные аргументы пары "имя-значение" mv возвращает числовой массив, содержащий минимальные и максимальные значения, как установлено (или заданный) пользователем. mv выходной аргумент установлен в пустой массив для категориальных предикторов.

Примеры

свернуть все

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

load CreditCardData 
sc = creditscorecard(data);

Отобразите информацию об интервале для категориального предиктора ResStatus.

bi = bininfo(sc,'ResStatus')
bi=4×6 table
         Bin          Good    Bad     Odds        WOE       InfoValue
    ______________    ____    ___    ______    _________    _________

    {'Home Owner'}    365     177    2.0621     0.019329    0.0001682
    {'Tenant'    }    307     167    1.8383    -0.095564    0.0036638
    {'Other'     }    131      53    2.4717      0.20049    0.0059418
    {'Totals'    }    803     397    2.0227          NaN    0.0097738

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

load CreditCardData

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

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

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

Отобразите информацию об интервале для числового предиктора 'CustIncome'. Когда дополнительный аргумент пары "имя-значение" 'WeightsVar' используется, чтобы задать наблюдение (выборка) веса, bi таблица содержит взвешенные количества.

bi = bininfo(sc,'CustIncome');
bi(1:10,:)
ans=10×6 table
       Bin        Good        Bad       Odds        WOE       InfoValue 
    _________    _______    _______    _______    ________    __________

    {'18000'}    0.94515      1.496    0.63179     -1.1667     0.0059198
    {'19000'}    0.47588    0.80569    0.59065     -1.2341     0.0034716
    {'20000'}     2.1671     1.4636     1.4806    -0.31509    0.00061392
    {'21000'}     3.2522    0.88064      3.693     0.59889     0.0021303
    {'22000'}     1.5438     1.2714     1.2142    -0.51346     0.0012913
    {'23000'}      1.787     2.7529    0.64913     -1.1397      0.010509
    {'24000'}     3.4111     2.2538     1.5135    -0.29311    0.00082663
    {'25000'}     2.2333     6.1383    0.36383     -1.7186      0.042642
    {'26000'}     2.1246     4.4754    0.47474     -1.4525      0.024526
    {'27000'}     3.1058      3.528    0.88032    -0.83501     0.0082144

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

load CreditCardData 
sc = creditscorecard(data);

Отобразите настроенную информацию об интервале для категориального предиктора ResStatus, хранение только WOE столбец. Вес доказательства (WOE) является заданным интервалом интервалом, но нет никакой концепции "общего WOE", поэтому последний элемент в 'Totals' строка установлена в NaN.

bi = bininfo(sc,'ResStatus','Statistics','WOE');
disp(bi)
         Bin          Good    Bad       WOE   
    ______________    ____    ___    _________

    {'Home Owner'}    365     177     0.019329
    {'Tenant'    }    307     167    -0.095564
    {'Other'     }    131      53      0.20049
    {'Totals'    }    803     397          NaN

Отобразите настроенную информацию об интервале для категориального предиктора ResStatus, хранение только Odds и WOE столбцы, без Totals строка.

bi = bininfo(sc,'ResStatus','Statistics',{'Odds','WOE'},'Totals','Off');
disp(bi)
         Bin          Good    Bad     Odds        WOE   
    ______________    ____    ___    ______    _________

    {'Home Owner'}    365     177    2.0621     0.019329
    {'Tenant'    }    307     167    1.8383    -0.095564
    {'Other'     }    131      53    2.4717      0.20049

Отобразите информационное значение, энтропию, Gini и статистику хи-квадрата. Для получения дополнительной информации об этих статистических данных смотрите Статистику для Протокола результатов Кредита.

Для получения информации значение, энтропия и Gini, значение явилось в уровень интервала, вклад интервала к итоговому значению. Общее информационное значение, энтропия и меры Gini находятся в 'Totals' строка.

Для хи-квадрата, если существуют интервалы N, первые N-1 значения в 'Chi2' отчет столбца попарная статистика хи-квадрата для непрерывных интервалов. Например, эта попарная мера также используется 'Merge' алгоритм в autobinning определить, должны ли два непрерывных интервала быть объединены. В этом примере, первом значении в 'Chi2' столбец (1.0331) статистическая величина хи-квадрата интервалов 1 и 2 ('Home Owner' и 'Tenant'), и второе значение в столбце (2.5103) статистическая величина хи-квадрата интервалов 2 и 3 ('Tenant' и 'Other'). Нет более попарных значений хи-квадрата, чтобы вычислить в этом примере, таким образом, третий элемент 'Chi2' столбец установлен в NaN. О значении хи-квадрата сообщают в 'Totals' строка является статистической величиной хи-квадрата, вычисленной по всем интервалам.

bi = bininfo(sc,'ResStatus','Statistics',{'InfoValue','Entropy','Gini','Chi2'});
disp(bi)
         Bin          Good    Bad    InfoValue    Entropy     Gini       Chi2 
    ______________    ____    ___    _________    _______    _______    ______

    {'Home Owner'}    365     177    0.0001682    0.91138    0.43984    1.0331
    {'Tenant'    }    307     167    0.0036638    0.93612    0.45638    2.5103
    {'Other'     }    131      53    0.0059418    0.86618    0.41015       NaN
    {'Totals'    }    803     397    0.0097738    0.91422    0.44182    2.5549

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

load CreditCardData 
sc = creditscorecard(data);

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

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

    {'Home Owner'}    365     177    2.0621     0.019329    0.0001682
    {'Tenant'    }    307     167    1.8383    -0.095564    0.0036638
    {'Other'     }    131      53    2.4717      0.20049    0.0059418
    {'Totals'    }    803     397    2.0227          NaN    0.0097738

cg=3×2 table
       Category       BinNumber
    ______________    _________

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

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

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

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

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

    {'Group1'}    365     177    2.0621     0.019329     0.0001682
    {'Group2'}    438     220    1.9909    -0.015827    0.00013772
    {'Totals'}    803     397    2.0227          NaN    0.00030592

cg=3×2 table
       Category       BinNumber
    ______________    _________

    {'Home Owner'}        1    
    {'Tenant'    }        2    
    {'Other'     }        2    

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

load CreditCardData 
sc = creditscorecard(data);

Предиктор CustIncome isnumeric. По умолчанию каждое значение предиктора помещается в отдельный интервал.

bi = bininfo(sc,'CustIncome')
bi=46×6 table
       Bin       Good    Bad     Odds         WOE       InfoValue 
    _________    ____    ___    _______    _________    __________

    {'18000'}      2      3     0.66667      -1.1099     0.0056227
    {'19000'}      1      2         0.5      -1.3976     0.0053002
    {'20000'}      4      2           2    -0.011271    6.3641e-07
    {'21000'}      6      3           2    -0.011271    9.5462e-07
    {'22000'}      4      2           2    -0.011271    6.3641e-07
    {'23000'}      4      4           1     -0.70442     0.0035885
    {'24000'}      5      5           1     -0.70442     0.0044856
    {'25000'}      4      9     0.44444      -1.5153      0.026805
    {'26000'}      4     11     0.36364       -1.716      0.038999
    {'27000'}      6      6           1     -0.70442     0.0053827
    {'28000'}     13     11      1.1818     -0.53736     0.0061896
    {'29000'}     11     10         1.1     -0.60911     0.0069988
    {'30000'}     18     16       1.125     -0.58664      0.010493
    {'31000'}     24      8           3      0.39419     0.0038382
    {'32000'}     21     15         1.4     -0.36795     0.0042797
    {'33000'}     35     19      1.8421    -0.093509    0.00039951
      ⋮

Сократите количество интервалов с помощью autobinning функция (modifybins функция может также использоваться).

sc = autobinning(sc,'CustIncome');

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

[bi,cp] = bininfo(sc,'CustIncome')
bi=8×6 table
           Bin           Good    Bad     Odds         WOE       InfoValue 
    _________________    ____    ___    _______    _________    __________

    {'[-Inf,29000)' }     53      58    0.91379     -0.79457       0.06364
    {'[29000,33000)'}     74      49     1.5102     -0.29217     0.0091366
    {'[33000,35000)'}     68      36     1.8889     -0.06843    0.00041042
    {'[35000,40000)'}    193      98     1.9694    -0.026696    0.00017359
    {'[40000,42000)'}     68      34          2    -0.011271    1.0819e-05
    {'[42000,47000)'}    164      66     2.4848      0.20579     0.0078175
    {'[47000,Inf]'  }    183      56     3.2679      0.47972      0.041657
    {'Totals'       }    803     397     2.0227          NaN       0.12285

cp = 6×1

       29000
       33000
       35000
       40000
       42000
       47000

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

cp(2) = [];
sc = modifybins(sc,'CustIncome','CutPoints',cp,'MinValue',0);

Отобразите обновленную информацию об интервале.

[bi,cp,mv] = bininfo(sc,'CustIncome')
bi=7×6 table
           Bin           Good    Bad     Odds         WOE       InfoValue 
    _________________    ____    ___    _______    _________    __________

    {'[0,29000)'    }     53      58    0.91379     -0.79457       0.06364
    {'[29000,35000)'}    142      85     1.6706     -0.19124     0.0071274
    {'[35000,40000)'}    193      98     1.9694    -0.026696    0.00017359
    {'[40000,42000)'}     68      34          2    -0.011271    1.0819e-05
    {'[42000,47000)'}    164      66     2.4848      0.20579     0.0078175
    {'[47000,Inf]'  }    183      56     3.2679      0.47972      0.041657
    {'Totals'       }    803     397     2.0227          NaN       0.12043

cp = 5×1

       29000
       35000
       40000
       42000
       47000

mv = 1×2

     0   Inf

Отметьте, рекомендуется постараться не иметь интервалы с частотами нуля, потому что они приводят к бесконечному или неопределенному (NaN) статистика. Используйте modifybins или autobinning функции, чтобы изменить интервалы.

Создайте 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: {1x11 cell}
        NumericPredictors: {1x6 cell}
    CategoricalPredictors: {'ResStatus'  'EmpStatus'  'OtherCC'}
           BinMissingData: 1
                    IDVar: 'CustID'
            PredictorVars: {1x9 cell}
                     Data: [1200x11 table]

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

bi = 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
disp(cg)
       Category       BinNumber
    ______________    _________

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

Обратите внимание на то, что таблица группировки категории не включает <missing> потому что это - зарезервированный интервал, и пользователи не могут взаимодействовать непосредственно с <missing> интервал.

plotbins(sc,'ResStatus')

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

свернуть все

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

Имя предиктора, заданное использование вектора символов, содержащего имя предиктора. PredictorName является чувствительным к регистру.

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

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

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

Пример: bi = bininfo(sc, PredictorName,'Statistics','WOE','Totals','On')

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

  • 'Odds' — Информацией о разногласиях является отношение “Товаров” по “Bads”.

  • 'WOE' — Вес Доказательства. Статистическая величина WOE измеряет отклонение между распределением “Товаров” и “Bads”.

  • 'InfoValue' — Информационное значение. Тесно связанный к WOE, это - статистическая величина, используемая, чтобы определить, как сильный предиктор должен использовать в подходящей модели. Это измеряется, насколько сильный отклонение между распределениями “Товаров” и “Bads”. Однако интервалы только с “Хорошими” или только “Плохими” наблюдениями действительно приводят к бесконечному информационному Значению. Рассмотрите изменение интервалов в тех случаях при помощи modifybins или autobinning.

  • 'Entropy' — Энтропия является мерой непредсказуемости, содержавшейся в интервалах. Чем больше количество “Товаров” и “Bads” отличаются в интервалах, тем ниже энтропия.

  • 'Gini' — Мера статистической дисперсии или неравенства в рамках выборки данных.

  • 'Chi2' — Мера статистической разницы и независимости между группами.

Примечание

Постарайтесь не иметь интервалы с частотами нуля, потому что они приводят к бесконечному или неопределенному (NaN) статистика. Используйте modifybins или autobinning изменить интервалы.

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

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

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

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

свернуть все

Информация об интервале, возвращенная как таблица. Таблица информации об интервале содержит одну строку на интервал и строку общих количеств. Столбцы содержат описания интервала, частоты “Хороших” и “Плохих”, и статистика интервала. Постарайтесь не иметь интервалы с частотами нуля, потому что они приводят к бесконечному или неопределенному (NaN) статистика. Используйте modifybins или autobinning изменить интервалы.

Примечание

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

Карта раскладывания или правила, возвращенные как вектор точек разделения для числовых предикторов или таблица группировок категории для категориальных предикторов. Для получения дополнительной информации смотрите modifybins.

Раскладывание минимальные и максимальные значения (как установлено или задано пользователем), возвращенный как числовой массив. mv выходной аргумент установлен в пустой массив для категориальных предикторов.

Больше о

свернуть все

Статистика для протокола результатов кредита

Вес доказательства (WOE) является мерой различия распределения “Товаров” и “Bads” в интервале.

Предположим, что данные предиктора берут M возможные значения b1..., bM. Для сгруппированных данных M является небольшим числом. Ответ берет два значения, “Хорошие” и “Плохие”. Таблицей частот данных дают:

 ХорошийПлохоОбщее количество
b1:n11n12n1
b2:n21n22n2
bM:nM1nM2nM
Общее количество:nGoodnBadnTotal

Вес доказательства (WOE) задан для каждого значения данных bi как

 WOE(i) = log((ni1/nGood)/(ni2/nBad)).

Если вы задаете

 pGood(i) = ni1/nGood, pBad(i) = ni2/nBad

затем pGood(i) является пропорцией “Хороших” наблюдений, которые берут значение bi, и так же для pBadi. Другими словами, pGood(i) дает распределение хороших наблюдений по наблюдаемым величинам M предиктора, и так же для pBadi. С этим эквивалентная формула для WOE

WOE(i) = log(pGood(i)/pBad(i)).
Используя ту же таблицу частот, разногласия для строки i заданы как
Odds(i) = ni1 / ni2,
и разногласия для выборки заданы как
OddsTotal = nGood / nBad.

Для каждой строки i можно также вычислить его вклад в общее информационное Значение, данное

InfoValue(i) = (pGood(i) - pBad(i)) * WOE(i),

и общее информационное Значение является просто суммой всего InfoValuel (i) условия. (nansum возвращен, чтобы отбросить вклады из строк без наблюдений вообще.)

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

 Entropy(i) = -1/log(2)*(ni1/ni*log(ni1/ni)+ni2/ni*log(ni2/ni),
и общая Энтропия является просто взвешенной суммой энтропий строки,
Entropy = sum(ni/nTotal * Entropy(i)), i = 1...M.

Chi2 вычисляется попарно для каждой пары интервалов и измеряет статистическую разницу между двумя группами при разделении или слиянии интервалов и задан как:

 Chi2 = sum(sum((Aij - Eij)^2/Eij , j=1..k), i=m,m+1).
Для получения дополнительной информации о разделении и слиянии интервалов, смотрите Разделение и Слияние.

Отношение Gini является мерой родительского узла, то есть, данных интервалов/категорий до разделения или слияния. Отношение Gini задано как:

Gr = 1-G_hat/Gp
G_hat взвешенная мера Gini для текущего разделения или слияния:
G_hat = Sum((nj/N) * Gj, j=1..m).
Для получения дополнительной информации о разделении и слиянии интервалов, смотрите Разделение и Слияние.

Используя bininfo с Весами

Когда веса наблюдения заданы с помощью дополнительного WeightsVar аргумент при создании creditscorecard объект, вместо того, чтобы считать строки, которые хороши или плохи в каждом интервале, bininfo функция накапливает вес строк, которые хороши или плохи в каждом интервале.

“Частоты”, о которых сообщают, больше не являются основным “количеством” строк, но “совокупным весом” строк, которые хороши или плохи и падение конкретного интервала. Если эти “взвешенные частоты” известны, вся другая соответствующая статистика (Good, Bad, Odds, WOE, и InfoValue) вычисляются с обычными формулами. Для получения дополнительной информации см., что Протокол результатов Кредита Моделирует Используя Веса Наблюдения.

Ссылки

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

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

Введенный в R2014b