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,'Intercept', false) задает случайные выборки от предшествующих дистрибутивов β и σ 2 и задает модель регрессии с 2 коэффициентами регрессии, но никакое прерывание.

Свойства

развернуть все

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

PriorMdl.Intercept = false;

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

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

При определении NumPredictors исключите любой термин прерывания из значения.

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

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

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

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

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

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

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

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

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

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

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

Случайная выборка от предшествующего распределения β, заданного как (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.

\forall 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%-е Байесовы equitailed вероятные интервалы для параметров. Например, апостериорная вероятность, что коэффициент регрессии WR находится в [1.762, 3.178], 0.95.

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

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

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

Создайте полусопряженную предшествующую модель нормальной обратной гаммы для параметров линейной регрессии. Задайте количество предикторов 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, выбирающее передискретизацию важности.

Считайте модель линейной регрессии в Оценке Крайним Апостериорным распределением.

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

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-by-матрицей 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.

Copyright 2018 The MathWorks, Inc.

Считайте модель линейной регрессии в Оценке Крайним Апостериорным распределением.

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

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

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