Байесовская линейная регрессионая модель с полуконъюгатными априорными функциями для выбора переменной стохастического поиска (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 | Включите точку пересечения в регрессионую модель. Поэтому β есть a (p + 1) -мерный вектор. Эта спецификация заставляет вектор T-на-1 из них быть подготовленным к данным предиктора во время оценки и симуляции. |
Если вы включаете столбец таковых в данные предиктора для термина точки пересечения, задайте Intercept
на false
.
Пример: 'Intercept',false
Типы данных: logical
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
) -на-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)
(по умолчанию) | положительную числовую матрицуКомпонентное отклонение гиперпараметр Гауссовой смеси перед β, an (Intercept + NumPredictors
) -на-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
) -на-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
is 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
) -by- (Intercept
+ NumPredictors
) числовая, положительно определенная матрица. Следовательно, предшествующая ковариационная матрица для
в модели смеси является
diag (sqrt (j компонента
V (:, j
, где )) * Корреляция * 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
).
Для всех , - серия независимых гауссовских нарушений порядка со средним значением 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
являются эквивалентными объектами модели.
Можно задать значения свойств writable для созданных моделей с помощью записи через точку. Установите имена коэффициентов регрессии в соответствующие имена переменных.
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);
Предшествующее распределение каждого коэффициента является смесью двух Гауссов: оба компонента имеют среднее значение нуля, но компонент 1 имеет большое отклонение относительно компонента 2. Поэтому их распределения центрируются в нуле и имеют внешний вид «шип и сляб».
Рассмотрим линейную регрессионую модель в Создании Предыдущей Модели для SSVS.
Создайте предыдущую модель для выполнения SSVS. Предположим, что и являются независимыми (модель полунъюгатной смеси). Задайте количество предикторов 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 использует марковскую цепь 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 | -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% байесовских справедливых интервалов для параметров. Для примера апостериорная вероятность того, что коэффициент регрессии 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 для оценки, установите начальное число случайных чисел, чтобы воспроизвести результаты.
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.
Копирайт 2018 The MathWorks, Inc.
A Bayesian linear regression model обрабатывает параметры β и σ2 в модели многофакторной линейной регрессии (MLR) yt = xt β + εt как случайные переменные.
Для времен t = 1,..., T:
yt - наблюдаемая реакция.
xt является 1-бай- (p + 1) вектором-строкой наблюдаемых значений p предикторов. Чтобы разместить точку пересечения модели, x 1 t = 1 для всех t.
β является (p + 1) -на-1 вектор-столбец коэффициентов регрессии, соответствующих переменным, которые составляют столбцы xt.
εt является случайным нарушением порядка со средним значением нуля и Cov (ε) = σ2I T × 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 1 Z + (1 - γk) c 2 Z, где:
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] Джордж, Э. И. и Р. Э. Маккаллох. «Выбор переменной через выборку Гиббса». Журнал Американской статистической ассоциации. Том 88, № 423, 1993, с. 881-889.
[2] Koop, G., D. J. Porier, and J. L. Tobias. Байесовские эконометрические методы. Нью-Йорк, Нью-Йорк: Cambridge University Press, 2007.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.