semiconjugateblm

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

Описание

Байесовская линейная регрессия объекта модели semiconjugateblm задает, что условное предшествующее распределение β | σ2 многомерный Гауссов со средними μ и V отклонения и предшествующим распределением σ2 - обратная гамма с A формы и B шкалы. В частности, байесовская линейная регрессионая модель является independent, normal-inverse-gamma semiconjugate model.

Вероятность данных: t=1Tϕ(yt;xtβ,σ2), где ϕ (yt; xtβ, σ2) - Гауссова плотность вероятностей, оцениваемая в yt со средними xtβ и отклонением σ2. Заданные априоры являются полунъюгатными для вероятности, то есть получившиеся условные, но не маргинальные, апостериорные распределения аналитически прослеживаются. Для получения дополнительной информации о апостериорном распределении смотрите Аналитически отслеживаемые апостериоры.

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

Создание

Описание

пример

PriorMdl = semiconjugateblm(NumPredictors) создает байесовский объект линейной регрессионной модели (PriorMdl) состоят из NumPredictors предикторы и точка пересечения. Совместное предшествующее распределение (β, σ2) - независимая нормальная-обратная-гамма полуконъюгатная модель. 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Включите точку пересечения в регрессионую модель. Поэтому β есть a (p + 1) -мерный вектор. Эта спецификация заставляет вектор T-на-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-by- c симметричная, положительно определенная матрица. c можно NumPredictors или NumPredictors + 1.

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

    [1e5000V0].

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

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

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

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

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

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

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

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

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

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

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

Масштабный параметр обратной гаммы перед σ2, заданный как положительная скалярная величина или Inf.

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

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

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

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

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

Примеры

свернуть все

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

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

Для всех t временные точки, εt - серия независимых гауссовских нарушений порядка со средним значением 0 и отклонением σ2.

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

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

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

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

Создайте нормально-обратную-гамма-полуконъюгатную предшествующую модель для параметров линейной регрессии. Задайте количество предикторов 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 отображает сводные данные предыдущих распределений.

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

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)     
 

Рассмотрим линейную регрессионую модель в Create Normal-Inverse-Gamma Semiconjugate Previous Model.

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

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

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

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

Оцените маргинальные апостериорные распределения β и σ2.

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 хранение объектов модели вытягивает из апостериорных распределений β и σ2 учитывая данные. 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.

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

Рассмотрим линейную регрессионую модель в Create Normal-Inverse-Gamma Semiconjugate Previous Model.

Создайте нормально-обратную-гамма-полуконъюгатную предшествующую модель для параметров линейной регрессии. Задайте количество предикторов 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'};

Оцените условное апостериорное распределение β учитывая данные и σ2=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 фиксируется на уровне 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 вычисляет условное апостериорное распределение, оно возвращает исходную предшествующую модель, а не апостериорную в первой позиции списка выходных аргументов.

Рассмотрим линейную регрессионую модель в Estimate Marginal Posterior Distribution.

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

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-байт- 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.

Копирайт 2018 The MathWorks, Inc.

Рассмотрим линейную регрессионую модель в Estimate Marginal Posterior Distribution.

Создайте предыдущую модель для коэффициентов регрессии и отклонения нарушения порядка, а затем оцените маргинальные апостериорные распределения. Продержитесь последние 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