Байесовская модель линейной регрессии с полунъюгатными приорами для стохастического выбора переменных поиска (SSVS)
Объект модели байесовской линейной регрессии mixsemiconjugateblm определяет совместное предварительное распределение коэффициентов регрессии и дисперсии возмущений (β, start2) для реализации SSVS (см. [1] и [2]), предполагая, что β и start2 являются зависимыми случайными переменными.
Как правило, при создании объекта модели байесовской линейной регрессии задается совместное предварительное распределение и характеристики только модели линейной регрессии. То есть объект модели является шаблоном, предназначенным для дальнейшего использования. В частности, для включения данных в модель для последующего анализа распределения и выбора признаков передайте объект модели и данные соответствующей функции объекта.
создает объект модели байесовской линейной регрессии (PriorMdl = mixsemiconjugateblm(NumPredictors)PriorMdl) состоит из NumPredictors предикторы и перехват, и устанавливает NumPredictors собственность. Совместное предварительное распределение (β, start2) подходит для реализации 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
Типы данных: 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 равно 1 - kProbability(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) числовая, положительная определенная матрица. Следовательно, предшествующая ковариационная матрица для компонента в модели смеси
jdiag(sqrt(V(:,, где j)))*Correlation*diag(sqrt(V(:,j)))V - матрица отклонений коэффициентов.
Строки и столбцы соответствуют именам переменных в VarNames.
По умолчанию коэффициенты регрессии являются некоррелированными, зависящими от режима.
Примечание
Можно указать любую числовую матрицу соответствующего размера. Однако, если ваша спецификация не является положительной определенной, mixsemiconjugateblm выдает предупреждение и заменяет спецификацию на CorrelationPD, где:
CorrelationPD = 0.5*(Correlation + Correlation.');
Совет
Для получения подробной информации о том, какое значение указать для Correlation, см. [1].
Типы данных: double
A - Гиперпараметр формы обратной гаммы предшествующей3 (по умолчанию) | числовой скалярГиперпараметр формы обратной гаммы, предшествующей на σ2, определенном как числовой скаляр.
A должно быть не менее –(Intercept + NumPredictors)/2.
С B фиксированное, обратное гамма-распределение становится выше и более сконцентрировано, поскольку A увеличивается. Эта характеристика весит предшествующую модель start2 более сильно, чем вероятность при апостериорной оценке.
Функциональную форму обратного гамма-распределения см. в разделе Аналитически отслеживаемые апостериоры.
Пример: 'A',0.1
Типы данных: double
B - Шкала гиперпараметра обратной гаммы предшествующая1 (по умолчанию) | положительный скаляр | InfМасштабный коэффициент обратной гаммы, предшествующей на σ2, определенном как положительный скаляр или Inf.
С A фиксированное, обратное гамма-распределение становится выше и более сконцентрировано, поскольку B увеличивается. Эта характеристика весит предшествующую модель start2 более сильно, чем вероятность при апостериорной оценке.
Пример: 'B',5
Типы данных: double
estimate | Выполнение выбора переменных предиктора для байесовских моделей линейной регрессии |
simulate | Моделирование коэффициентов регрессии и дисперсии возмущений байесовской модели линейной регрессии |
forecast | Прогнозные отклики байесовской модели линейной регрессии |
plot | Визуализация предыдущих и задних плотностей параметров байесовской модели линейной регрессии |
summarize | Сводная статистика распределения байесовской модели линейной регрессии для выбора переменных предиктора |
Рассмотрим модель множественной линейной регрессии, которая предсказывает реальный валовой национальный продукт США (GNPR) с использованием линейной комбинации индекса промышленного производства (IPI), общая занятость (E) и реальная заработная плата (WR).
β3WRt + αt.
Для всех - это ряд независимых гауссовых возмущений со средним значением 0 и дисперсией .
Предположим, что эти предыдущие распределения для = 0,..., 3:
Vk2Z2, где и Z2 - независимые, стандартные нормальные случайные величины. Поэтому коэффициенты имеют гауссово распределение смеси. Предположим, что все коэффициенты условно независимы, априори.
B А В - форма и масштаб, соответственно, обратного гамма-распределения.
γk∈{0,1}and он представляет переменную режима включения со случайной переменной с дискретным равномерным распределением.
Создайте предыдущую модель для 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);

Предварительное распределение каждого коэффициента представляет собой смесь двух гауссов: оба компонента имеют среднее значение ноль, но компонент 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, который содержит предельную заднюю вероятность включения переменной ( 1 для переменной). Например, задняя вероятность того, что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.
Copyright 2018 The MathWorks, Inc.
Байесовская модель линейной регрессии рассматривает параметры β и start2 в модели множественной линейной регрессии (MLR) yt = xtβ + αt как случайные величины.
Для времени t = 1,...,T:
yt - наблюдаемый ответ.
xt - вектор строки 1-by- (p + 1) наблюдаемых значений p предикторов. Чтобы разместить пересечение модели, x1t = 1 для всех t.
β - вектор (p + 1) -by-1-столбца коэффициентов регрессии, соответствующих переменным, составляющим столбцы xt.
αt - случайное возмущение со средним значением ноля и Cov (λ) = start2IT × T, в то время, как start- T-by-1 вектор, содержащий все возмущения. Эти допущения подразумевают, что вероятность данных
xtβ, start2).
(yt; xtβ, start2) - гауссова плотность вероятности со средним значением xtβ и дисперсией start2, оцениваемой при yt;.
Перед рассмотрением данных необходимо наложить совместное предварительное предположение о распределении на (β, start2). В байесовском анализе выполняется обновление распределения параметров с использованием информации о параметрах, полученных из вероятности получения данных. Результатом является совместное апостериорное распределение (β, start2) или условное апостериорное распределение параметров.
Стохастический выбор переменных поиска (SSVS) - метод выбора переменных предиктора для байесовской линейной регрессии, который ищет пространство потенциальных моделей для моделей с высокой апостериорной вероятностью и усредняет модели, которые он находит после завершения поиска.
SSVS предполагает, что предыдущее распределение каждого коэффициента регрессии представляет собой смесь двух гауссовых распределений, а предыдущее распределение start2 представляет собой обратную гамму с формой A и шкалой B. Пусть γ = {γ1,...,γK} является латентным, случайным индикатором режима для коэффициентов регрессии β, где:
K - количество коэффициентов в модели (Intercept + NumPredictors). γ k = 1 означает, что βk 'start2, γ k является гауссовым со средним значением 0 и дисперсией c1.
γ k = 0 означает, что предсказатель является гауссовым со средним значением 0 и дисперсией c2.
Функция вероятностной массы управляет распределением γ, а пространство выборки γ состоит из 2K элементов.
Более конкретно, если задаются γ k и λ 2, βk = γkc1Z + (1 - γ k) c2Z, где:
Z - стандартная нормальная случайная величина.
Для сопряженных моделей (mixconjugateblm), cj = σ2Vj, j = 1,2.
Для моделей с полуконъюгацией (mixsemiconjugateblm), cj = Vj.
c1 является относительно большим, что подразумевает, что соответствующий предиктор с большей вероятностью будет в модели. с2 является относительно небольшим, что подразумевает, что соответствующий предиктор с меньшей вероятностью находится в модели, поскольку распределение является плотным вокруг 0.
В этой структуре, если потенциал существует для суммарного коэффициента K в модели, то пространство имеет 2K модели, через которые можно искать. Поскольку вычисление апостериорных вероятностей всех 2K моделей может быть вычислительно дорогим, SSVS использует MCMC для выборки γ = {γ1,...,γK} и оценки апостериорных вероятностей соответствующих моделей. Модели, которые выбирает алгоритм, часто имеют более высокие апостериорные вероятности. Алгоритм составляет оценочные апостериорные распределения β и start2, вычисляя средневзвешенное выборочных моделей. Алгоритм приписывает больший вес тем моделям, которые отбираются чаще.
Полученное апостериорное распределение для моделей полунъюгатной смеси является аналитически труднореализуемым. Для получения подробной информации о заднем распределении см. Аналитически отслеживаемые задние части.
bayeslm может создать любой поддерживаемый объект предыдущей модели для байесовской линейной регрессии.
[1] Джордж, Э. И. и Р. Э. Маккаллох. «Выбор переменной с помощью выборки Гиббса». Журнал Американской статистической ассоциации. т. 88, № 423, 1993, стр. 881-889.
[2] Коуп, Г., Д. Дж. Пуарье и Дж. Л. Тобиас. Байесовские эконометрические методы. Нью-Йорк, Нью-Йорк: Cambridge University Press, 2007.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.