exponenta event banner

semiconjugateblm

Байесовская модель линейной регрессии с полуконъюгатом до правдоподобия данных

Описание

Объект модели байесовской линейной регрессии semiconjugateblm указывает на то, что условное предшествующее распределение β 'start2 является многомерным гауссовым со средним λ и дисперсией V, а предшествующее распределение start2 - обратной гаммой с формой A и шкалой B. В частности, байесовская модель линейной регрессии является независимой, нормально-обратной-гамма-полунъюгатной моделью.

Правдоподобие данных равно ∏t=1Tϕ (yt; xtβ, start2), где (yt; xtβ, start2) - гауссова плотность вероятностей, оцениваемая на yt со средним xtβ и дисперсией start2. Указанные приоры являются полуконъюгатными для вероятности, то есть результирующие условные, но не предельные, задние распределения аналитически прослеживаются. Для получения подробной информации о заднем распределении см. Аналитически отслеживаемые задние части.

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

Создание

Описание

пример

PriorMdl = semiconjugateblm(NumPredictors) создает объект модели байесовской линейной регрессии (PriorMdl) состоит из NumPredictors предикторы и перехват. Совместное предварительное распределение (β, start2) представляет собой независимую нормально-обратно-гамма-полунъюгатную модель. PriorMdl является шаблоном, определяющим предыдущие распределения и размерность β.

пример

PriorMdl = semiconjugateblm(NumPredictors,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары. Name является именем свойства, за исключением NumPredictors, и Value - соответствующее значение. Name должно отображаться внутри отдельных кавычек (''). Можно указать несколько Name,Value пара аргументов в любом порядке как Name1,Value1,...,NameN,ValueN.

Свойства

развернуть все

Значения свойств можно задать при создании объекта модели с помощью синтаксиса аргумента пара имя-значение или после создания модели с помощью точечной нотации. Например, чтобы установить более диффузную предшествующую ковариационную матрицу для PriorMdl, байесовская модель линейной регрессии, содержащая три коэффициента модели, введите

PriorMdl.V = 100*eye(3);

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

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

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

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

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

  • Предыдущее среднее β (Mu)

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

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

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

СтоимостьОписание
falseИсключить пересечение из регрессионной модели. Следовательно, β является p-мерный вектор, где p - значение NumPredictors.
trueВключить пересечение в регрессионную модель. Следовательно, β является (p + 1) -мерный вектор. Эта спецификация заставляет T-by-1 вектор из них быть добавленным к данным предиктора во время оценки и моделирования.

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

Пример: 'Intercept',false

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

Имена переменных предиктора для дисплеев, заданные как строковый вектор или вектор ячейки векторов символов. VarNames должен содержать NumPredictors элементы. VarNames(j) - имя переменной в столбце j набора данных предиктора, который задается во время оценки, моделирования или прогнозирования.

Значение по умолчанию: {'Beta(1)','Beta(2),...,Beta(p)}, где p - значение NumPredictors.

Пример: 'VarNames',["UnemploymentRate"; "CPI"]

Типы данных: string | cell | char

Средний параметр гауссова предшествующего β, определяемый как числовой скаляр или вектор.

Если Mu является вектором, то он должен иметь NumPredictors или NumPredictors + 1 элементы.

  • Для NumPredictors элементы, semiconjugateblm устанавливает предыдущее среднее значение NumPredictors только предикторы. Предикторы соответствуют столбцам в данных предиктора (указанных во время оценки, моделирования или прогнозирования). semiconjugateblm игнорирует перехват в модели, то есть semiconjugateblm задает значение по умолчанию перед любым перехватом.

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

Пример: 'Mu',[1; 0.08; 2]

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

Условная ковариационная матрица гауссова предшествующего β, указанная как cоколо-c симметричная, положительная определенная матрица. c может быть NumPredictors или NumPredictors + 1.

  • Если c является NumPredictors, то semiconjugateblm устанавливает предыдущую ковариационную матрицу как

    [1e50⋯00⋮V0].

    semiconjugateblm приписывает предшествующие ковариации по умолчанию перехвату и атрибуты V к коэффициентам переменных предиктора в данных. Строки и столбцы V соответствуют столбцам (переменным) в данных предиктора.

  • Если c является NumPredictors + 1, то semiconjugateblm устанавливает всю предшествующую ковариацию как V. Первая строка и столбец соответствуют перехвату. Все остальные строки и столбцы соответствуют столбцам в данных предиктора.

Значение по умолчанию является плоским предшествующим значением. Для адаптивного прототипа укажите diag(Inf(Intercept + NumPredictors,1)). Адаптивные приоры указывают нулевую точность для того, чтобы предыдущее распределение оказывало как можно меньшее влияние на заднее распределение.

Пример: 'V',diag(Inf(3,1))

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

Гиперпараметр формы обратной гаммы, предшествующей на σ2, определенном как числовой скаляр.

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

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

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

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

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

Масштабный коэффициент обратной гаммы, предшествующей на σ2, определенном как положительный скаляр или Inf.

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

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

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

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

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

Примеры

свернуть все

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

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

Для всех t-временных точек αt - это ряд независимых гауссовых возмущений со средним значением 0 и дисперсией start2.

Предположим, что предыдущие распределения:

  • β'σ2∼N4 (М, V). M является вектором средства 4 на 1, а V является масштабированной матрицей положительной определенной ковариации 4 на 4.

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

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

Создайте предыдущую модель normal-inverse-gamma semaconjugate для параметров линейной регрессии. Укажите количество предикторов p.

p = 3;
Mdl = bayeslm(p,'ModelType','semiconjugate')
Mdl = 
  semiconjugateblm with properties:

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

 
           |  Mean     Std           CI95         Positive     Distribution    
-------------------------------------------------------------------------------
 Intercept |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Beta(1)   |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Beta(2)   |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Beta(3)   |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Sigma2    | 0.5000  0.5000    [ 0.138,  1.616]     1.000   IG(3.00,    1)     
 

Mdl является semiconjugateblm Объект байесовской модели линейной регрессии, представляющий предварительное распределение коэффициентов регрессии и дисперсии возмущений. В окне команд bayeslm отображает сводку предыдущих распределений.

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

Mdl.VarNames = ["IPI" "E" "WR"]
Mdl = 
  semiconjugateblm with properties:

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

 
           |  Mean     Std           CI95         Positive     Distribution    
-------------------------------------------------------------------------------
 Intercept |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 IPI       |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 E         |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 WR        |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Sigma2    | 0.5000  0.5000    [ 0.138,  1.616]     1.000   IG(3.00,    1)     
 

Рассмотрим модель линейной регрессии в «Создать нормальную-обратную-гамма-полунъюгатную предыдущую модель».

Создайте предыдущую модель normal-inverse-gamma semaconjugate для параметров линейной регрессии. Укажите количество предикторов p и названия коэффициентов регрессии.

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

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

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

Оцените краевые апостериорные распределения β и start2.

rng(1); % For reproducibility
PosteriorMdl = estimate(PriorMdl,X,y);
Method: Gibbs sampling with 10000 draws
Number of observations: 62
Number of predictors:   4
 
           |   Mean      Std          CI95        Positive  Distribution 
-------------------------------------------------------------------------
 Intercept | -23.9922  9.0520  [-41.734, -6.198]    0.005     Empirical  
 IPI       |   4.3929  0.1458   [ 4.101,  4.678]    1.000     Empirical  
 E         |   0.0011  0.0003   [ 0.000,  0.002]    0.999     Empirical  
 WR        |   2.4711  0.3576   [ 1.762,  3.178]    1.000     Empirical  
 Sigma2    |  46.7474  8.4550   [33.099, 66.126]    1.000     Empirical  
 

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

  • CI95, который содержит 95% байесовских равных достоверных интервалов для параметров. Например, апостериорная вероятность того, что коэффициент регрессии WR в [1,762, 3,178] равно 0,95.

  • Positive, которая содержит апостериорную вероятность того, что параметр больше 0. Например, вероятность того, что перехват больше 0, равна 0,005.

В этом случае краевой задний участок является аналитически труднореализуемым. Следовательно, estimate использует выборку Гиббса для извлечения из заднего и оценки задних характеристик.

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

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

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

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

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

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

Рассмотрим модель линейной регрессии в «Создать нормальную-обратную-гамма-полунъюгатную предыдущую модель».

Создайте предыдущую модель normal-inverse-gamma semaconjugate для параметров линейной регрессии. Укажите количество предикторов pи имена коэффициентов регрессии.

p = 3;
PriorMdl = bayeslm(p,'ModelType','semiconjugate','VarNames',["IPI" "E" "WR"])
PriorMdl = 
  semiconjugateblm with properties:

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

 
           |  Mean     Std           CI95         Positive     Distribution    
-------------------------------------------------------------------------------
 Intercept |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 IPI       |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 E         |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 WR        |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Sigma2    | 0.5000  0.5000    [ 0.138,  1.616]     1.000   IG(3.00,    1)     
 

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

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

Оцените условное апостериорное распределение β, учитывая данные, и start2 = 2, и верните сводную таблицу оценки для доступа к оценкам.

[Mdl,Summary] = estimate(PriorMdl,X,y,'Sigma2',2);
Method: Analytic posterior distributions
Conditional variable: Sigma2 fixed at   2
Number of observations: 62
Number of predictors:   4
 
           |   Mean      Std          CI95         Positive     Distribution    
--------------------------------------------------------------------------------
 Intercept | -24.2452  1.8693  [-27.909, -20.581]    0.000   N (-24.25, 1.87^2) 
 IPI       |   4.3914  0.0301   [ 4.332,  4.450]     1.000   N (4.39, 0.03^2)   
 E         |   0.0011  0.0001   [ 0.001,  0.001]     1.000   N (0.00, 0.00^2)   
 WR        |   2.4683  0.0743   [ 2.323,  2.614]     1.000   N (2.47, 0.07^2)   
 Sigma2    |    2       0       [ 2.000,  2.000]     1.000   Fixed value        
 

estimate отображает сводку условного заднего распределения β. Ввиду того, что в процессе оценки при 2 фиксируется, выводы о ней тривиальны.

Извлеките средний вектор и ковариационную матрицу условного задника β из сводной таблицы оценки.

condPostMeanBeta = Summary.Mean(1:(end - 1))
condPostMeanBeta = 4×1

  -24.2452
    4.3914
    0.0011
    2.4683

CondPostCovBeta = Summary.Covariances(1:(end - 1),1:(end - 1))
CondPostCovBeta = 4×4

    3.4944    0.0349   -0.0001    0.0241
    0.0349    0.0009   -0.0000   -0.0013
   -0.0001   -0.0000    0.0000   -0.0000
    0.0241   -0.0013   -0.0000    0.0055

Показ Mdl.

Mdl
Mdl = 
  semiconjugateblm with properties:

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

 
           |  Mean     Std           CI95         Positive     Distribution    
-------------------------------------------------------------------------------
 Intercept |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 IPI       |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 E         |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 WR        |  0       100    [-195.996, 195.996]    0.500   N (0.00, 100.00^2) 
 Sigma2    | 0.5000  0.5000    [ 0.138,  1.616]     1.000   IG(3.00,    1)     
 

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

Рассмотрим модель линейной регрессии в разделе Оценка маргинального заднего распределения.

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

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

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

rng(1); % For reproducibility
PosteriorMdl = estimate(PriorMdl,X,y);
Method: Gibbs sampling with 10000 draws
Number of observations: 62
Number of predictors:   4
 
           |   Mean      Std          CI95        Positive  Distribution 
-------------------------------------------------------------------------
 Intercept | -23.9922  9.0520  [-41.734, -6.198]    0.005     Empirical  
 IPI       |   4.3929  0.1458   [ 4.101,  4.678]    1.000     Empirical  
 E         |   0.0011  0.0003   [ 0.000,  0.002]    0.999     Empirical  
 WR        |   2.4711  0.3576   [ 1.762,  3.178]    1.000     Empirical  
 Sigma2    |  46.7474  8.4550   [33.099, 66.126]    1.000     Empirical  
 

Оцените сводную статистику заднего распределения для β, используя розыгрыши из заднего распределения, сохраненного в задней модели.

estBeta = mean(PosteriorMdl.BetaDraws,2);
EstBetaCov = cov(PosteriorMdl.BetaDraws');

Предположим, что если коэффициент реальной заработной платы ниже 2,5, то вводится политика. Хотя заднее распределение WR известен, и поэтому вы можете вычислить вероятности напрямую, вы можете оценить вероятность, используя моделирование Монте-Карло вместо этого.

Нарисовать 1e6 образцы из краевого заднего распределения β.

NumDraws = 1e6;
rng(1);
BetaSim = simulate(PosteriorMdl,'NumDraws',NumDraws);

BetaSim является 4-by- 1e6 матрица, содержащая черточки. Строки соответствуют коэффициенту регрессии, а столбцы - последовательным розыгрышам.

Выделить розыгрыши, соответствующие коэффициенту реальной заработной платы, а затем определить, какие розыгрыши меньше 2,5.

isWR = PosteriorMdl.VarNames == "WR";
wrSim = BetaSim(isWR,:);
isWRLT2p5 = wrSim < 2.5;

Найдите предельную заднюю вероятность того, что коэффициент регрессии WR меньше 2,5 путем вычисления доли ничьих, которая меньше 2,5.

probWRLT2p5 = mean(isWRLT2p5)
probWRLT2p5 = 0.5283

Апостериорная вероятность того, что коэффициент реальной заработной платы меньше 2,5, составляет около 0.53.

Copyright 2018 The MathWorks, Inc.

Рассмотрим модель линейной регрессии в разделе Оценка маргинального заднего распределения.

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

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

load Data_NelsonPlosser
fhs = 10; % Forecast horizon size
X = DataTable{1:(end - fhs),PriorMdl.VarNames(2:end)};
y = DataTable{1:(end - fhs),'GNPR'};
XF = DataTable{(end - fhs + 1):end,PriorMdl.VarNames(2:end)}; % Future predictor data
yFT = DataTable{(end - fhs + 1):end,'GNPR'};                  % True future responses

rng(1); % For reproducibility
PosteriorMdl = estimate(PriorMdl,X,y,'Display',false);

Прогнозные ответы с использованием апостериорного прогностического распределения и использования будущих данных предиктора XF. Постройте график истинных значений ответа и прогнозируемых значений.

yF = forecast(PosteriorMdl,XF);

figure;
plot(dates,DataTable.GNPR);
hold on
plot(dates((end - fhs + 1):end),yF)
h = gca;
hp = patch([dates(end - fhs + 1) dates(end) dates(end) dates(end - fhs + 1)],...
    h.YLim([1,1,2,2]),[0.8 0.8 0.8]);
uistack(hp,'bottom');
legend('Forecast Horizon','True GNPR','Forecasted GNPR','Location','NW')
title('Real Gross National Product: 1909 - 1970');
ylabel('rGNP');
xlabel('Year');
hold off

Figure contains an axes. The axes with title Real Gross National Product: 1909 - 1970 contains 3 objects of type patch, line. These objects represent Forecast Horizon, True GNPR, Forecasted GNPR.

yF является вектором 10 на 1 будущих значений реального GNP, соответствующего будущим данным предиктора.

Оценка прогнозируемой среднеквадратичной ошибки (RMSE).

frmse = sqrt(mean((yF - yFT).^2))
frmse = 25.1938

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

Подробнее

развернуть все

Алгоритмы

Можно сбросить все свойства модели с помощью точечной нотации, например: PriorMdl.V = diag(Inf(3,1)). Для сброса свойств, semiconjugateblm выполняет минимальную проверку ошибок значений. Минимизация проверки ошибок имеет преимущество в снижении накладных расходов на моделирование цепи Маркова Монте-Карло, что приводит к эффективному выполнению алгоритма.

Альтернативы

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

Представлен в R2017a