empiricalblm

Байесовская линейная регрессионая модель с выборками из предыдущих или апостериорных распределений

Описание

Байесовская линейная регрессия объекта модели empiricalblm содержит выборки из предыдущих распределений β и σ2, который MATLAB® использует для характеристики предшествующих или апостериорных распределений.

Вероятность данных: t=1Tϕ(yt;xtβ,σ2), где ϕ (yt; xtβ, σ2) - Гауссова плотность вероятностей, оцениваемая в yt со средними xtβ и отклонением σ2. Поскольку форма предшествующих функций распределения неизвестна, получившиеся апостериорные распределения не являются аналитически отслеживаемыми. Следовательно, чтобы оценить или моделировать из апостериорных распределений, MATLAB реализует повторную дискретизацию важности выборки.

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

Создание

Эмпирические объекты модели, возвращенные estimate

Для семиконъюгатных, эмпирических или пользовательских предшествующих моделей, estimate оценивает апостериорное распределение с помощью выборки Монте-Карло. То есть estimate характеризует апостериорное распределение большим количеством вытягиваний из этого распределения. estimate сохраняет рисунки в BetaDraws и Sigma2Draws свойства возвращенного объекта байесовской линейной регрессионной модели. Следовательно, когда вы оцениваете semiconjugateblm, empiricalblm, customblm, lassoblm, mixconjugateblm, и mixconjugateblm объекты модели, estimate возвращает empiricalblm объект модели.

Создание прямой эмпирической модели

Если вы хотите обновить предполагаемое апостериорное распределение с помощью новых данных, и у вас есть извлечения из апостериорного распределения β и σ2, тогда можно создать эмпирическую модель, используя empiricalblm.

Синтаксис

Описание

пример

PriorMdl = empiricalblm(NumPredictors,'BetaDraws',BetaDraws,'Sigma2Draws',Sigma2Draws) создает байесовский объект линейной регрессионной модели (PriorMdl) состоят из NumPredictors предикторы и точка пересечения, и устанавливает NumPredictors свойство. Случайные выборки из предыдущих распределений β и σ2, BetaDraws и Sigma2Draws, соответственно, характеризуют предыдущие распределения. PriorMdl является шаблоном, который задает предыдущие распределения и размерность β.

пример

PriorMdl = empiricalblm(NumPredictors,'BetaDraws',BetaDraws,'Sigma2Draws',Sigma2Draws,Name,Value) устанавливает свойства (кроме NumPredictors) с использованием аргументов пары "имя-значение". Заключайте каждое имя свойства в кавычки. Для примера empiricalblm (2, 'BetaDraws', BetaDraws,' Sigma2Draws', Sigma2Draws,' точка пересечения ', false) задает случайные выборки из предыдущих распределений β и σ2 и задает регрессионую модель с 2 коэффициентами регрессии, но без точки пересечения.

Свойства

расширить все

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

PriorMdl.Intercept = false;

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

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

При указании NumPredictors, исключить любой термин точки пересечения из значения.

После создания модели, если вы меняете значение NumPredictors использование записи через точку, затем VarNames возвращается к значению по умолчанию.

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

Флаг для включения точки пересечения регрессионной модели, заданный как значение в этой таблице.

ЗначениеОписание
falseИсключить точку пересечения из регрессионной модели. Поэтому β является p-мерный вектор, где p - значение NumPredictors.
trueВключите точку пересечения в регрессионую модель. Поэтому β есть a (p + 1) -мерный вектор. Эта спецификация заставляет вектор T-на-1 из них быть подготовленным к данным предиктора во время оценки и симуляции.

Если вы включаете столбец таковых в данные предиктора для термина точки пересечения, задайте Intercept на false.

Пример: 'Intercept',false

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

Имена переменных предиктора для отображений, заданные как строковый вектор или вектор камеры векторов символов. VarNames должен содержать NumPredictors элементы. VarNames (j) - имя переменной в столбце j набора данных предиктора, который вы задаете во время оценки, симуляции или прогнозирования.

По умолчанию является {'Beta (1)', 'Beta (2),..., Beta (p)}, где p - значение NumPredictors.

Пример: 'VarNames',["UnemploymentRate"; "CPI"]

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

Случайная выборка из предыдущего распределения β, заданная как a (Intercept + NumPredictors) -by- NumDraws числовая матрица. Строки соответствуют коэффициентам регрессии; первая строка соответствует точке пересечения, а последующие строки соответствуют столбцам в данных предиктора. Столбцы соответствуют последовательным вытяжкам из предыдущего распределения.

BetaDraws и SigmaDraws должно иметь одинаковое число столбцов.

NumDraws должны быть достаточно большими.

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

Случайная выборка из предыдущего распределения σ2, заданный как 1-бай- NumDraws числовая матрица. Столбцы соответствуют последовательным вытяжкам из предыдущего распределения.

BetaDraws и Sigma2Draws должно иметь одинаковое число столбцов.

NumDraws должны быть достаточно большими.

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

Функции объекта

estimateОцените апостериорное распределение параметров байесовской линейной регрессионой модели
simulateСимулируйте коэффициенты регрессии и отклонение нарушения порядка байесовской линейной регрессионой модели
forecastПрогнозные отклики байесовской линейной регрессионой модели
plotВизуализация априорных и апостериорных плотностей параметров байесовской линейной регрессионой модели
summarizeСводная статистика распределения стандартной байесовской линейной регрессионой модели

Примеры

свернуть все

Рассмотрим множественную линейную регрессионую модель, которая предсказывает реальный валовой национальный продукт США (GNPR) с использованием линейной комбинации индекса промышленного производства (IPI), общая занятость (E), и реальная заработная плата (WR).

GNPRt=β0+β1IPIt+β2Et+β3WRt+εt.

Для всех t временные точки, εt - серия независимых гауссовских нарушений порядка со средним значением 0 и отклонением σ2.

Примите, что предыдущие распределения:

  • β|σ2N4(M,V). M является вектором средств 4 на 1, и V является масштабированной 4 на 4 положительно определенной ковариационной матрицей.

  • σ2IG(A,B). A и B - форма и шкала, соответственно, обратного гамма- распределения.

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

Создайте нормально-обратную-гамма-полуконъюгатную предшествующую модель для параметров линейной регрессии. Задайте количество предикторов p.

p = 3;
PriorMdl = bayeslm(p,'ModelType','semiconjugate')
PriorMdl = 
  semiconjugateblm with properties:

    NumPredictors: 3
        Intercept: 1
         VarNames: {4x1 cell}
               Mu: [4x1 double]
                V: [4x4 double]
                A: 3
                B: 1

 
           |  Mean     Std           CI95         Positive     Distribution    
-------------------------------------------------------------------------------
 Intercept |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Beta(1)   |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Beta(2)   |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Beta(3)   |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Sigma2    | 0.5000  0.5000    [ 0.138,  1.616]     1.000   IG(3.00,    1)     
 

Mdl является semiconjugateblm Байесовский объект линейной регрессионной модели, представляющий предшествующее распределение коэффициентов регрессии и отклонение нарушения порядка. В командном окне bayeslm отображает сводные данные предыдущих распределений.

Загрузите набор данных Нельсона-Плоссера. Создайте переменные для ряда отклика и предиктора.

load Data_NelsonPlosser
VarNames = {'IPI'; 'E'; 'WR'};
X = DataTable{:,VarNames};
y = DataTable{:,'GNPR'};

Оцените маргинальные апостериорные распределения β и σ2.

rng(1); % For reproducibility
PosteriorMdl = estimate(PriorMdl,X,y);
Method: Gibbs sampling with 10000 draws
Number of observations: 62
Number of predictors:   4
 
           |   Mean      Std          CI95        Positive  Distribution 
-------------------------------------------------------------------------
 Intercept | -23.9922  9.0520  [-41.734, -6.198]    0.005     Empirical  
 Beta(1)   |   4.3929  0.1458   [ 4.101,  4.678]    1.000     Empirical  
 Beta(2)   |   0.0011  0.0003   [ 0.000,  0.002]    0.999     Empirical  
 Beta(3)   |   2.4711  0.3576   [ 1.762,  3.178]    1.000     Empirical  
 Sigma2    |  46.7474  8.4550   [33.099, 66.126]    1.000     Empirical  
 

PosteriorMdl является empiricalblm хранение объектов модели вытягивает из апостериорных распределений β и σ2 учитывая данные. estimate отображает сводные данные маргинальных апостериорных распределений в командном окне. Строки сводных данных соответствуют коэффициентам регрессии и нарушения порядка отклонения, а столбцы - характеристикам апостериорного распределения. Характеристики включают:

  • CI95, который содержит 95% байесовских справедливых интервалов для параметров. Для примера апостериорная вероятность того, что коэффициент регрессии WR находится в [1.762, 3.178] 0,95.

  • Positive, который содержит апостериорную вероятность того, что параметр больше 0. Для примера вероятность того, что точка пересечения больше 0, составляет 0,005.

В этом случае маргинальный апостериор аналитически неразрешим. Поэтому estimate использует выборку Гиббса, чтобы взять из апостериорной и оценить апостериорные характеристики.

Рассмотрим линейную регрессионую модель в Create Empirical Previor Model.

Создайте нормально-обратную-гамма-полуконъюгатную предшествующую модель для параметров линейной регрессии. Задайте количество предикторов p и имена коэффициентов регрессии.

p = 3;
PriorMdl = bayeslm(p,'ModelType','semiconjugate','VarNames',["IPI" "E" "WR"]);

Загрузите набор данных Нельсона-Плоссера. Разделите данные путем резервирования последних пяти периодов в серии.

load Data_NelsonPlosser
X0 = DataTable{1:(end - 5),PriorMdl.VarNames(2:end)};
y0 = DataTable{1:(end - 5),'GNPR'};
X1 = DataTable{(end - 4):end,PriorMdl.VarNames(2:end)};
y1 = DataTable{(end - 4):end,'GNPR'};

Оцените маргинальные апостериорные распределения β и σ2.

rng(1); % For reproducibility
PosteriorMdl0 = estimate(PriorMdl,X0,y0);
Method: Gibbs sampling with 10000 draws
Number of observations: 57
Number of predictors:   4
 
           |   Mean      Std           CI95         Positive  Distribution 
---------------------------------------------------------------------------
 Intercept | -34.3887  10.5218  [-55.350, -13.615]    0.001     Empirical  
 IPI       |   3.9076   0.2786   [ 3.356,  4.459]     1.000     Empirical  
 E         |   0.0011   0.0003   [ 0.000,  0.002]     0.999     Empirical  
 WR        |   3.2146   0.4967   [ 2.228,  4.196]     1.000     Empirical  
 Sigma2    |  45.3098   8.5597   [31.620, 64.972]     1.000     Empirical  
 

PosteriorMdl0 является empiricalblm объект модели, сохраняющий выборку Гиббса, вытекает из апостериорного распределения.

Обновите апостериорное распределение на основе последних 5 периодов данных путем передачи этих наблюдений и апостериорного распределения estimate.

PosteriorMdl1 = estimate(PosteriorMdl0,X1,y1);
Method: Importance sampling/resampling with 10000 draws
Number of observations: 5
Number of predictors:   4
 
           |   Mean      Std          CI95        Positive  Distribution 
-------------------------------------------------------------------------
 Intercept | -24.3152  9.3408  [-41.163, -5.301]    0.008     Empirical  
 IPI       |   4.3893  0.1440   [ 4.107,  4.658]    1.000     Empirical  
 E         |   0.0011  0.0004   [ 0.000,  0.002]    0.998     Empirical  
 WR        |   2.4763  0.3694   [ 1.630,  3.170]    1.000     Empirical  
 Sigma2    |  46.5211  8.2913   [33.646, 65.402]    1.000     Empirical  
 

Чтобы обновить апостериорные распределения на основе рисунков, estimate использует повторную дискретизацию значения дискретизации.

Рассмотрим линейную регрессионую модель в Estimate Marginal Posterior Distribution.

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

p = 3;
PriorMdl = bayeslm(p,'ModelType','semiconjugate','VarNames',["IPI" "E" "WR"]);

load Data_NelsonPlosser
X = DataTable{:,PriorMdl.VarNames(2:end)};
y = DataTable{:,'GNPR'};

rng(1); % For reproducibility
PosteriorMdl = estimate(PriorMdl,X,y);
Method: Gibbs sampling with 10000 draws
Number of observations: 62
Number of predictors:   4
 
           |   Mean      Std          CI95        Positive  Distribution 
-------------------------------------------------------------------------
 Intercept | -23.9922  9.0520  [-41.734, -6.198]    0.005     Empirical  
 IPI       |   4.3929  0.1458   [ 4.101,  4.678]    1.000     Empirical  
 E         |   0.0011  0.0003   [ 0.000,  0.002]    0.999     Empirical  
 WR        |   2.4711  0.3576   [ 1.762,  3.178]    1.000     Empirical  
 Sigma2    |  46.7474  8.4550   [33.099, 66.126]    1.000     Empirical  
 

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

estBeta = mean(PosteriorMdl.BetaDraws,2);
EstBetaCov = cov(PosteriorMdl.BetaDraws');

Предположим, что если коэффициент реальной заработной платы ниже 2,5, то вводится в действие политика. Хотя апостериорное распределение WR известно, и поэтому вы можете вычислить вероятности непосредственно, можно оценить вероятность с помощью симуляции Монте-Карло.

Нарисуйте 1e6 выборки из маргинального апостериорного распределения β.

NumDraws = 1e6;
rng(1);
BetaSim = simulate(PosteriorMdl,'NumDraws',NumDraws);

BetaSim является 4-байт- 1e6 матрица, содержащая рисунки. Строки соответствуют коэффициенту регрессии, а столбцы - последовательным рисованиям.

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

isWR = PosteriorMdl.VarNames == "WR";
wrSim = BetaSim(isWR,:);
isWRLT2p5 = wrSim < 2.5;

Найдите предельную апостериорную вероятность того, что коэффициент регрессии WR ниже 2,5 путем вычисления доли рисок, которые меньше 2,5.

probWRLT2p5 = mean(isWRLT2p5)
probWRLT2p5 = 0.5283

Апостериорная вероятность того, что коэффициент реальной заработной платы меньше 2,5, составляет около 0.53.

Копирайт 2018 The MathWorks, Inc.

Рассмотрим линейную регрессионую модель в Estimate Marginal Posterior Distribution.

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

p = 3;
PriorMdl = bayeslm(p,'ModelType','semiconjugate','VarNames',["IPI" "E" "WR"]);

load Data_NelsonPlosser
fhs = 10; % Forecast horizon size
X = DataTable{1:(end - fhs),PriorMdl.VarNames(2:end)};
y = DataTable{1:(end - fhs),'GNPR'};
XF = DataTable{(end - fhs + 1):end,PriorMdl.VarNames(2:end)}; % Future predictor data
yFT = DataTable{(end - fhs + 1):end,'GNPR'};                  % True future responses

rng(1); % For reproducibility
PosteriorMdl = estimate(PriorMdl,X,y,'Display',false);

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

yF = forecast(PosteriorMdl,XF);

figure;
plot(dates,DataTable.GNPR);
hold on
plot(dates((end - fhs + 1):end),yF)
h = gca;
hp = patch([dates(end - fhs + 1) dates(end) dates(end) dates(end - fhs + 1)],...
    h.YLim([1,1,2,2]),[0.8 0.8 0.8]);
uistack(hp,'bottom');
legend('Forecast Horizon','True GNPR','Forecasted GNPR','Location','NW')
title('Real Gross National Product: 1909 - 1970');
ylabel('rGNP');
xlabel('Year');
hold off

Figure contains an axes. The axes with title Real Gross National Product: 1909 - 1970 contains 3 objects of type patch, line. These objects represent Forecast Horizon, True GNPR, Forecasted GNPR.

yF является вектором 10 на 1 будущих значений действительного GNP, соответствующим будущим данным предиктора.

Оцените среднюю квадратичную невязку корня прогноза (RMSE).

frmse = sqrt(mean((yF - yFT).^2))
frmse = 25.1938

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

Подробнее о

расширить все

Алгоритмы

  • После реализации повторной дискретизации значения выборки из апостериорного распределения, estimate, simulate, и forecast вычислите effective sample size (ESS), которое является количеством выборок, необходимых для получения разумной апостериорной статистики и выводов. Его формула является

    ESS=1jwj2.

    Если ESS < 0.01*NumDraws, затем MATLAB выдает предупреждение. Предупреждение подразумевает, что, учитывая выборку из предыдущего распределения, выборка из распределения предложений слишком мала, чтобы получить апостериорную статистику и выводы хорошего качества.

  • Если эффективный размер выборки слишком мал, то:

    • Увеличьте размер выборки из предыдущих распределений.

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

  • Задайте BetaDraws и Sigma2Draws как выборки из informative предыдущих распределений. То есть, если черпает предложение из почти плоских распределений, то алгоритм может быть неэффективным.

Альтернативы

bayeslm функция может создать любой поддерживаемый объект предыдущей модели для Байесовской линейной регрессии.

Введенный в R2017a