mixconjugateblm

Байесовская линейная регрессионая модель с сопряженными априорными функциями для выбора переменной стохастического поиска (SSVS)

Описание

Байесовская линейная регрессия объекта модели mixconjugateblm задает соединение предыдущего распределения коэффициентов регрессии и отклонения нарушения порядка (β, σ2) для реализации SSVS (см. [1] и [2]), принимая β и σ2 являются зависимыми случайными переменными.

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

Создание

Описание

пример

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

пример

PriorMdl = mixconjugateblm(NumPredictors,Name,Value) устанавливает свойства (кроме NumPredictors) с использованием аргументов пары "имя-значение". Заключайте каждое имя свойства в кавычки. Для примера, mixconjugateblm(3,'Probability',abs(rand(4,1))) задает случайные вероятности предыдущего режима для всех четырех коэффициентов в модели.

Свойства

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

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

PriorMdl.Intercept = false;

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

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

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

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

  • Имена переменных (VarNames)

  • Предшествующее среднее значение β (Mu)

  • Предыдущие отклонения β для каждого режима (V)

  • Матрица предыдущей корреляции β (Correlation)

  • Вероятности предыдущего режима (Probability)

Типы данных: 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

Компонентный средний гиперпараметр Гауссовой смеси перед β, заданный как (Intercept + NumPredictors) -на-2 числовая матрица. Первый столбец содержит предшествующие средства для компонента 1 (режим включения переменной, то есть γ = 1). Второй столбец содержит предшествующие средства для компонента 2 (режим исключения переменных, то есть γ = 0).

  • Если Intercept является false, затем Mu имеет NumPredictors строки. mixconjugateblm устанавливает предшествующее среднее значение NumPredictors коэффициенты, соответствующие столбцам в наборе данных предиктора, которые вы задаете во время оценки, симуляции или прогнозирования.

  • В противном случае Mu имеет NumPredictors + 1 элементы. Первый элемент соответствует предшествующему средству точки пересечения, а все другие элементы соответствуют переменным предиктора.

Совет

Для выполнения SSVS используйте значение по умолчанию Mu.

Пример: В модели с 3 коэффициентами 'Mu',[0.5 0; 0.5 0; 0.5 0] устанавливает компонент 1, предшествующий среднему значению всех коэффициентов, равным 0.5 и устанавливает компонент 2, предшествующий среднему значению всех коэффициентов, равным 0.

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

Компонентный коэффициент отклонения гиперпараметра Гауссовой смеси перед β, an (Intercept + NumPredictors) -на-2 положительная числовая матрица. Первый столбец содержит предыдущие коэффициенты отклонения для компонента 1 (режим включения переменной, то есть γ = 1). Второй столбец содержит предыдущие коэффициенты отклонения для компонента 2 (режим исключения переменных, то есть γ = 0). Независимо от режима или коэффициента, предыдущее отклонение коэффициента является коэффициентом отклонения σ2.

  • Если Intercept является false, затем V имеет NumPredictors строки. mixconjugateblm устанавливает предыдущий коэффициент отклонения NumPredictors коэффициенты, соответствующие столбцам в наборе данных предиктора, которые вы задаете во время оценки, симуляции или прогнозирования.

  • В противном случае V имеет NumPredictors + 1 элементы. Первый элемент соответствует предшествующему коэффициенту отклонения точки пересечения, а все другие элементы соответствуют переменным предиктора.

Совет

  • Для выполнения SSVS укажите больший коэффициент отклонения для режима 1, чем для режима 2 (для всех j, задайте V (j,1) > V (j,2)).

  • Для получения дополнительной информации о том, какое значение задать для V, см. [1].

Пример: В модели с 3 коэффициентами 'V',[100 1; 100 1; 100 1] устанавливает коэффициент отклонения компонента 1 для всех коэффициентов равным 100 и устанавливает компонент 2, предшествующий коэффициенту отклонения всех коэффициентов, равным 1.

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

Априорное распределение вероятностей для режимов включения и исключения переменных, заданное как (Intercept + NumPredictors) -на-1 числовой вектор значений в [0,1], или указатель на функцию в форме @fcnName, где fcnName - имя функции. Probability представляет априорному распределению вероятностей γ = {γ 1,..., γK}, где:

  • K = Intercept + NumPredictors, которое является количеством коэффициентов в регрессионной модели.

  • γk ∈ {0,1} для k = 1,..., K. Поэтому пространство выборки имеет величину 2K.

  • γk = 1 указывает на переменную VarNames(k) включена в модель, и γk = 0 указывает, что переменная исключена из модели.

Если Probability является числовым вектором:

  • Строки соответствуют именам переменных в VarNames. Для моделей, содержащих точку пересечения, предшествующая вероятность включения точки пересечения Probability(1).

  • Для k = 1,..., K, предыдущая вероятность исключения переменной k is 1 - Вероятность (k).

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

Если Probability является указателем на функцию, затем представляет пользовательское предшествующее распределение вероятностей режима включения переменной. Соответствующая функция должна иметь этот оператор объявления (имена аргумента и имена функции могут варьироваться):

logprob = regimeprior(varinc)

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

  • varinc является K -by-1 логическим вектором. Элементы соответствуют именам переменных в VarNames и указать режим, в котором существует соответствующая переменная. varinc (k) = true указывает VarName (k) включен в модель, и varinc (k) = false указывает, что он исключен из модели.

Вы можете включать больше входные параметры, но они должны быть известны при вызове mixconjugateblm.

Для получения дополнительной информации о том, какое значение задать для Probability, см. [1].

Пример: В модели с 3 коэффициентами 'Probability',rand(3,1) присваивает каждому коэффициенту случайные предыдущие вероятности включения переменных.

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

Матрица предыдущей корреляции β для обоих компонентов в модели смеси, заданная как (Intercept + NumPredictors) -by- (Intercept + NumPredictors) числовая, положительно определенная матрица. Следовательно, предшествующая ковариационная матрица для j компонента в модели смеси sigma2 * diag (sqrt (V (:, j)) * Корреляция * diag (sqrt (V (:, j))), где sigma2 является σ2 и V - матрица коэффициентов отклонения коэффициентов.

Строки и столбцы соответствуют именам переменных в VarNames.

По умолчанию коэффициенты регрессии являются некоррелированными, обусловленными режимом.

Примечание

Можно задать любую числовую матрицу соответствующего размера. Однако, если ваша спецификация не положительно определена, mixconjugateblm выдает предупреждение и заменяет вашу спецификацию на CorrelationPD, где:

CorrelationPD = 0.5*(Correlation + Correlation.');

Для получения дополнительной информации о том, какое значение задать для Correlation, см. [1].

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

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

A должен быть по крайней мере –(Intercept + NumPredictors)/2.

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

Функциональную форму обратного гамма- распределения см. в Аналитически отслеживаемых апостериорах.

Пример: 'A',0.1

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

Масштабный параметр обратной гаммы перед σ2, заданный как положительная скалярная величина или Inf.

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

Пример: 'B',5

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

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

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

Примеры

свернуть все

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

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

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

Примите эти предыдущие распределения для k = 0,...,3:

  • βk|σ2,γk=γkσVk1Z1+(1-γk)σVk2Z2, где Z1 и Z2 являются независимыми, стандартными нормальными случайными переменными. Поэтому коэффициенты имеют Гауссово распределение смеси. Предположим, что все коэффициенты являются условно независимыми, априори, но они зависят от отклонения нарушения порядка.

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

  • γk{0,1}и представляет переменную режима включения случайных переменных с дискретным равномерным распределением.

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

p = 3;
PriorMdl = mixconjugateblm(p);

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

Кроме того, можно создать предыдущую модель для SSVS, передав количество предикторов в bayeslm и установка ModelType аргумент пары "имя-значение" в 'mixconjugate'.

MdlBayesLM = bayeslm(p,'ModelType','mixconjugate')
MdlBayesLM = 
  mixconjugateblm with properties:

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

 
           |  Mean     Std         CI95        Positive      Distribution     
------------------------------------------------------------------------------
 Intercept |  0      1.5890  [-3.547,  3.547]    0.500   Mixture distribution 
 Beta(1)   |  0      1.5890  [-3.547,  3.547]    0.500   Mixture distribution 
 Beta(2)   |  0      1.5890  [-3.547,  3.547]    0.500   Mixture distribution 
 Beta(3)   |  0      1.5890  [-3.547,  3.547]    0.500   Mixture distribution 
 Sigma2    | 0.5000  0.5000  [ 0.138,  1.616]    1.000   IG(3.00,    1)       
 

Mdl и MdlBayesLM являются эквивалентными объектами модели.

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

PriorMdl.VarNames = ["IPI" "E" "WR"]
PriorMdl = 
  mixconjugateblm with properties:

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

 
           |  Mean     Std         CI95        Positive      Distribution     
------------------------------------------------------------------------------
 Intercept |  0      1.5890  [-3.547,  3.547]    0.500   Mixture distribution 
 IPI       |  0      1.5890  [-3.547,  3.547]    0.500   Mixture distribution 
 E         |  0      1.5890  [-3.547,  3.547]    0.500   Mixture distribution 
 WR        |  0      1.5890  [-3.547,  3.547]    0.500   Mixture distribution 
 Sigma2    | 0.5000  0.5000  [ 0.138,  1.616]    1.000   IG(3.00,    1)       
 

MATLAB ® связывает имена переменных с коэффициентами регрессии на отображениях.

Постройте график предыдущих распределений.

plot(PriorMdl);

Figure contains 5 axes. Axes 1 with title Intercept contains an object of type line. Axes 2 with title IPI contains an object of type line. Axes 3 with title E contains an object of type line. Axes 4 with title WR contains an object of type line. Axes 5 with title Sigma2 contains an object of type line.

Предшествующее распределение каждого коэффициента является смесью двух Гауссов: оба компонента имеют среднее значение нуля, но компонент 1 имеет большое отклонение относительно компонента 2. Поэтому их распределения центрируются в нуле и имеют внешний вид «шип и сляб».

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

Создайте предыдущую модель для выполнения SSVS. Предположим, что β и σ2 являются зависимыми (модель сопряженной смеси). Задайте количество предикторов p и имена коэффициентов регрессии.

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

Отображение вероятностей предыдущего режима и Гауссовых коэффициентов отклонения смеси предыдущего β.

priorProbabilities = table(PriorMdl.Probability,'RowNames',PriorMdl.VarNames,...
    'VariableNames',"Probability")
priorProbabilities=4×1 table
                 Probability
                 ___________

    Intercept        0.5    
    IPI              0.5    
    E                0.5    
    WR               0.5    

priorV = array2table(PriorMdl.V,'RowNames',PriorMdl.VarNames,...
    'VariableNames',["gammaIs1" "gammaIs0"])
priorV=4×2 table
                 gammaIs1    gammaIs0
                 ________    ________

    Intercept       10         0.1   
    IPI             10         0.1   
    E               10         0.1   
    WR              10         0.1   

PriorMdl сохраняет вероятности предыдущего режима в Probability свойство и коэффициенты отклонения режима в V свойство. Предшествующая вероятность включения переменной по умолчанию составляет 0,5. Коэффициенты отклонения по умолчанию для каждого коэффициента - 10 для режима включения переменной и 0,01 для режима исключения переменной.

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

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

Реализуйте SSVS путем оценки маргинальных апостериорных распределений β и σ2. Поскольку SSVS использует марковскую цепь Monte Carlo (MCMC) для оценки, установите начальное число случайных чисел, чтобы воспроизвести результаты.

rng(1);
PosteriorMdl = estimate(PriorMdl,X,y);
Method: MCMC sampling with 10000 draws
Number of observations: 62
Number of predictors:   4
 
           |   Mean      Std           CI95        Positive  Distribution  Regime 
----------------------------------------------------------------------------------
 Intercept | -18.8333  10.1851  [-36.965,  0.716]    0.037     Empirical   0.8806 
 IPI       |   4.4554   0.1543   [ 4.165,  4.764]    1.000     Empirical   0.4545 
 E         |   0.0010   0.0004   [ 0.000,  0.002]    0.997     Empirical   0.0925 
 WR        |   2.4686   0.3615   [ 1.766,  3.197]    1.000     Empirical   0.1734 
 Sigma2    |  47.7557   8.6551   [33.858, 66.875]    1.000     Empirical    NaN   
 

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

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

  • Regime, который содержит маргинальную апостериорную вероятность переменного включения (γ=1 для переменной). Для примера, апостериорная вероятность того, что E должен быть включен в модель 0,0925.

Принимая, что переменные с Regime < 0,1 следует удалить из модели, результаты показывают, что можно исключить уровень безработицы из модели.

По умолчанию estimate рисует и отбрасывает сгорающую выборку размера 5000. Однако передовой практикой является проверка следового графика рисок на предмет адекватного смешивания и отсутствия переходного процесса. Постройте график трассировки рисунков для каждого параметра. Вы можете получить доступ к рисункам, которые составляют распределение (свойства BetaDraws и Sigma2Draws) с использованием записи через точку.

figure;
for j = 1:(p + 1)
    subplot(2,2,j);
    plot(PosteriorMdl.BetaDraws(j,:));
    title(sprintf('%s',PosteriorMdl.VarNames{j}));
end

Figure contains 4 axes. Axes 1 with title Intercept contains an object of type line. Axes 2 with title IPI contains an object of type line. Axes 3 with title E contains an object of type line. Axes 4 with title WR contains an object of type line.

figure;
plot(PosteriorMdl.Sigma2Draws);
title('Sigma2');

Figure contains an axes. The axes with title Sigma2 contains an object of type line.

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

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

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

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

path = fullfile(matlabroot,'examples','econ','main');
addpath(path);

Предположим следующее:

  • Точка пересечения находится в модели с вероятностью 0,9.

  • IPI и E находятся в модели с вероятностью 0,75.

  • Если E включено в модель, затем вероятность того, что WR включено в модель 0,9.

  • Если E исключается из модели, тогда вероятность того, что WR включено - 0,25.

Объявить функцию с именем priorssvsexample.m что:

  • Принимает логический вектор, указывающий, есть ли точка пересечения и переменные в модели (true для включения модели). Элемент 1 соответствует точке пересечения, а остальные элементы соответствуют переменным в данных.

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

function logprior = priorssvsexample(varinc)
%PRIORSSVSEXAMPLE Log prior regime probability distribution for SSVS
%   PRIORSSVSEXAMPLE is an example of a custom log prior regime probability
%   distribution for SSVS with dependent random variables. varinc is
%   a 4-by-1 logical vector indicating whether 4 coefficients are in a model
%   and logPrior is a numeric scalar representing the log of the prior
%   distribution of the regime probabilities.
%   
%   Coefficients enter a model according to these rules:
%       * varinc(1) is included with probability 0.9.
%       * varinc(2) and varinc(3) are in the model with probability 0.75.
%       * If varinc(3) is included in the model, then the probability that
%       varinc(4) is included in the model is 0.9.
%       * If varinc(3) is excluded from the model, then the probability
%       that varinc(4) is included is 0.25.

logprior = log(0.9) + 2*log(0.75) + log(varinc(3)*0.9 + (1-varinc(3))*0.25);

end


priorssvsexample.m является специфичным для примера файлом, включенным в Econometrics Toolbox™. Для доступа к нему введите edit priorssvsexample.m в командной строке.

Создайте предыдущую модель для выполнения SSVS. Предположим, что$\beta$ и$\sigma^2$ являются (модель сопряженной смеси). Задайте количество предикторов p имена коэффициентов регрессии и пользовательское предшествующее априорное распределение вероятностей режимов включения переменных.

p = 3;
PriorMdl = mixconjugateblm(p,'VarNames',["IPI" "E" "WR"],...
    'Probability',@priorssvsexample);

Реализуйте SSVS путем оценки маргинальных апостериорных распределений$\beta$ и. $\sigma^2$Поскольку SSVS использует MCMC для оценки, установите начальное число случайных чисел, чтобы воспроизвести результаты.

rng(1);
PosteriorMdl = estimate(PriorMdl,X,y);
Method: MCMC sampling with 10000 draws
Number of observations: 62
Number of predictors:   4
 
           |   Mean      Std           CI95        Positive  Distribution  Regime 
----------------------------------------------------------------------------------
 Intercept | -18.7971  10.1644  [-37.002,  0.765]    0.039     Empirical   0.8797 
 IPI       |   4.4559   0.1530   [ 4.166,  4.760]    1.000     Empirical   0.4623 
 E         |   0.0010   0.0004   [ 0.000,  0.002]    0.997     Empirical   0.2665 
 WR        |   2.4684   0.3618   [ 1.759,  3.196]    1.000     Empirical   0.1727 
 Sigma2    |  47.7391   8.6741   [33.823, 67.024]    1.000     Empirical    NaN   
 

Принимая, что переменные с Regime < 0,1 следует удалить из модели, результаты показывают, что можно включать все переменные в модель.

Потому что этот пример требует path чтобы получить доступ к файлам конкретного примера, очистите путем удаления path из пути MATLAB ®.

rmpath(path);

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

Выполните SSVS:

  1. Создайте байесовскую регрессионую модель для SSVS с сопряженным предшествующим для вероятности данных. Используйте настройки по умолчанию.

  2. Продержитесь последние 10 периодов данных из оценки.

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

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

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

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

Подробнее о

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

Алгоритмы

Апостериор закрытой формы существует для априоров сопряженной смеси в среде SSVS с K коэффициентами. Однако, потому что предыдущий β | σ2γ, маргинализированный по γ, равен 2K-компонентная Гауссовская смесь, MATLAB® использует MCMC вместо этого для выборки из апостериорной для числовой устойчивости.

Альтернативная функциональность

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

Ссылки

[1] Джордж, Э. И. и Р. Э. Маккаллох. «Выбор переменной через выборку Гиббса». Журнал Американской статистической ассоциации. Том 88, № 423, 1993, с. 881-889.

[2] Koop, G., D. J. Porier, and J. L. Tobias. Байесовские эконометрические методы. Нью-Йорк, Нью-Йорк: Cambridge University Press, 2007.

Введенный в R2018b