Байесова модель линейной регрессии с полусопряженным уголовным прошлым для стохастического поискового выбора переменной (SSVS)
Байесов объект модели линейной регрессии mixsemiconjugateblm
задает объединенное предшествующее распределение коэффициентов регрессии и отклонения воздействия (β, σ 2) для реализации SSVS (см. [1] и [2]) принятие β и σ 2 является зависимыми случайными переменными.
В целом, когда вы создаете Байесов объект модели линейной регрессии, он задает объединенное предшествующее распределение и характеристики модели линейной регрессии только. Таким образом, объект модели является шаблоном, предназначенным для дальнейшего использования. А именно, чтобы включить данные в модель для анализа апостериорного распределения и выбора функции, передайте объект модели и данные к соответствующей объектной функции.
PriorMdl = mixsemiconjugateblm(NumPredictors)
PriorMdl = mixsemiconjugateblm(NumPredictors,Name,Value)
создает Байесов объект модели линейной регрессии (PriorMdl
= mixsemiconjugateblm(NumPredictors
)PriorMdl
), состоявший из предикторов NumPredictors
и прерывания, и устанавливает свойство NumPredictors
. Объединенное предшествующее распределение (β, σ 2) подходит для реализации SSVS для выбора предиктора [2]. PriorMdl
является шаблоном, который задает предшествующие дистрибутивы и размерность β.
свойства наборов (кроме PriorMdl
= mixsemiconjugateblm(NumPredictors
,Name,Value
)NumPredictors
) использование аргументов пары "имя-значение". Заключите каждое имя свойства в кавычки. Например, mixsemiconjugateblm(3,'Probability',abs(rand(4,1)))
задает случайные предшествующие вероятности режима для всех четырех коэффициентов в модели.
Можно установить перезаписываемые значения свойств, когда вы создаете объект модели при помощи синтаксиса аргумента пары "имя-значение", или после того, как вы создаете объект модели при помощи записи через точку. Например, чтобы исключить прерывание из модели, войти
PriorMdl.Intercept = false;
NumPredictors
— Количество переменных прогнозаКоличество переменных прогноза в Байесовом несколько модель линейной регрессии, заданная как неотрицательное целое число.
NumPredictors
должен совпасть с количеством столбцов в ваших данных о предикторе, которые вы задаете во время образцовой оценки или симуляции.
При определении NumPredictors
исключите любой термин прерывания для значения.
После создания модели, если вы изменяете значения NumPredictors
с помощью записи через точку, затем эти параметры возвращаются к значениям по умолчанию:
Имена переменных (VarNames
)
Предшествующее среднее значение β (Mu
)
Предшествующие отклонения β для каждого режима (V
)
Предшествующая корреляционная матрица β (Correlation
)
Предшествующие вероятности режима (Probability
)
Типы данных: double
Intercept
— Отметьте для включения прерывания модели регрессииtrue
(значение по умолчанию) | false
Отметьте для включения прерывания модели регрессии, заданного как значение в этой таблице.
Значение | Описание |
---|---|
false | Исключите прерывание из модели регрессии. Поэтому β является p - размерный вектор, где p является значением NumPredictors . |
true | Включайте прерывание в модель регрессии. Поэтому β (p + 1) - размерный вектор. Эта спецификация заставляет T-by-1 вектор из единиц предварительно ожидаться к данным о предикторе во время оценки и симуляции. |
Если вы включаете столбец из единиц в данных о предикторе для термина прерывания, то установленный Intercept
к false
.
Пример: 'Intercept',false
Типы данных: логический
Varnames
Имена переменной прогнозаПеременная прогноза называет для отображений, заданных как вектор строки или вектор ячейки векторов символов. VarNames
должен содержать элементы NumPredictors
.
является именем переменной в столбце VarNames(j)
j
набора данных предиктора, который вы задаете во время оценки, симуляции или прогнозирования.
Значением по умолчанию является
, где {'Beta(1)','Beta(2),...,Beta(p)}
p
является значением NumPredictors
.
Пример: 'VarNames',["UnemploymentRate"; "CPI"]
Типы данных: string
| cell
| char
\mu
Покомпонентно имейте в виду гиперпараметр Гауссовой смеси, предшествующей на βzeros(Intercept + NumPredictors,2)
(значение по умолчанию) | числовая матрицаПокомпонентно имейте в виду гиперпараметр Гауссовой смеси, предшествующей на β, заданном как (Intercept + NumPredictors
)-by-2 числовая матрица. Первый столбец содержит предшествующие средние значения для 1 компонента (режим переменного включения, то есть, γ = 1). Второй столбец содержит предшествующие средние значения для 2 компонента (режим переменного исключения, то есть, γ = 0).
Если Intercept
является false
, то Mu
имеет строки NumPredictors
. mixsemiconjugateblm
устанавливает предшествующее среднее значение коэффициентов NumPredictors
, соответствующих столбцам в наборе данных предиктора, который вы задаете во время оценки, симуляции или прогнозирования.
В противном случае Mu
имеет элементы NumPredictors + 1
. Первый элемент соответствует предшествующим средним значениям прерывания, и все другие элементы соответствуют переменным прогноза.
Чтобы выполнить SSVS, используйте значение по умолчанию Mu
.
Пример: В модели с 3 коэффициентами 'Mu',[0.5 0; 0.5 0; 0.5 0]
устанавливает 1 предшествующее среднее значение компонента всех коэффициентов к 0.5
и устанавливает 2 предшествующих средних значения компонента всех коэффициентов к 0
.
Типы данных: double
V
Покомпонентный гиперпараметр отклонения Гауссовой смеси, предшествующей на βrepmat([10 0.1],Intercept + NumPredictors,1)
(значение по умолчанию) | положительная числовая матрицаПокомпонентный гиперпараметр отклонения Гауссовой смеси, предшествующей на β, (Intercept + NumPredictors
)-by-2 положительная числовая матрица. Первый столбец содержит предшествующие факторы отклонения для 1 компонента (режим переменного включения, то есть, γ = 1). Второй столбец содержит предшествующие факторы отклонения для 2 компонента (режим переменного исключения, то есть, γ = 0).
Если Intercept
является false
, то V
имеет строки NumPredictors
. mixsemiconjugateblm
устанавливает предшествующий фактор отклонения коэффициентов 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
Probability
— Распределение априорной вероятности для переменных режимов включения и исключения0.5*ones(Intercept + NumPredictors,1)
(значение по умолчанию) | числовой вектор значений в [0,1] | указатель на функциюРаспределение априорной вероятности для переменных режимов включения и исключения, заданных как (Intercept
+ NumPredictors
)-by-1 числовой вектор значений в [0,1] или указателя на функцию в форме @fcnName
, где fcnName
является именем функции. Probability
представляет распределение априорной вероятности γ = {γ 1, …, γK}, где:
K = Intercept
+ NumPredictors
, который является количеством коэффициентов в модели регрессии.
γk ∈ {0,1} для k = 1, …, K. Поэтому выборочное пространство имеет кардинальность 2K.
γk = 1 указывает, что переменная VarNames
включена в модель, и γk = 0 указывает, что переменная исключена из модели.(k)
Если Probability
является числовым вектором:
Строки соответствуют именам переменных в VarNames
. Для моделей, содержащих прерывание, априорной вероятностью для включения прерывания является Probability(1)
.
Для
= 1, …, K, априорная вероятность для исключения переменной k
равняется 1 – k
Probability(k).
Априорные вероятности режима переменного включения, среди всех переменных и прерывания, независимы.
Если Probability
является указателем на функцию, то он представляет пользовательское предшествующее распределение вероятностей режима переменного включения. Соответствующая функция должна иметь этот оператор объявления (имена аргумента, и имена функций могут отличаться):
logprob = regimeprior(varinc)
logprob
является числовым скаляром, представляющим журнал предшествующего распределения. Можно записать предшествующему распределению до коэффициента пропорциональности.
varinc
является K-by-1 логический вектор. Элементы соответствуют именам переменных в VarNames
и указывают на режим, в котором существует соответствующая переменная.
= varinc(k)
true
указывает
включен в модель и , что VarName(k)
=varinc(k)
, false
указывает, что исключен из модели.
Можно включать больше входных параметров, но они должны быть известны, когда вы вызываете mixsemiconjugateblm
.
Для получения дополнительной информации, на какой значение задать для Probability
, см. [1].
Пример: В модели с 3 коэффициентами 'Probability',rand(3,1)
присваивает случайные предшествующие вероятности переменного включения каждому коэффициенту.
Типы данных: double
| function_handle
Корреляция
Предшествующая корреляционная матрица βeye(Intercept + NumPredictors)
(значение по умолчанию) | числовая, положительная определенная матрицаПредшествующая корреляционная матрица β для обоих компонентов в модели смеси, заданной как (Intercept
+ NumPredictors
) (Intercept
+ NumPredictors
) числовая, положительная определенная матрица. Следовательно, предшествующей ковариационной матрицей для
компонента j
в модели смеси является
, где diag(sqrt(V(:,j)))*Correlation*diag(sqrt(V(:,j)))
V
является матрицей содействующих отклонений.
Строки и столбцы соответствуют именам переменных в VarNames
.
По умолчанию коэффициенты регрессии являются некоррелироваными, условными на режиме.
Можно предоставить любую соответственно размерную числовую матрицу. Однако, если ваша спецификация не положительна определенный, mixsemiconjugateblm
выдает предупреждение и заменяет вашу спецификацию на CorrelationPD
, где:
CorrelationPD = 0.5*(Correlation + Correlation.');
Для получения дополнительной информации, на какой значение задать для Correlation
, см. [1].
Типы данных: double
A
Сформируйте гиперпараметр обратной гаммы, предшествующей на σ 23
(значение по умолчанию) | числовой скалярСформируйте гиперпараметр обратной гаммы, предшествующей на σ 2, заданный в виде числа.
A
должен быть, по крайней мере, –(Intercept + NumPredictors)/2
.
С B
, сохраненным зафиксированным, обратное гамма распределение становится более высоким и более сконцентрированным, когда A
увеличивается. Эта характеристика взвешивает предшествующую модель σ 2 в большей степени, чем вероятность во время следующей оценки.
Для функциональной формы обратного гамма распределения смотрите Аналитически Послушное Последующее поколение.
Пример: 'A',0.1
Типы данных: double
B
Масштабируйте гиперпараметр обратной гаммы, предшествующей на σ 21
(значение по умолчанию) | положительная скалярная величина | Inf
Масштабный коэффициент обратной гаммы, предшествующей на σ 2, заданный как положительная скалярная величина или Inf
.
С A
, сохраненным зафиксированным, обратное гамма распределение становится более высоким и более сконцентрированным, когда B
увеличивается. Эта характеристика взвешивает предшествующую модель σ 2 в большей степени, чем вероятность во время следующей оценки.
Пример: 'B',5
Типы данных: double
estimate | Выполните выбор переменной прогноза для Байесовых моделей линейной регрессии |
simulate | Моделируйте коэффициенты регрессии и отклонение воздействия Байесовой модели линейной регрессии |
forecast | Предскажите ответы Байесовой модели линейной регрессии |
plot | Визуализируйте предшествующую и следующую плотность Байесовых параметров модели линейной регрессии |
summarize | Статистика сводных данных распределения Байесовой модели линейной регрессии для выбора переменной прогноза |
Считайте несколько моделью линейной регрессии, которая предсказывает США действительный валовой национальный продукт (GNPR
) с помощью линейной комбинации индекса промышленного производства (IPI
), общая занятость (E
) и действительная заработная плата (WR
).
\forall , серия независимых Гауссовых воздействий со средним значением 0 и отклонение .
Примите эти предшествующие дистрибутивы для = 0,...,3:
, где и независимые, стандартные нормальные случайные переменные. Поэтому коэффициенты имеют Гауссово распределение смеси. Примите, что все коэффициенты условно независимы, априорно.
. и форма и шкала, соответственно, обратного гамма распределения.
и это представляет переменную режима включения случайной переменной с дискретным равномерным распределением.
Создайте предшествующую модель для SSVS. Задайте количество предикторов p
.
p = 3; PriorMdl = mixsemiconjugateblm(p);
PriorMdl
является mixsemiconjugateblm
Байесов объект модели линейной регрессии, представляющий предшествующее распределение отклонения воздействия и коэффициентов регрессии. mixsemiconjugateblm
отображает сводные данные предшествующих дистрибутивов в командной строке.
Также можно создать предшествующую модель для SSVS путем передачи количества предикторов к bayeslm
и установки аргумента пары "имя-значение" ModelType
'mixsemiconjugate'
.
MdlBayesLM = bayeslm(p,'ModelType','mixsemiconjugate')
MdlBayesLM = mixsemiconjugateblm 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 2.2472 [-5.201, 5.201] 0.500 Mixture distribution Beta(1) | 0 2.2472 [-5.201, 5.201] 0.500 Mixture distribution Beta(2) | 0 2.2472 [-5.201, 5.201] 0.500 Mixture distribution Beta(3) | 0 2.2472 [-5.201, 5.201] 0.500 Mixture distribution Sigma2 | 0.5000 0.5000 [ 0.138, 1.616] 1.000 IG(3.00, 1)
Mdl
и MdlBayesLM
являются эквивалентными объектами модели.
Можно установить перезаписываемые значения свойств созданных моделей с помощью записи через точку. Определите имена коэффициента регрессии к соответствующим именам переменных.
PriorMdl.VarNames = ["IPI" "E" "WR"]
PriorMdl = mixsemiconjugateblm 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 2.2472 [-5.201, 5.201] 0.500 Mixture distribution IPI | 0 2.2472 [-5.201, 5.201] 0.500 Mixture distribution E | 0 2.2472 [-5.201, 5.201] 0.500 Mixture distribution WR | 0 2.2472 [-5.201, 5.201] 0.500 Mixture distribution Sigma2 | 0.5000 0.5000 [ 0.138, 1.616] 1.000 IG(3.00, 1)
MATLAB® сопоставляет имена переменных к коэффициентам регрессии в отображениях.
Постройте предшествующие дистрибутивы.
plot(PriorMdl);
Предшествующее распределение каждого коэффициента является смесью двух Gaussians: оба компонента имеют среднее значение нуля, но 1 компонента имеет большое отклонение относительно 2 компонента. Поэтому их дистрибутивы сосредоточены в нуле и имеют внешний вид скачка-и-плиты.
Полагайте, что модель линейной регрессии в Создает Предшествующую Модель для SSVS.
Создайте предшествующую модель для выполнения SSVS. AssumeThat и независимы (полусопряженная модель смеси). Задайте количество предикторов p
и имена коэффициентов регрессии.
p = 3; PriorMdl = mixsemiconjugateblm(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 путем оценки крайних апостериорных распределений и . Поскольку SSVS использует Цепь Маркова Монте-Карло (MCMC) для оценки, установите seed случайных чисел воспроизводить результаты.
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 | -1.5629 2.6816 [-7.879, 2.703] 0.300 Empirical 0.5901 IPI | 4.6217 0.1222 [ 4.384, 4.865] 1.000 Empirical 1 E | 0.0004 0.0002 [ 0.000, 0.001] 0.976 Empirical 0.0918 WR | 2.6098 0.3691 [ 1.889, 3.347] 1.000 Empirical 1 Sigma2 | 50.9169 9.4955 [35.838, 72.707] 1.000 Empirical NaN
PosteriorMdl
является объектом модели empiricalblm
, который хранилища чертит от апостериорных распределений и учитывая данные. estimate
отображает сводные данные крайних апостериорных распределений в командной строке. Строки сводных данных соответствуют коэффициентам регрессии и отклонению воздействия, и столбцы соответствуют характеристикам апостериорного распределения. Характеристики включают:
CI95
, который содержит 95%-е Байесовы equitailed вероятные интервалы для параметров. Например, апостериорная вероятность, что коэффициент регрессии E
находится в [0.000, 0.001]
, 0.95.
Regime
, который содержит крайнюю апостериорную вероятность переменного включения ( для переменной). Например, апостериорная вероятность, что E
должен быть включен в модель, 0.0918.
Предположение, что переменные с 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;
plot(PosteriorMdl.Sigma2Draws);
title('Sigma2');
Графики трассировки показывают, что ничьи, кажется, смешиваются хорошо. Графики не показывают обнаруживаемой быстротечности или последовательной корреляции, и ничьи не переходят между состояниями.
Полагайте, что модель линейной регрессии в Создает Предшествующую Модель для 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. Примите, что и независимы (полусопряженная модель смеси). Задайте количество предикторов p
имена коэффициентов регрессии и пользовательское распределение априорной вероятности режимов переменного включения.
p = 3; PriorMdl = mixsemiconjugateblm(p,'VarNames',["IPI" "E" "WR"],... 'Probability',@priorssvsexample);
Реализуйте SSVS путем оценки крайних апостериорных распределений и. Поскольку SSVS использует MCMC для оценки, установите seed случайных чисел воспроизводить результаты.
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 | -1.4658 2.6046 [-7.781, 2.546] 0.308 Empirical 0.5516 IPI | 4.6227 0.1222 [ 4.385, 4.866] 1.000 Empirical 1 E | 0.0004 0.0002 [ 0.000, 0.001] 0.976 Empirical 0.2557 WR | 2.6105 0.3692 [ 1.886, 3.346] 1.000 Empirical 1 Sigma2 | 50.9621 9.4999 [35.860, 72.596] 1.000 Empirical NaN
Принятие, что переменные с Regime
<0.1 должны быть удалены из модели, результаты, предполагает, что можно включать все переменные в модель.
Поскольку этот пример требует, чтобы path
получил доступ к специфичным для примера файлам, вымылся путем удаления path
из пути MATLAB®.
rmpath(path);
Полагайте, что модель регрессии в Создает Предшествующую Модель для SSVS.
Выполните SSVS:
Создайте Байесовую модель регрессии для SSVS с полусопряженным предшествующим для вероятности данных. Используйте настройки по умолчанию.
Протяните последние 10 периодов данных из оценки.
Оцените крайние апостериорные распределения.
p = 3; PriorMdl = bayeslm(p,'ModelType','mixsemiconjugate','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 = 4.5935
Прогноз RMSE является относительной мерой точности прогноза. А именно, вы оцениваете несколько моделей с помощью различных предположений. Модель с самым низким прогнозом RMSE является лучше всего выполняющей моделью тех сравниваемых.
Когда вы выполняете Байесовую регрессию с SSVS, лучшая практика состоит в том, чтобы настроить гиперпараметры. Один способ сделать так состоит в том, чтобы оценить прогноз RMSE по сетке гиперзначений параметров и выбрать значение, которое минимизирует прогноз RMSE.
Copyright 2018 The MathWorks, Inc.
Bayesian linear regression model обрабатывает параметры β и σ 2 в модели yt нескольких линейных регрессий (MLR) = xt β + εt как случайные переменные.
В течение многих времен t = 1..., T:
yt является наблюдаемым ответом.
xt является 1 на (p + 1) вектор - строка из наблюдаемых величин предикторов p. Размещать образцовое прерывание, x 1t = 1 для всего t.
β (p + 1)-by-1 вектор-столбец коэффициентов регрессии, соответствующих переменным, которые составляют столбцы xt.
εt является случайным воздействием со средним значением нуля и Cov (ε) = σ 2IT×T, в то время как ε является T-by-1 вектор, содержащий все воздействия. Эти предположения подразумевают, что вероятность данных
ϕ (yt; xtβ, σ 2) является Гауссовой плотностью вероятности со средним xtβ и отклонением σ 2 оцененных в yt;.
Прежде, чем рассмотреть данные, вы налагаете предположение joint prior distribution на (β, σ 2). В Байесовом анализе вы обновляете распределение параметров при помощи информации о параметрах, полученных из вероятности данных. Результатом является joint posterior distribution (β, σ 2) или conditional posterior distributions параметров.
Stochastic search variable selection (SSVS) является методом выбора переменной прогноза для Байесовой линейной регрессии, которая ищет пробел потенциальных моделей для моделей с высокой апостериорной вероятностью и составляет в среднем модели, которые это находит после того, как это завершает поиск.
SSVS принимает, что предшествующее распределение каждого коэффициента регрессии является смесью двух Распределений Гаусса, и предшествующее распределение σ 2 является обратной гаммой с формой A и шкала B. Позвольте γ = {γ 1, …, γK} быть скрытым, случайным regime indicator для коэффициентов регрессии β, где:
K является количеством коэффициентов в модели (Intercept
+ NumPredictors
). γk = 1 среднее значение, что βk |σ2, γk является Гауссовым со средним значением 0 и отклонением c 1.
γk = 0 средних значений, что предиктор является Гауссовым со средним значением 0 и отклонением c 2.
Функция вероятностной меры управляет распределением γ, и выборочное пространство γ состоит из 2K элементы.
А именно, учитывая γk и σ 2, βk = γk c 1Z + (1 – γk) c 2Z, где:
Z является стандартной нормальной случайной переменной.
Для сопряженных моделей (mixconjugateblm
), cj = σ 2Vj, j = 1,2.
Для полусопряженных моделей (mixsemiconjugateblm
), cj = Vj.
c 1 является относительно большим, который подразумевает, что соответствующий предиктор, более вероятно, будет в модели. c 2 является относительно маленьким, который подразумевает, что соответствующий предиктор, менее вероятно, будет в модели, потому что распределение является плотным приблизительно 0.
В этой среде, если потенциал существует в общей сложности для коэффициентов K в модели, то пробел имеет 2K модели, через которые можно искать. Поскольку вычисление апостериорных вероятностей всех 2K моделей может быть в вычислительном отношении дорогим, SSVS использует MCMC, чтобы выбрать γ = {γ 1, …, γK} и оценить апостериорные вероятности соответствующих моделей. Модели, которые алгоритм выбирает часто, имеют более высокие апостериорные вероятности. Алгоритм составляет предполагаемые апостериорные распределения β и σ 2 путем вычисления взвешенного среднего выбранных моделей. Алгоритм приписывает больший вес тем моделям, выбранным чаще.
Получившееся апостериорное распределение для полусопряженных моделей смеси аналитически тяжело. Для получения дополнительной информации на апостериорном распределении, смотрите Аналитически Послушное Последующее поколение.
Функция bayeslm
может создать любой поддерживаемый предшествующий объект модели для Байесовой линейной регрессии.
[1] Джордж, E. I. и Р. Э. Маккалок. "Выбор переменной Через Гиббс, Выбирающий". Журнал американской Статистической Ассоциации. Издание 88, № 423, 1993, стр 881–889.
[2] Koop, G., Д. Дж. Пойрир и Дж. Л. Тобиас. Байесовы эконометрические методы. Нью-Йорк, Нью-Йорк: Издательство Кембриджского университета, 2007.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.