Байесова модель линейной регрессии с полусопряженным уголовным прошлым для стохастического поискового выбора переменной (SSVS)
Байесов объект модели линейной регрессии mixsemiconjugateblm
задает объединенное предшествующее распределение коэффициентов регрессии и отклонения воздействия (β, σ2) для реализации SSVS (см. [1] и [2]), принятие β и σ2 зависимые случайные переменные.
В общем случае, когда вы создаете Байесов объект модели линейной регрессии, он задает объединенное предшествующее распределение и характеристики модели линейной регрессии только. Таким образом, объект модели является шаблоном, предназначенным для дальнейшего использования. А именно, чтобы включить данные в модель для анализа апостериорного распределения и выбора признаков, передайте объект модели и данные к соответствующей объектной функции.
создает Байесов объект модели линейной регрессии (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
из набора данных предиктора, который вы задаете во время оценки, симуляции или прогнозирования.
Значением по умолчанию является {'Бета (1)', 'Бета (2)..., Бета (
, где 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
Вероятность (
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
Correlation
— Предшествующая корреляционная матрица β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
— Сформируйте гиперпараметр обратной гаммы, предшествующей на σ2
(значение по умолчанию) | числовой скалярСформируйте гиперпараметр обратной гаммы, предшествующей на σ2В виде числового скаляра.
A
должен быть, по крайней мере, –(Intercept + NumPredictors)/2
.
С B
сохраненный зафиксированный, обратное гамма распределение становится более высоким и более сконцентрированным как A
увеличения. Эта характеристика взвешивает предшествующую модель σ2 в большей степени, чем вероятность во время следующей оценки.
Для функциональной формы обратного гамма распределения смотрите Аналитически Послушное Последующее поколение.
Пример: 'A',0.1
Типы данных: double
B
— Масштабируйте гиперпараметр обратной гаммы, предшествующей на σ2
(значение по умолчанию) | положительная скалярная величина | 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 (ε) = σ2T I ×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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.