Оценка вероятностей перехода

Введение

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

Предложение Transition probabilities один способ охарактеризовать прошлые изменения в кредитоспособности должников (обычно фирмы), и является кардинальными входными параметрами ко многим приложениям управления рисками. Программное обеспечение Financial Toolbox™ поддерживает оценку вероятностей перехода с помощью и когорты и длительности (также известный как показатель риска или интенсивность) использование подходов transprob и связанные функции.

Примечание

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

Оцените вероятности перехода

Data_TransProb.mat файл содержит демонстрационные данные о кредитных рейтингах.

load Data_TransProb
data(1:10,:)  
ans = 

        ID            Date         Rating
    __________    _____________    ______

    '00010283'    '10-Nov-1984'    'CCC' 
    '00010283'    '12-May-1986'    'B'   
    '00010283'    '29-Jun-1988'    'CCC' 
    '00010283'    '12-Dec-1991'    'D'   
    '00013326'    '09-Feb-1985'    'A'   
    '00013326'    '24-Feb-1994'    'AA'  
    '00013326'    '10-Nov-2000'    'BBB' 
    '00014413'    '23-Dec-1982'    'B'   
    '00014413'    '20-Apr-1988'    'BB'  
    '00014413'    '16-Jan-1998'    'B'    

Выборочные данные отформатированы как массив ячеек с тремя столбцами. Каждая строка содержит ID (столбец 1), дата (столбец 2) и кредитный рейтинг (столбец 3). Присвоенный кредитный рейтинг соответствует связанному ID в связанную дату. Вся информация, соответствующая тому же ID, должна храниться в непрерывных строках. В этом примере идентификаторы, даты и оценки хранятся в символьном векторном формате, но также можно ввести их в числовой формат.

В этом примере, самом простом синтаксисе вызова для transprob передает nRecords-by-3 массив ячеек как единственный входной параметр. startDate по умолчанию и endDate самые ранние и последние даты в данных. Алгоритм оценки по умолчанию является методом длительности, и оцениваются однолетние вероятности перехода:

transMat0 = transprob(data)
transMat0 =

93.1170    5.8428    0.8232    0.1763    0.0376    0.0012    0.0001    0.0017
 1.6166   93.1518    4.3632    0.6602    0.1626    0.0055    0.0004    0.0396
 0.1237    2.9003   92.2197    4.0756    0.5365    0.0661    0.0028    0.0753
 0.0236    0.2312    5.0059   90.1846    3.7979    0.4733    0.0642    0.2193
 0.0216    0.1134    0.6357    5.7960   88.9866    3.4497    0.2919    0.7050
 0.0010    0.0062    0.1081    0.8697    7.3366   86.7215    2.5169    2.4399
 0.0002    0.0011    0.0120    0.2582    1.4294    4.2898   81.2927   12.7167
      0         0         0         0         0         0         0  100.0000

Обеспечьте явные даты начала и конца, в противном случае, окно оценки для двух различных наборов данных может отличаться, и оценки не могут быть сопоставимыми. От этой точки примите, что окно времени интереса является пятилетним периодом от конца 1 995 в конец 2 000. Для сравнений вычислите оценки для этого окна времени. Сначала используйте duration алгоритм (опция по умолчанию), и затем cohort алгоритм явным образом установлен.

startDate = '31-Dec-1995';
endDate = '31-Dec-2000';
transMat1 = transprob(data,'startDate',startDate,'endDate',endDate)
transMat2 = transprob(data,'startDate',startDate,'endDate',endDate,...
'algorithm','cohort')
transMat1 =

90.6236    7.9051    1.0314    0.4123    0.0210    0.0020    0.0003    0.0043
 4.4780   89.5558    4.5298    1.1225    0.2284    0.0094    0.0009    0.0754
 0.3983    6.1164   87.0641    5.4801    0.7637    0.0892    0.0050    0.0832
 0.1029    0.8572   10.7918   83.0204    3.9971    0.7001    0.1313    0.3992
 0.1043    0.3745    2.2962   14.0954   78.9840    3.0013    0.0463    1.0980
 0.0113    0.0544    0.7055    3.2925   15.4350   75.5988    1.8166    3.0860
 0.0044    0.0189    0.1903    1.9743    6.2320   10.2334   75.9983    5.3484
      0         0         0         0         0         0         0  100.0000

transMat2 =

90.1554    8.5492    0.9067    0.3886         0         0         0         0
 4.9512   88.5221    5.1763    1.0503    0.2251         0         0    0.0750
 0.2770    6.6482   86.2188    6.0942    0.6233    0.0693         0    0.0693
 0.0794    0.8737   11.6759   81.6521    4.3685    0.7943    0.1589    0.3971
 0.1002    0.4008    1.9038   15.4309   77.8557    3.4068         0    0.9018
      0         0    0.2262    2.4887   17.4208   74.2081    2.2624    3.3937
      0         0    0.7576    1.5152    6.0606   10.6061   75.0000    6.0606
      0         0         0         0         0         0         0  100.0000

По умолчанию, cohort алгоритм внутренне получает ежегодные снимки состояния кредитных рейтингов, но количество снимков состояния в год является определимым использованием пары параметра/значения snapsPerYear. Получить оценки с помощью ежеквартальных снимков состояния:

transMat3 = transprob(data,'startDate',startDate,'endDate',endDate,...
'algorithm','cohort','snapsPerYear',4)
transMat3 =

90.4765    8.0881    1.0072    0.4069    0.0164    0.0015    0.0002    0.0032
 4.5949   89.3216    4.6489    1.1239    0.2276    0.0074    0.0007    0.0751
 0.3747    6.3158   86.7380    5.6344    0.7675    0.0856    0.0040    0.0800
 0.0958    0.7967   11.0441   82.6138    4.1906    0.7230    0.1372    0.3987
 0.1028    0.3571    2.3312   14.4954   78.4276    3.1489    0.0383    1.0987
 0.0084    0.0399    0.6465    3.0962   16.0789   75.1300    1.9044    3.0956
 0.0031    0.0125    0.1445    1.8759    6.2613   10.7022   75.6300    5.3705
      0         0         0         0         0         0         0  100.0000

Оба duration и cohort вычислите однолетние вероятности перехода по умолчанию, но временной интервал для переходов является определимым использованием пары параметра/значения transInterval. Например, чтобы получить вероятности перехода 2D года с помощью cohort алгоритм с той же периодичностью снимка состояния и окном оценки:

transMat4 = transprob(data,'startDate',startDate,'endDate',endDate,...
'algorithm','cohort','snapsPerYear',4,'transInterval',2)
transMat4 =

82.2358   14.6092    2.2062    0.8543    0.0711    0.0074    0.0011    0.0149
 8.2803   80.4584    8.3606    2.2462    0.4665    0.0316    0.0030    0.1533
 0.9604   11.1975   76.1729    9.7284    1.5322    0.2044    0.0162    0.1879
 0.2483    2.0903   18.8440   69.5145    6.9601    1.2966    0.2329    0.8133
 0.2129    0.8713    5.4893   23.5776   62.6438    4.9464    0.1390    2.1198
 0.0378    0.1895    1.7679    7.2875   24.9444   57.1783    2.8816    5.7132
 0.0154    0.0716    0.6576    4.2157   11.4465   16.3455   57.4078    9.8399
      0         0         0         0         0         0         0  100.0000

Оцените вероятности перехода для различных рейтинговых шкал

Набор данных data от Data_TransProb.mat содержит демонстрационные кредитные рейтинги с помощью рейтинговой шкалы по умолчанию {'AAA', 'AA','A', 'BBB', 'BB', 'B', 'CCC', 'D'}. Это также содержит набор данных dataIGSG с инвестиционным классом оценок ('IG'), спекулятивный класс ('SG'), и значение по умолчанию ('D'). Чтобы оценить матрицу перехода для этого набора данных, используйте labels аргумент.

load Data_TransProb
startDate = '31-Dec-1995';
endDate = '31-Dec-2000';
dataIGSG(1:10,:)
transMatIGSG = transprob(dataIGSG,'labels',{'IG','SG','D'},...
'startDate',startDate,'endDate',endDate)
ans = 

    '00011253'    '04-Apr-1983'    'IG'
    '00012751'    '17-Feb-1985'    'SG'
    '00012751'    '19-May-1986'    'D' 
    '00014690'    '17-Jan-1983'    'IG'
    '00012144'    '21-Nov-1984'    'IG'
    '00012144'    '25-Mar-1992'    'SG'
    '00012144'    '07-May-1994'    'IG'
    '00012144'    '23-Jan-2000'    'SG'
    '00012144'    '20-Aug-2001'    'IG'
    '00012937'    '07-Feb-1984'    'IG'

transMatIGSG =

   98.1986    1.5179    0.2835
    8.5396   89.4891    1.9713
         0         0  100.0000

Существует другой набор данных, dataIGSGnum, с той же информацией как dataIGSG, кроме оценок сопоставлены с числовой шкалой где 'IG'=1, 'SG'=2, и 'D'=3. Чтобы оценить матрицу перехода, используйте labels дополнительный аргумент, задающий числовую шкалу как массив ячеек.

dataIGSGnum(1:10,:)
% Note {1,2,3} and num2cell(1:3) are equivalent; num2cell is convenient
% when the number of ratings is larger
transMatIGSGnum = transprob(dataIGSGnum,'labels',{1,2,3},...
'startDate',startDate,'endDate',endDate)
ans = 

    '00011253'    '04-Apr-1983'    [1]
    '00012751'    '17-Feb-1985'    [2]
    '00012751'    '19-May-1986'    [3]
    '00014690'    '17-Jan-1983'    [1]
    '00012144'    '21-Nov-1984'    [1]
    '00012144'    '25-Mar-1992'    [2]
    '00012144'    '07-May-1994'    [1]
    '00012144'    '23-Jan-2000'    [2]
    '00012144'    '20-Aug-2001'    [1]
    '00012937'    '07-Feb-1984'    [1]

transMatIGSGnum =

   98.1986    1.5179    0.2835
    8.5396   89.4891    1.9713
         0         0  100.0000

Любое время входной набор данных содержит оценки, не включенные в рейтинговую шкалу по умолчанию {'AAA', 'AA', 'A', 'BBB', 'BB', 'B', 'CCC', 'D'}, полная рейтинговая шкала должна быть задана с помощью labels дополнительный аргумент. Например, если набор данных содержит оценки 'AAA', ..., 'CCC, 'D', и 'NR' (не оцененный), используйте labels с этим массивом ячеек {'AAA', 'AA', 'A','BBB','BB','B','CCC','D','NR'}.

Работа с матрицей перехода, содержащей NR Оценка

Этот пример демонстрирует как 'NR' (не оцененный), оценки обработаны transprob, и как получить матрицу перехода, которые используют 'NR' оценка информации для оценки, но которые не показывают 'NR' оценка в итоговых вероятностях перехода.

Набор данных data от Data_TransProb.mat содержит демонстрационные кредитные рейтинги с помощью рейтинговой шкалы по умолчанию {'AAA', 'AA','A', 'BBB', 'BB', 'B', 'CCC', 'D'}.

load Data_TransProb
head(data,12)
ans =

  12×3 table

        ID            Date         Rating
    __________    _____________    ______

    '00010283'    '10-Nov-1984'    'CCC' 
    '00010283'    '12-May-1986'    'B'   
    '00010283'    '29-Jun-1988'    'CCC' 
    '00010283'    '12-Dec-1991'    'D'   
    '00013326'    '09-Feb-1985'    'A'   
    '00013326'    '24-Feb-1994'    'AA'  
    '00013326'    '10-Nov-2000'    'BBB' 
    '00014413'    '23-Dec-1982'    'B'   
    '00014413'    '20-Apr-1988'    'BB'  
    '00014413'    '16-Jan-1998'    'B'   
    '00014413'    '25-Nov-1999'    'BB'  
    '00012126'    '17-Feb-1985'    'CCC' 

Замените переход к 'B' с переходом к 'NR' для первой компании. Обратите внимание на то, что существует последующий переход от 'NR' к 'CCC'.

dataNR = data;
dataNR.Rating{2} = 'NR';
dataNR.Rating{7} = 'NR';

head(dataNR,12)
ans =

  12×3 table

        ID            Date         Rating
    __________    _____________    ______

    '00010283'    '10-Nov-1984'    'CCC' 
    '00010283'    '12-May-1986'    'NR'  
    '00010283'    '29-Jun-1988'    'CCC' 
    '00010283'    '12-Dec-1991'    'D'   
    '00013326'    '09-Feb-1985'    'A'   
    '00013326'    '24-Feb-1994'    'AA'  
    '00013326'    '10-Nov-2000'    'NR'  
    '00014413'    '23-Dec-1982'    'B'   
    '00014413'    '20-Apr-1988'    'BB'  
    '00014413'    '16-Jan-1998'    'B'   
    '00014413'    '25-Nov-1999'    'BB'  
    '00012126'    '17-Feb-1985'    'CCC' 

'NR' обработан как другая оценка. Матрица перехода показывает предполагаемую вероятность перехода в и из 'NR'. В этом примере, transprob функционируйте использует the'cohort' алгоритм и 'NR' оценка обработана как другая оценка. То же поведение существует при использовании transprob функция с 'duration' алгоритм.

RatingsLabelsNR = {'AAA','AA','A','BBB','BB','B','CCC','D','NR'};
[MatrixNRCohort,TotalsNRCohort] = transprob(dataNR,...
   'Labels',RatingsLabelsNR,...
   'Algorithm','cohort');

fprintf('Transition probability, cohort, including NR:\n')
disp(array2table(MatrixNRCohort,'VariableNames',RatingsLabelsNR,...
   'RowNames',RatingsLabelsNR))

fprintf('Total transitions out of given rating, including 6 out of NR (5 NR->NR, 1 NR->CCC):\n')
disp(array2table(TotalsNRCohort.totalsVec,'VariableNames',RatingsLabelsNR))
Transition probability, cohort, including NR:
             AAA         AA          A          BBB         BB          B          CCC          D           NR   
           ________    _______    ________    _______    ________    ________    ________    ________    ________

    AAA      93.135     5.9335     0.74557    0.15533    0.031066           0           0           0           0
    AA       1.7359      92.92      4.5446    0.58514     0.15604           0           0    0.039009    0.019505
    A       0.12683     2.9716      91.991     4.3124      0.4711    0.054358           0    0.072477           0
    BBB    0.021048    0.37887      5.0726     89.771      4.0413     0.46306    0.042096     0.21048           0
    BB     0.022099     0.1105     0.68508      6.232      88.376      3.6464     0.28729     0.64088           0
    B             0          0    0.076161    0.72353       7.997      86.215      2.7037      2.2848           0
    CCC           0          0           0    0.30936      1.8561      4.4857      80.897      12.374     0.07734
    D             0          0           0          0           0           0           0         100           0
    NR            0          0           0          0           0           0      16.667           0      83.333

Total transitions out of given rating, including 6 out of NR (5 NR->NR, 1 NR->CCC):
    AAA      AA      A      BBB      BB      B      CCC      D      NR
    ____    ____    ____    ____    ____    ____    ____    ____    __

    3219    5127    5519    4751    4525    2626    1293    4050    6 

Удалить переходы к 'NR' из матрицы перехода необходимо использовать 'excludeLabels' дополнительный входной параметр значения имени к transprob.

'labels' введите к transprob май или не может включать метку, которая должна быть исключена. В следующем примере, NR оценка удалена из меток в целях отображения, но передачи RatingsLabelsNR к transprob также работал бы.

RatingsLabels = {'AAA','AA','A','BBB','BB','B','CCC','D'};

[MatrixCohort,TotalsCohort] = transprob(dataNR,'Labels',RatingsLabels,'ExcludeLabels','NR','Algorithm','cohort');

fprintf('Transition probability, cohort, after postprocessing to remove NR:\n')
Transition probability, cohort, after postprocessing to remove NR:
disp(array2table(MatrixCohort,'VariableNames',RatingsLabels,...
   'RowNames',RatingsLabels))
Transition probability, cohort, after postprocessing to remove NR:
             AAA         AA          A          BBB         BB          B          CCC          D    
           ________    _______    ________    _______    ________    ________    ________    ________

    AAA      93.135     5.9335     0.74557    0.15533    0.031066           0           0           0
    AA       1.7362     92.938      4.5455    0.58525     0.15607           0           0    0.039017
    A       0.12683     2.9716      91.991     4.3124      0.4711    0.054358           0    0.072477
    BBB    0.021048    0.37887      5.0726     89.771      4.0413     0.46306    0.042096     0.21048
    BB     0.022099     0.1105     0.68508      6.232      88.376      3.6464     0.28729     0.64088
    B             0          0    0.076161    0.72353       7.997      86.215      2.7037      2.2848
    CCC           0          0           0     0.3096      1.8576      4.4892       80.96      12.384
    D             0          0           0          0           0           0           0         100

Total transitions out of given rating, AA and CCC have one less than before:
    AAA      AA      A      BBB      BB      B      CCC      D  
    ____    ____    ____    ____    ____    ____    ____    ____

    3219    5126    5519    4751    4525    2626    1292    4050
fprintf('Total transitions out of given rating, AA and CCC have one less than before:\n')
Total transitions out of given rating, AA and CCC have one less than before
disp(array2table(TotalsCohort.totalsVec,'VariableNames',RatingsLabels))
    AAA      AA      A      BBB      BB      B      CCC      D  
    ____    ____    ____    ____    ____    ____    ____    ____

    3219    5126    5519    4751    4525    2626    1292    4050

Все переходы, включающие 'NR' удалены из выборки, но все другие переходы все еще используются, чтобы оценить вероятности перехода. В этом примере, переходе от 'NR' к 'CCC' был удален, а также переход от 'AA' к 'NR' (и еще пять переходов от 'NR' к 'NR'). Это означает, что первая компания все еще вносит переходы from'CCC' к 'CCC' для оценки только периоды, перекрывающиеся со временем, эта компания потрачена в 'NR' были удалены из выборки, и так же для другой компании.

Эта процедура отличается от удаления 'NR' строки из самих данных.

Например, если вы удаляете 'NR' строки в этом примере, первая компания, кажется, остается в ее начальной оценке 'CCC' полностью с начальной даты в 1 984 к стандартному событию в 1 991. С предыдущим подходом оценка знает, что компания перешла из 'CCC' в какой-то момент это знает, что не оставалось в 'CCC' все время.

Если 'NR' строка удалена для второй компании, эта компания, кажется, осталась в выборке как 'AA' компания до конца выборки. С предыдущим подходом оценка знает, что эта компания прекратила быть 'AA' ранее.

dataNR2 = dataNR;
dataNR2([2 7],:) = [];

head(dataNR2,12)
ans =

  12×3 table

        ID            Date         Rating
    __________    _____________    ______

    '00010283'    '10-Nov-1984'    'CCC' 
    '00010283'    '29-Jun-1988'    'CCC' 
    '00010283'    '12-Dec-1991'    'D'   
    '00013326'    '09-Feb-1985'    'A'   
    '00013326'    '24-Feb-1994'    'AA'  
    '00014413'    '23-Dec-1982'    'B'   
    '00014413'    '20-Apr-1988'    'BB'  
    '00014413'    '16-Jan-1998'    'B'   
    '00014413'    '25-Nov-1999'    'BB'  
    '00012126'    '17-Feb-1985'    'CCC' 
    '00012126'    '08-Mar-1989'    'D'   
    '00011692'    '11-May-1984'    'BB'  

Если 'NR' строки удалены, матрицы перехода будут отличаться. Вероятность пребывания в 'CCC' идет немного, и также - вероятность пребывания в 'AA'.

Матрицы перехода будут отличаться. Вероятность пребывания в 'CCC' идет немного, и также - вероятность пребывания в 'AA'.

[MatrixCohort2,TotalsCohort2] = transprob(dataNR2,...
   'Labels',RatingsLabels,...
   'Algorithm','cohort');

fprintf('Transition probability, cohort, if NR rows are removed from data:\n')
disp(array2table(MatrixCohort2,'VariableNames',RatingsLabels,...
   'RowNames',RatingsLabels))

fprintf('Total transitions out of given rating, many more out of CCC and AA:\n')
disp(array2table(TotalsCohort2.totalsVec,'VariableNames',RatingsLabels))
Transition probability, cohort, if NR rows are removed from data:
disp(array2table(MatrixCohort2,'VariableNames',RatingsLabels,...
   'RowNames',RatingsLabels))
Transition probability, cohort, if NR rows are removed from data:
             AAA         AA          A          BBB         BB          B          CCC          D    
           ________    _______    ________    _______    ________    ________    ________    ________

    AAA      93.135     5.9335     0.74557    0.15533    0.031066           0           0           0
    AA       1.7346     92.945       4.541    0.58468     0.15592           0           0    0.038979
    A       0.12683     2.9716      91.991     4.3124      0.4711    0.054358           0    0.072477
    BBB    0.021048    0.37887      5.0726     89.771      4.0413     0.46306    0.042096     0.21048
    BB     0.022099     0.1105     0.68508      6.232      88.376      3.6464     0.28729     0.64088
    B             0          0    0.076161    0.72353       7.997      86.215      2.7037      2.2848
    CCC           0          0           0    0.30888      1.8533      4.4788      81.004      12.355
    D             0          0           0          0           0           0           0         100
fprintf('Total transitions out of given rating, many more out of CCC and AA:\n')
Total transitions out of given rating, many more out of CCC and AA:
disp(array2table(TotalsCohort2.totalsVec,'VariableNames',RatingsLabels))
    AAA      AA      A      BBB      BB      B      CCC      D  
    ____    ____    ____    ____    ____    ____    ____    ____

    3219    5131    5519    4751    4525    2626    1295    4050

Оцените момент времени и вероятности через цикл

Оценки вероятности перехода чувствительны к длине окна оценки. Когда окно оценки мало, оценки только получают недавние кредитные события, и они могут измениться значительно с одного года к следующему. Они называются оценками момента времени (PIT). В отличие от этого большое окно времени дает к довольно устойчивым оценкам что средние уровни перехода за более длительный промежуток времени. Они называются оценками через цикл (TTC).

Оценка вероятностей PIT требует повторенных вызовов transprob с прокручивающимся окном оценки. Использование transprobprep каждый раз повторил вызовы transprob требуются. transprobprep выполняет шаг предварительной обработки на необработанном наборе данных, который независим от окна оценки. Преимущества transprobprep больше как количество повторных вызовов transprob увеличения. Кроме того, увеличение производительности от transprobprep являются более значительными для cohort алгоритм.

load Data_TransProb
prepData = transprobprep(data);

Years = 1991:2000;
nYears = length(Years);
nRatings = length(prepData.ratingsLabels);
transMatPIT = zeros(nRatings,nRatings,nYears);
algorithm = 'duration';
sampleTotals(nYears,1) = struct('totalsVec',[],'totalsMat',[],...
'algorithm',algorithm);
for t = 1:nYears
   startDate = ['31-Dec-' num2str(Years(t)-1)];
   endDate = ['31-Dec-' num2str(Years(t))];
   [transMatPIT(:,:,t),sampleTotals(t)] = transprob(prepData,...
    'startDate',startDate,'endDate',endDate,'algorithm',algorithm);
end

Вот матрица перехода PIT для 1 993. Вспомните, что демонстрационный набор данных содержит симулированные миграции кредита, таким образом, оценки PIT в этом примере не совпадают с фактическими историческими уровнями перехода.

transMatPIT(:,:,Years==1993)
ans =

   95.3193    4.5999    0.0802    0.0004    0.0002    0.0000    0.0000    0.0000
    2.0631   94.5931    3.3057    0.0254    0.0126    0.0002    0.0000    0.0000
    0.0237    2.1748   95.5901    1.4700    0.7284    0.0131    0.0000    0.0000
    0.0003    0.0372    3.2585   95.2914    1.3876    0.0250    0.0001    0.0000
    0.0000    0.0005    0.0657    3.8292   92.7474    3.3459    0.0111    0.0001
    0.0000    0.0001    0.0128    0.7977    8.0926   90.4897    0.5958    0.0113
    0.0000    0.0000    0.0005    0.0459    0.5026   11.1621   84.9315    3.3574
         0         0         0         0         0         0         0  100.0000

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

Как пример, sampleTotals структура для 1 993 используется здесь. Общее время, проведенное на каждой оценке, хранится в totalsVec поле структуры. Общие переходы из каждой оценки хранятся в totalsMat поле . Третье поле, algorithm, указывает, что алгоритм раньше генерировал структуру.

sampleTotals(Years==1993).totalsVec
sampleTotals(Years==1993).totalsMat
sampleTotals(Years==1993).algorithm
ans =

  144.4411  230.0356  262.2438  204.9671  246.1315  147.0767   54.9562  215.1479


ans =

     0     7     0     0     0     0     0     0
     5     0     8     0     0     0     0     0
     0     6     0     4     2     0     0     0
     0     0     7     0     3     0     0     0
     0     0     0    10     0     9     0     0
     0     0     0     1    13     0     1     0
     0     0     0     0     0     7     0     2
     0     0     0     0     0     0     0     0


ans =

duration

Чтобы получить матрицу перехода TTC, передайте sampleTotals массив структур к transprobbytotals. Внутренне, transprobbytotals агрегировал информацию в sampleTotals структуры, чтобы провести общее время на каждую оценку за эти 10 лет, рассмотренных в этом примере и общем количестве переходов из каждой оценки в тот же период. transprobbytotals использует агрегированную информацию, чтобы получить матрицу TTC или среднюю однолетнюю матрицу перехода.

transMatTTC = transprobbytotals(sampleTotals)
transMatTTC =

   92.8544    6.1068    0.7463    0.2761    0.0123    0.0009    0.0001    0.0032
    2.9399   92.2329    3.8394    0.7349    0.1676    0.0050    0.0004    0.0799
    0.2410    4.5963   90.3468    3.9572    0.6909    0.0521    0.0025    0.1133
    0.0530    0.4729    7.9221   87.2751    3.5075    0.4650    0.0791    0.2254
    0.0460    0.1636    1.1873    9.3442   85.4305    2.9520    0.1150    0.7615
    0.0031    0.0152    0.2608    1.5563   10.4468   83.8525    1.9771    1.8882
    0.0009    0.0041    0.0542    0.8378    2.9996    7.3614   82.4758    6.2662
         0         0         0         0         0         0         0  100.0000

Та же матрица TTC могла быть получена с прямым вызовом transprob, установка окна оценки к этим 10 годам на рассмотрении. Но намного более эффективно использовать sampleTotals структуры, каждый раз, когда они доступны. (Отметьте для duration алгоритм, эти альтернативные рабочие процессы могут привести к небольшим числовым различиям в оценках каждый раз, когда високосные годы являются частью выборки.)

В Оценочных Вероятностях перехода 1-летняя матрица перехода оценивается с помощью 5-летнего окна времени от 1 996 до 2000. Это - другой пример матрицы TTC, и это может также быть вычислено с помощью sampleTotals массив структур.

transprobbytotals(sampleTotals(Years>=1996&Years<=2000))
ans =

   90.6239    7.9048    1.0313    0.4123    0.0210    0.0020    0.0003    0.0043
    4.4776   89.5565    4.5294    1.1224    0.2283    0.0094    0.0009    0.0754
    0.3982    6.1159   87.0651    5.4797    0.7636    0.0892    0.0050    0.0832
    0.1029    0.8571   10.7909   83.0218    3.9968    0.7001    0.1313    0.3991
    0.1043    0.3744    2.2960   14.0947   78.9851    3.0012    0.0463    1.0980
    0.0113    0.0544    0.7054    3.2922   15.4341   75.6004    1.8165    3.0858
    0.0044    0.0189    0.1903    1.9742    6.2318   10.2332   75.9990    5.3482
         0         0         0         0         0         0         0  100.0000

Оцените Вероятности Значения по умолчанию t-года

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

Однако, когда t - вероятности перехода года требуются для целой области значений значений t, например, 1 год, 2-летних, 3-летних, 4-летних, и 5-летних вероятностей перехода, более эффективно вызвать transprob однажды, чтобы получить дополнительный выход sampleTotals. Можно использовать тот же sampleTotals структура может использоваться, чтобы получить t - матрица перехода года для любого интервала перехода t. Учитывая sampleTotals структура и интервал перехода, можно получить соответствующую матрицу перехода при помощи transprobbytotals.

load Data_TransProb
startDate = '31-Dec-1995';
endDate = '31-Dec-2000';

[~,sampleTotals] = transprob(data,'startDate', ...
startDate, 'endDate',endDate);

DefProb = zeros(7,5);
for t = 1:5
   transMatTemp = transprobbytotals(sampleTotals,'transInterval',t);
   DefProb(:,t) = transMatTemp(1:7,8);
end
DefProb
DefProb =

    0.0043    0.0169    0.0377    0.0666    0.1033
    0.0754    0.1542    0.2377    0.3265    0.4213
    0.0832    0.1936    0.3276    0.4819    0.6536
    0.3992    0.8127    1.2336    1.6566    2.0779
    1.0980    2.1189    3.0668    3.9468    4.7644
    3.0860    5.6994    7.9281    9.8418   11.4963
    5.3484    9.8053   13.5320   16.6599   19.2964

Оцените доверительные интервалы начальной загрузки

transprob также возвращает idTotals массив структур, который содержит, для каждого ID или компании, общее время, проведенное на каждой оценке и общие переходы из каждой оценки. Для получения дополнительной информации о idTotals структура, смотрите transprob. idTotals структура похожа на sampleTotals структуры (см. Оценочный Момент времени и Вероятности Через цикл), но idTotals имеет информацию на уровне ID. Поскольку большинство компаний только мигрирует между немногими оценками, числовыми массивами в idTotals хранятся как разреженные массивы, чтобы уменьшать требования к памяти.

Можно использовать idTotals массив структур, чтобы оценить доверительные интервалы для вероятностей перехода с помощью загружающейся процедуры, как следующий пример демонстрирует. Для этого вызвать transprob и сохраните третий выходной аргумент, idTotals. idTotals поля отображены для последней компании в выборке. В окне оценки эта компания проводит почти год как 'AA' и это затем обновляется до 'AAA'.

load Data_TransProb
startDate = '31-Dec-1995';
endDate = '31-Dec-2000';

[transMat,~,idTotals] = transprob(data,...
   'startDate',startDate,'endDate',endDate);

% Total time spent on each rating
full(idTotals(end).totalsVec)
% Total transitions out of each rating
full(idTotals(end).totalsMat)
% Algorithm
idTotals(end).algorithm
ans =

    4.0820    0.9180         0         0         0         0         0         0


ans =

     0     0     0     0     0     0     0     0
     1     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0


ans =

duration

Затем используйте bootstrp от Statistics and Machine Learning Toolbox™ с transprobbytotals как функция начальной загрузки и idTotals как данные к выборке от. Каждая выборка начальной загрузки соответствует набору данных, сделанному из компаний, произведенных с заменой из исходных данных. Однако вы не должны чертить компании из исходных данных, потому что начальная загрузка idTotals выборка содержит всю информацию, запрошенную, чтобы вычислить вероятности перехода. transprobbytotals агрегировал все структуры в каждой начальной загрузке idTotals выборка и находит соответствующую матрицу перехода.

Оценить 95% доверительных интервалов для матрицы перехода и отобразить вероятности значения по умолчанию вместе с ее верхними и более низкими доверительными границами:

PD = transMat(1:7,8);

bootstat = bootstrp(100,@(totals)transprobbytotals(totals),idTotals);
ci = prctile(bootstat,[2.5 97.5]); % 95% confidence
CIlower = reshape(ci(1,:),8,8);
CIupper = reshape(ci(2,:),8,8);
PD_LB = CIlower(1:7,8);
PD_UB = CIupper(1:7,8);

[PD_LB PD PD_UB]
ans =

    0.0004    0.0043    0.0106
    0.0028    0.0754    0.2192
    0.0126    0.0832    0.2180
    0.1659    0.3992    0.6617
    0.5703    1.0980    1.7260
    1.7264    3.0860    4.7602
    1.7678    5.3484    9.5055

Кредитные рейтинги группы

Шкалы кредитного рейтинга могут быть более или менее гранулированы. Например, существуют оценки со спецификаторами (такой как, 'AA+', 'BB-', и так далее), целые оценки ('AA', 'BB', и так далее), и инвестиции или спекулятивный класс ('IG', 'SG'категории. Учитывая набор данных с кредитными рейтингами на более гранулированном уровне, вероятности перехода для меньшего количества гранулированных категорий могут представлять интерес. Например, вы можете интересоваться матрицей перехода для инвестиций и спекулятивных классов, учитывая набор данных с целыми оценками. Использование transprobgrouptotals для этой оценки, как проиллюстрировано в следующих примерах. Демонстрационные данные о наборе данных имеют целые кредитные рейтинги:

load Data_TransProb
startDate = '31-Dec-1995';
endDate = '31-Dec-2000';
data(1:5,:)
ans = 

    '00010283'    '10-Nov-1984'    'CCC'
    '00010283'    '12-May-1986'    'B'  
    '00010283'    '29-Jun-1988'    'CCC'
    '00010283'    '12-Dec-1991'    'D'  
    '00013326'    '09-Feb-1985'    'A'  

Вызов transprob возвращает матрицу перехода и общие структуры для восьми ('AAA' к 'D') целые кредитные рейтинги. Массив с количеством переходов из каждого кредитного рейтинга отображен после вызова transprob:

[transMat,sampleTotals,idTotals] = transprob(data,'startDate',startDate,...
'endDate',endDate);
sampleTotals.totalsMat
ans =

     0    67     7     3     0     0     0     0
    67     0    68    15     3     0     0     1
     4   101     0    93    11     1     0     1
     1     7   163     0    62    10     2     5
     1     3    16   168     0    37     0    11
     0     0     2    10    83     0    10    14
     0     0     0     2     8    16     0     7
     0     0     0     0     0     0     0     0

Затем используйте transprobgrouptotals сгруппировать целые оценки в инвестиции и спекулятивные классы. Эта функция берет общую структуру в качестве первого аргумента. Второй аргумент указывает на ребра между оценкой категорий. В этом случае, оценки 1 - 4 ('AAA' через 'BBB') соответствуйте первой категории ('IG'), оценки 5 - 7 ('BB' через 'CCC') к второй категории ('SG') и оценка 8 ('D') собственная категория. transprobgrouptotals складывает общее время, проведенное на оценках, которые принадлежат той же категории. Например, общие времена проведены на 'AAA' через 'BBB' сложены как общее время, проведенное на 'IG'. transprobgrouptotals также складывает общее количество переходов между любым 'IG' оценка и любой 'SG' оценка, например, миграция кредита от 'BBB' к 'BB'.

Сгруппированные общие количества могут затем быть переданы transprobbytotals получить матрицу перехода для инвестиций и спекулятивных классов. Оба totalsMat и новой матрицей перехода является оба 3- 3, соответствие сгруппированным категориям 'IG', 'SG', и 'D'.

sampleTotalsIGSG = transprobgrouptotals(sampleTotals,[4 7 8])
transMatIGSG = transprobbytotals(sampleTotalsIGSG)
sampleTotalsIGSG = 

    totalsVec: [4.8591e+003 1.5034e+003 1.1621e+003]
    totalsMat: [3x3 double]
    algorithm: 'duration'

transMatIGSG =

   98.1591    1.6798    0.1611
   12.3228   85.6961    1.9811
         0         0  100.0000

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

PDIGSG = transMatIGSG(1:2,3);

idTotalsIGSG = transprobgrouptotals(idTotals,[4 7 8]);
bootstat = bootstrp(100,@(totals)transprobbytotals(totals),idTotalsIGSG);
ci = prctile(bootstat,[2.5 97.5]); % 95% confidence
CIlower = reshape(ci(1,:),3,3);
CIupper = reshape(ci(2,:),3,3);
PDIGSG_LB = CIlower(1:2,3);
PDIGSG_UB = CIupper(1:2,3);

[PDIGSG_LB PDIGSG PDIGSG_UB]
ans =

    0.0603    0.1611    0.2538
    1.3470    1.9811    2.6195

Работа с неквадратными матрицами

О вероятностях перехода и количестве переходов между оценками обычно сообщают без 'D' ('Default') строка. Например, отчет о кредитных операциях может содержать следующую таблицу, указывая на количество выпускающих, запускающихся в каждой оценке (первый столбец) и количество переходов между оценками (остальные столбцы):

     Initial  AAA   AA    A  BBB   BB    B  CCC    D
  AAA     98   88    9    1    0    0    0    0    0
   AA    389    0  368   19    2    0    0    0    0
    A   1165    1   21 1087   56    0    0    0    0
  BBB   1435    0    2   89 1289   45    8    0    2
   BB    915    0    0    1   60  776   73    2    3
    B    867    0    0    1    7   88  715   39   17
  CCC    112    0    0    0    1    3   34   61   13

Можно хранить информацию в этой таблице в общей структуре, совместимой с cohort алгоритм. Для получения дополнительной информации о cohort алгоритм и общая структура, смотрите transprob. totalsMat поле является неквадратным массивом в этом случае.

% Define totals structure
totals.totalsVec = [98 389 1165 1435 915 867 112];
totals.totalsMat = [
   88    9    1    0    0    0    0    0;
    0  368   19    2    0    0    0    0;
    1   21 1087   56    0    0    0    0;
    0    2   89 1289   45    8    0    2;
    0    0    1   60  776   73    2    3;
    0    0    1    7   88  715   39   17;
    0    0    0    1    3   34   61   13];
totals.algorithm = 'cohort';

transprobbytotals и transprobgrouptotals примите общие входные параметры с неквадратом totalsMat поля . Получить матричное соответствие перехода предыдущей таблице и сгруппировать оценки в инвестиции и спекулятивный класс с соответствующей матрицей:

transMat = transprobbytotals(totals)

% Group into IG/SG and get IG/SG transition matrix
totalsIGSG = transprobgrouptotals(totals,[4 7]);
transMatIGSG = transprobbytotals(totalsIGSG)
transMat =

   89.7959    9.1837    1.0204         0         0         0         0         0
         0   94.6015    4.8843    0.5141         0         0         0         0
    0.0858    1.8026   93.3047    4.8069         0         0         0         0
         0    0.1394    6.2021   89.8258    3.1359    0.5575         0    0.1394
         0         0    0.1093    6.5574   84.8087    7.9781    0.2186    0.3279
         0         0    0.1153    0.8074   10.1499   82.4683    4.4983    1.9608
         0         0         0    0.8929    2.6786   30.3571   54.4643   11.6071


transMatIGSG =

   98.2183    1.7169    0.0648
    3.6959   94.5618    1.7423

Удалите выбросы

idTotals выведите от transprob может также быть использован, чтобы обновить оценки вероятности перехода после удаления некоторой информации о выбросе. Для получения дополнительной информации о idTotals, смотрите transprob. Например, если вы знаете, что информация о миграции кредитного рейтинга для 4-х и 27-х компаний в данных имеет проблемы, можно удалить те компании и эффективно обновить вероятности перехода можно следующим образом:

load Data_TransProb
startDate = '31-Dec-1995';
endDate = '31-Dec-2000';
[transMat,~,idTotals] = transprob(data,'startDate', ...
startDate, 'endDate',endDate);
transMat
transMat =

90.6236    7.9051    1.0314    0.4123    0.0210    0.0020    0.0003    0.0043
 4.4780   89.5558    4.5298    1.1225    0.2284    0.0094    0.0009    0.0754
 0.3983    6.1164   87.0641    5.4801    0.7637    0.0892    0.0050    0.0832
 0.1029    0.8572   10.7918   83.0204    3.9971    0.7001    0.1313    0.3992
 0.1043    0.3745    2.2962   14.0954   78.9840    3.0013    0.0463    1.0980
 0.0113    0.0544    0.7055    3.2925   15.4350   75.5988    1.8166    3.0860
 0.0044    0.0189    0.1903    1.9743    6.2320   10.2334   75.9983    5.3484
      0         0         0         0         0         0         0  100.0000

nIDs = length(idTotals);
keepInd = setdiff(1:nIDs,[4 27]);
transMatNoOutlier = transprobbytotals(idTotals(keepInd))

transMatNoOutlier =

90.6241    7.9067    1.0290    0.4124    0.0211    0.0020    0.0003    0.0043
 4.4917   89.5918    4.4779    1.1240    0.2288    0.0094    0.0009    0.0756
 0.3990    6.1220   87.0530    5.4841    0.7643    0.0893    0.0050    0.0833
 0.1030    0.8576   10.7909   83.0207    3.9971    0.7001    0.1313    0.3992
 0.1043    0.3746    2.2960   14.0955   78.9840    3.0013    0.0463    1.0980
 0.0113    0.0544    0.7054    3.2925   15.4350   75.5988    1.8166    3.0860
 0.0044    0.0189    0.1903    1.9743    6.2320   10.2334   75.9983    5.3484
      0         0         0         0         0         0         0  100.0000

Решение, какие компании удалить являются индивидуальной ситуацией. Причины удалить компанию могут включать опечатку в одну из историй оценок или необычную миграцию между оценками, удар которых на оценки вероятности перехода должен быть измерен. transprob не переупорядочивает компании ни в каком случае. Упорядоченное расположение компаний во входных данных совпадает с упорядоченным расположением в idTotals массив.

Оцените вероятности для различных сегментов

Можно использовать idTotals эффективно получить оценки по различным сегментам выборки. Для получения дополнительной информации о idTotals, смотрите transprob. Например, примите, что компании в примере сгруппированы в три географических области и что компании были сгруппированы географическими областями ранее, так, чтобы первые 340 компаний соответствовали первой области, следующим 572 компаниям во вторую область и остальным в третью область. Можно эффективно получить вероятности перехода для каждой области можно следующим образом:

load Data_TransProb
startDate = '31-Dec-1995';
endDate = '31-Dec-2000';
[~,~,idTotals] = transprob(data,'startDate', ...
startDate, 'endDate',endDate);

n1 = 340;
n2 = 572;
transMatG1 = transprobbytotals(idTotals(1:n1))
transMatG2 = transprobbytotals(idTotals(n1+1:n1+n2))
transMatG3 = transprobbytotals(idTotals(n1+n2+1:end))
transMatG1 =

90.8299    7.6501    0.3178    1.1700    0.0255    0.0044    0.0021    0.0002
 4.3572   89.0262    5.7838    0.8039    0.0245    0.0029    0.0013    0.0001
 0.7066    6.7567   86.6320    5.4950    0.3721    0.0252    0.0101    0.0023
 0.0626    1.3688   10.3895   83.5022    3.6823    0.6466    0.3084    0.0396
 0.0256    0.7884    2.6970   13.7857   78.8321    2.8310    0.0561    0.9842
 0.0026    0.1095    0.4280    3.5204   21.1437   72.9230    1.6456    0.2273
 0.0005    0.0216    0.0730    0.4574    4.9586    4.2821   80.3062    9.9006
      0         0         0         0         0         0         0  100.0000

transMatG2 =

90.5798    8.4877    0.8202    0.0884    0.0132    0.0011    0.0000    0.0096
 4.1999   90.0371    3.8657    1.4744    0.2144    0.0128    0.0001    0.1956
 0.3022    5.9869   86.7128    5.5526    1.0411    0.1902    0.0015    0.2127
 0.0204    0.5606   10.9342   82.9195    4.0123    0.7398    0.0059    0.8073
 0.0089    0.3338    2.1185   16.6496   76.2395    3.1241    0.0261    1.4995
 0.0013    0.0465    0.6710    2.4731   14.7281   76.7378    1.2993    4.0428
 0.0002    0.0080    0.0681    0.4598    4.1324    8.4380   80.9092    5.9843
      0         0         0         0         0         0         0  100.0000

transMatG3 =

90.5655    7.5408    1.5288    0.3369    0.0258    0.0015    0.0003    0.0004
 4.8073   89.3842    4.4865    0.9582    0.3509    0.0095    0.0009    0.0025
 0.3153    5.8771   87.6353    5.4101    0.7160    0.0322    0.0052    0.0088
 0.1995    0.8625   10.8682   82.8717    4.1423    0.6903    0.1565    0.2090
 0.2465    0.1091    2.1558   12.0289   81.5803    3.0057    0.0616    0.8122
 0.0227    0.0400    0.9380    4.3175   12.3632   75.9429    2.5766    3.7991
 0.0149    0.0180    0.3414    3.6918    8.1414   13.6010   70.7254    3.4661
      0         0         0         0         0         0         0  100.0000

Работа с большими наборами данных

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

Например, данные о наборе данных искусственно разделены в два раздела в этом примере. На практике эти два набора данных прибыли бы из различных файлов или баз данных. При агрегации нескольких наборов данных история компании не может быть разделена через наборы данных. Можно анализировать то это условие, удовлетворен для произвольно выбранного предела.

load Data_TransProb

cutoff = 2099;
data(cutoff-5:cutoff,:)
data(cutoff+1:cutoff+6,:)
ans = 

    '00011166'    '24-Aug-1995'    'BBB'
    '00011166'    '25-Jan-1997'    'A'  
    '00011166'    '01-Feb-1998'    'AA' 
    '00014878'    '15-Mar-1983'    'B'  
    '00014878'    '21-Sep-1986'    'BB' 
    '00014878'    '17-Jan-1998'    'BBB'


ans = 

    '00012043'    '09-Feb-1985'    'BBB'
    '00012043'    '03-Jan-1988'    'A'  
    '00012043'    '15-Jan-1994'    'AAA'
    '00011157'    '24-Jun-1984'    'A'  
    '00011157'    '09-Dec-1999'    'BBB'
    '00011157'    '28-Mar-2001'    'A'  

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

startDate = '31-Dec-1995';
endDate = '31-Dec-2000';

На практике это - точка, где можно читать в первом наборе данных. Теперь набор данных уже получен. Вызвать transprob с первым набором данных и явными датами начала и конца. Сохраните только sampleTotals вывод . Для получения дополнительной информации на sampleTotals, смотрите transprob.

[~,sampleTotals(1)] = transprob(data(1:cutoff,:),...
   'startDate',startDate,'endDate',endDate);

Повторитесь для остающихся наборов данных. Отметьте различный sampleTotals структуры хранятся в структурированном массиве.

[~,sampleTotals(2)] = transprob(data(cutoff+1:end,:),...
   'startDate',startDate,'endDate',endDate);

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

transMatAggr = transprobbytotals(sampleTotals)
transMatAggr =

   90.6236    7.9051    1.0314    0.4123    0.0210    0.0020    0.0003    0.0043
    4.4780   89.5558    4.5298    1.1225    0.2284    0.0094    0.0009    0.0754
    0.3983    6.1164   87.0641    5.4801    0.7637    0.0892    0.0050    0.0832
    0.1029    0.8572   10.7918   83.0204    3.9971    0.7001    0.1313    0.3992
    0.1043    0.3745    2.2962   14.0954   78.9840    3.0013    0.0463    1.0980
    0.0113    0.0544    0.7055    3.2925   15.4350   75.5988    1.8166    3.0860
    0.0044    0.0189    0.1903    1.9743    6.2320   10.2334   75.9983    5.3484
         0         0         0         0         0         0         0  100.0000

Как проверка работоспособности, для этого примера можно анализировать это, процедура агрегации дает к тем же оценкам (до числовых различий) как оценка вероятностей непосредственно по целой выборке:

transMatWhole = transprob(data,'startDate',startDate,'endDate',endDate)
aggError = max(max(abs(transMatAggr - transMatWhole)))
transMatWhole =

   90.6236    7.9051    1.0314    0.4123    0.0210    0.0020    0.0003    0.0043
    4.4780   89.5558    4.5298    1.1225    0.2284    0.0094    0.0009    0.0754
    0.3983    6.1164   87.0641    5.4801    0.7637    0.0892    0.0050    0.0832
    0.1029    0.8572   10.7918   83.0204    3.9971    0.7001    0.1313    0.3992
    0.1043    0.3745    2.2962   14.0954   78.9840    3.0013    0.0463    1.0980
    0.0113    0.0544    0.7055    3.2925   15.4350   75.5988    1.8166    3.0860
    0.0044    0.0189    0.1903    1.9743    6.2320   10.2334   75.9983    5.3484
         0         0         0         0         0         0         0  100.0000

aggError =

  2.8422e-014

Смотрите также

| | | | | |

Похожие темы

Внешние веб-сайты