exponenta event banner

empiricalblm

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

Описание

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

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

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

Создание

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

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

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

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

Синтаксис

Описание

пример

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

пример

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

Свойства

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

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

PriorMdl.Intercept = false;

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

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

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

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

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

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

СтоимостьОписание
falseИсключить пересечение из регрессионной модели. Следовательно, β является p-мерный вектор, где p - значение NumPredictors.
trueВключить пересечение в регрессионную модель. Следовательно, β является (p + 1) -мерный вектор. Эта спецификация заставляет T-by-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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

Для всех t-временных точек αt - это ряд независимых гауссовых возмущений со средним значением 0 и дисперсией start2.

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

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

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

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

Создайте предыдущую модель normal-inverse-gamma semaconjugate для параметров линейной регрессии. Укажите количество предикторов 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'};

Оцените краевые апостериорные распределения β и start2.

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 объект модели, хранящий черточки из задних распределений β и start2, заданных данными. estimate отображает сводку по краевым задним распределениям в окне команд. Строки сводки соответствуют коэффициентам регрессии и дисперсии возмущений, а столбцы - характеристикам заднего распределения. Характеристики включают в себя:

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

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

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

Рассмотрим модель линейной регрессии в разделе Создание эмпирической предыдущей модели.

Создайте предыдущую модель normal-inverse-gamma semaconjugate для параметров линейной регрессии. Укажите количество предикторов 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'};

Оцените краевые апостериорные распределения β и start2.

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 периодов данных из оценки, чтобы использовать их для прогнозирования реального ВНП. Выключите отображение оценки.

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 вычислить эффективный размер выборки (ESS), который представляет собой количество выборок, необходимых для получения разумной задней статистики и выводов. Его формула

    ESS=1∑jwj2.

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

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

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

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

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

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

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

Представлен в R2017a