diffuseblm

Байесова модель линейной регрессии с рассеянным, сопряженным предшествующий для вероятности данных

Описание

Байесов diffuseblm объекта модели линейной регрессии указывает, что объединенное предшествующее распределение (β, σ 2) пропорционально 1/σ2 (diffuse prior model).

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

В целом, когда вы создаете Байесов объект модели линейной регрессии, он задает объединенное предшествующее распределение и характеристики модели линейной регрессии только. Таким образом, объект модели является шаблоном, предназначенным для дальнейшего использования. А именно, чтобы включить данные в модель для анализа апостериорного распределения, передайте объект модели и данные к соответствующей объектной функции.

Создание

Синтаксис

PriorMdl = diffuseblm(NumPredictors)
PriorMdl = diffuseblm(NumPredictors,Name,Value)

Описание

пример

PriorMdl = diffuseblm(NumPredictors) создает Байесов объект модели линейной регрессии (PriorMdl), состоявший из предикторов NumPredictors и прерывания, и устанавливает свойство NumPredictors. Объединенное предшествующее распределение (β, σ 2) является рассеянной моделью. PriorMdl является шаблоном, который задает предшествующие дистрибутивы и размерность β.

пример

PriorMdl = diffuseblm(NumPredictors,Name,Value) свойства наборов (кроме NumPredictors) использование аргументов пары "имя-значение". Заключите каждое имя свойства в кавычки. Например, diffuseblm(2,'VarNames',["UnemploymentRate"; "CPI"]) задает имена этих двух переменных прогноза в модели.

Свойства

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

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

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

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

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

Примеры

свернуть все

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

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

\forall t моменты времени, εt серия независимых Гауссовых воздействий со средним значением 0 и отклонение σ2.

Предположим что коэффициенты регрессии β=[β0,...,β3] и отклонение воздействия σ2 случайные переменные, и у вас нет предварительных знаний их значений или распределения. Таким образом, вы хотите использовать неинформативный предшествующий Jeffreys: объединенное предшествующее распределение пропорционально 1/σ2.

Эти предположения и вероятность данных подразумевают аналитически послушное апостериорное распределение.

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

p = 3;
Mdl = bayeslm(p)
Mdl = 
  diffuseblm with properties:

    NumPredictors: 3
        Intercept: 1
         VarNames: {4x1 cell}

 
           | Mean  Std        CI95        Positive        Distribution       
-----------------------------------------------------------------------------
 Intercept |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 Beta(1)   |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 Beta(2)   |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 Beta(3)   |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 Sigma2    |  Inf  Inf  [   NaN,    NaN]    1.000   Proportional to 1/Sigma2 
 

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

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

Mdl.VarNames = ["IPI" "E" "WR"]
Mdl = 
  diffuseblm with properties:

    NumPredictors: 3
        Intercept: 1
         VarNames: {4x1 cell}

 
           | Mean  Std        CI95        Positive        Distribution       
-----------------------------------------------------------------------------
 Intercept |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 IPI       |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 E         |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 WR        |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 Sigma2    |  Inf  Inf  [   NaN,    NaN]    1.000   Proportional to 1/Sigma2 
 

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

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

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

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

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

Оцените крайние апостериорные распределения β и σ2.

PosteriorMdl = estimate(PriorMdl,X,y);
Method: Analytic posterior distributions
Number of observations: 62
Number of predictors:   4
 
           |   Mean      Std           CI95        Positive       Distribution      
------------------------------------------------------------------------------------
 Intercept | -24.2536   9.5314  [-43.001, -5.506]    0.006   t (-24.25, 9.37^2, 58) 
 IPI       |   4.3913   0.1535   [ 4.089,  4.693]    1.000   t (4.39, 0.15^2, 58)   
 E         |   0.0011   0.0004   [ 0.000,  0.002]    0.999   t (0.00, 0.00^2, 58)   
 WR        |   2.4682   0.3787   [ 1.723,  3.213]    1.000   t (2.47, 0.37^2, 58)   
 Sigma2    |  51.9790  10.0034   [35.965, 74.937]    1.000   IG(29.00, 0.00069)     
 

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

  • CI95, который содержит 95%-е Байесовы equitailed вероятные интервалы для параметров. Например, апостериорная вероятность, что коэффициент регрессии WR находится в [1.723, 3.213], 0.95.

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

  • Distribution, который содержит описания апостериорных распределений параметров. Например, крайнее апостериорное распределение IPI является t со средним значением 4,39, стандартным отклонением 0,15, и 58 степеней свободы.

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

PosteriorMdl.Mu
ans = 4×1

  -24.2536
    4.3913
    0.0011
    2.4682

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

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

p = 3;
PriorMdl = bayeslm(p,'ModelType','diffuse','VarNames',["IPI" "E" "WR"])
PriorMdl = 
  diffuseblm with properties:

    NumPredictors: 3
        Intercept: 1
         VarNames: {4x1 cell}

 
           | Mean  Std        CI95        Positive        Distribution       
-----------------------------------------------------------------------------
 Intercept |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 IPI       |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 E         |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 WR        |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 Sigma2    |  Inf  Inf  [   NaN,    NaN]    1.000   Proportional to 1/Sigma2 
 

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

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

Оцените условные апостериорные распределения β учитывая данные и σ2=2.

[Mdl,condPostMeanBeta,CondPostCovBeta] = estimate(PriorMdl,X,y,...
    'Sigma2',2);
Method: Analytic posterior distributions
Conditional variable: Sigma2 fixed at   2
Number of observations: 62
Number of predictors:   4
 
           |   Mean      Std          CI95         Positive     Distribution    
--------------------------------------------------------------------------------
 Intercept | -24.2536  1.8696  [-27.918, -20.589]    0.000   N (-24.25, 1.87^2) 
 IPI       |   4.3913  0.0301   [ 4.332,  4.450]     1.000   N (4.39, 0.03^2)   
 E         |   0.0011  0.0001   [ 0.001,  0.001]     1.000   N (0.00, 0.00^2)   
 WR        |   2.4682  0.0743   [ 2.323,  2.614]     1.000   N (2.47, 0.07^2)   
 Sigma2    |    2       0       [ 2.000,  2.000]     1.000   Fixed value        
 
Warning: Current syntax supports 6 output arguments, and will be removed in a future release. For supported output arguments, see <a href="matlab:helpview(fullfile(docroot,'econ','econ.map'),'blmestimate')">estimate</a>.

estimate возвращается 4 1 вектор средних значений и ковариационная матрица 4 на 4 условного апостериорного распределения β в condPostMeanBeta и CondPostCovBeta, соответственно. Кроме того, estimate отображает сводные данные условного апостериорного распределения β.

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

Отобразите Mdl.

Mdl
Mdl = 
  diffuseblm with properties:

    NumPredictors: 3
        Intercept: 1
         VarNames: {4x1 cell}

 
           | Mean  Std        CI95        Positive        Distribution       
-----------------------------------------------------------------------------
 Intercept |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 IPI       |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 E         |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 WR        |  0    Inf  [   NaN,    NaN]    0.500   Proportional to one      
 Sigma2    |  Inf  Inf  [   NaN,    NaN]    1.000   Proportional to 1/Sigma2 
 

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

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

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

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

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

PosteriorMdl = estimate(PriorMdl,X,y);
Method: Analytic posterior distributions
Number of observations: 62
Number of predictors:   4
 
           |   Mean      Std           CI95        Positive       Distribution      
------------------------------------------------------------------------------------
 Intercept | -24.2536   9.5314  [-43.001, -5.506]    0.006   t (-24.25, 9.37^2, 58) 
 IPI       |   4.3913   0.1535   [ 4.089,  4.693]    1.000   t (4.39, 0.15^2, 58)   
 E         |   0.0011   0.0004   [ 0.000,  0.002]    0.999   t (0.00, 0.00^2, 58)   
 WR        |   2.4682   0.3787   [ 1.723,  3.213]    1.000   t (2.47, 0.37^2, 58)   
 Sigma2    |  51.9790  10.0034   [35.965, 74.937]    1.000   IG(29.00, 0.00069)     
 

Извлеките следующее среднее значение β из следующей модели и следующей ковариации β из сводных данных оценки, возвращенных summarize.

estBeta = PosteriorMdl.Mu;
Summary = summarize(PosteriorMdl);
estBetaCov = Summary.Covariances{1:(end - 1),1:(end - 1)};

Предположим что, если коэффициент действительной заработной платы ниже 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.5341

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

Крайнее апостериорное распределение коэффициента WR является a t58, но сосредоточенный в 2,47 и масштабируемый 0,37. Непосредственно вычислите апостериорную вероятность, что коэффициент WR - меньше чем 2,5.

center = estBeta(isWR);
stdBeta = sqrt(diag(estBetaCov));
scale = stdBeta(isWR);
t = (2.5 - center)/scale;
dof = 68;
directProb = tcdf(t,dof)
directProb = 0.5333

Апостериорные вероятности почти идентичны.

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

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

p = 3;
PriorMdl = bayeslm(p,'ModelType','diffuse','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

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');
ylabel('rGNP');
xlabel('Year');
hold off

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

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

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

Прогноз RMSE является относительной мерой точности прогноза. А именно, вы оцениваете несколько моделей с помощью различных предположений. Модель с самым низким прогнозом RMSE является лучше всего выполняющей моделью тех сравниваемых.

Copyright 2018 The MathWorks, Inc.

Больше о

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

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

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

Введенный в R2017a