conjugateblm

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

Описание

Байесов объект модели линейной регрессии conjugateblm указывает, что объединенным предшествующим распределением коэффициентов регрессии и отклонения воздействия, то есть, (β, σ 2) является dependent, normal-inverse-gamma conjugate model. Условное предшествующее распределение β |σ2 многомерно Гауссов со средним μ и отклонением σ 2V. Предшествующее распределение σ 2 является обратной гаммой с формой A и шкала B.

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

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

Создание

Описание

пример

PriorMdl = conjugateblm(NumPredictors) создает Байесов объект модели линейной регрессии (PriorMdl) состоявший из NumPredictors предикторы и прерывание и наборы NumPredictors свойство. Объединенное предшествующее распределение (β, σ 2) является зависимой нормальной обратной гаммой сопряженная модель. PriorMdl шаблон, который задает предшествующие распределения и размерность β.

пример

PriorMdl = conjugateblm(NumPredictors,Name,Value) свойства наборов (кроме NumPredictors) использование аргументов пары "имя-значение". Заключите каждое имя свойства в кавычки. Например, conjugateblm(2,'VarNames',["UnemploymentRate"; "CPI"]) задает имена этих двух переменных предикторов в модели.

Свойства

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

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

Типы данных: логический

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

Значением по умолчанию является {'Бета (1)', 'Бета (2)..., Бета (p)}, где p значение NumPredictors.

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

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

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

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

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

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

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

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

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

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

    [1e5000V0].

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

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

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

V предшествующая ковариация β до фактора σ 2.

Пример: '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.

\forall t моменты времени, εt серия независимых Гауссовых воздействий со средним значением 0 и отклонение σ2.

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

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

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

Эти предположения и вероятность данных подразумевают нормальную обратную гамму сопряженная модель.

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

p = 3;
Mdl = bayeslm(p,'ModelType','conjugate')
Mdl = 
  conjugateblm 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      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 Beta(1)   |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 Beta(2)   |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 Beta(3)   |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 Sigma2    | 0.5000   0.5000    [ 0.138,  1.616]     1.000   IG(3.00,    1)        
 

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

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

Mdl.VarNames = ["IPI" "E" "WR"]
Mdl = 
  conjugateblm 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      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 IPI       |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 E         |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 WR        |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 Sigma2    | 0.5000   0.5000    [ 0.138,  1.616]     1.000   IG(3.00,    1)        
 

Полагайте, что модель линейной регрессии в Создает Нормальную Обратную Гамму Сопряженная Предшествующая Модель.

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

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

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

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

Оцените крайние апостериорные распределения β и σ2.

PosteriorMdl = estimate(PriorMdl,X,y);
Method: Analytic posterior distributions
Number of observations: 62
Number of predictors:   4
Log marginal likelihood: -259.348
 
           |   Mean      Std          CI95        Positive       Distribution      
-----------------------------------------------------------------------------------
 Intercept | -24.2494  8.7821  [-41.514, -6.985]    0.003   t (-24.25, 8.65^2, 68) 
 IPI       |   4.3913  0.1414   [ 4.113,  4.669]    1.000   t (4.39, 0.14^2, 68)   
 E         |   0.0011  0.0003   [ 0.000,  0.002]    1.000   t (0.00, 0.00^2, 68)   
 WR        |   2.4683  0.3490   [ 1.782,  3.154]    1.000   t (2.47, 0.34^2, 68)   
 Sigma2    |  44.1347  7.8020   [31.427, 61.855]    1.000   IG(34.00, 0.00069)     
 

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

  • CI95, который содержит 95%-е Байесовы equitailed вероятные интервалы для параметров. Например, апостериорная вероятность, что коэффициент регрессии WR находится в [1.782, 3.154] 0.95.

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

  • Distribution, который содержит описания апостериорных распределений параметров. Например, крайнее апостериорное распределение IPI t со средним значением 4,39, стандартным отклонением 0,14, и 68 степеней свободы.

Доступ к свойствам апостериорного распределения с помощью записи через точку. Например, отобразите крайние следующие средние значения путем доступа к Mu свойство.

PosteriorMdl.Mu
ans = 4×1

  -24.2494
    4.3913
    0.0011
    2.4683

Полагайте, что модель линейной регрессии в Создает Нормальную Обратную Гамму Сопряженная Предшествующая Модель.

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

p = 3;
PriorMdl = bayeslm(p,'ModelType','conjugate','VarNames',["IPI" "E" "WR"])
PriorMdl = 
  conjugateblm 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      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 IPI       |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 E         |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 WR        |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 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.2494  1.8695  [-27.914, -20.585]    0.000   N (-24.25, 1.87^2) 
 IPI       |   4.3913  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.2494
    4.3913
    0.0011
    2.4683

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

    3.4950    0.0350   -0.0001    0.0241
    0.0350    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 = 
  conjugateblm 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      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 IPI       |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 E         |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 WR        |  0      70.7107  [-141.273, 141.273]    0.500   t (0.00, 57.74^2,  6) 
 Sigma2    | 0.5000   0.5000    [ 0.138,  1.616]     1.000   IG(3.00,    1)        
 

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

Считайте модель линейной регрессии в Оценке Крайними Апостериорными распределениями.

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

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

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

PosteriorMdl = estimate(PriorMdl,X,y);
Method: Analytic posterior distributions
Number of observations: 62
Number of predictors:   4
Log marginal likelihood: -259.348
 
           |   Mean      Std          CI95        Positive       Distribution      
-----------------------------------------------------------------------------------
 Intercept | -24.2494  8.7821  [-41.514, -6.985]    0.003   t (-24.25, 8.65^2, 68) 
 IPI       |   4.3913  0.1414   [ 4.113,  4.669]    1.000   t (4.39, 0.14^2, 68)   
 E         |   0.0011  0.0003   [ 0.000,  0.002]    1.000   t (0.00, 0.00^2, 68)   
 WR        |   2.4683  0.3490   [ 1.782,  3.154]    1.000   t (2.47, 0.34^2, 68)   
 Sigma2    |  44.1347  7.8020   [31.427, 61.855]    1.000   IG(34.00, 0.00069)     
 

Извлеките следующее среднее значение β из следующей модели и следующей ковариации β из сводных данных оценки, возвращенных summarize.

estBeta = PosteriorMdl.Mu;
Summary = summarize(PosteriorMdl);
estBetaCov = Summary.Covariances{1:(end - 1),1:(end - 1)};

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

Чертите 1e6 выборки от крайнего апостериорного распределения β.

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

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

Изолируйте ничьи, соответствующие коэффициенту WR, и затем идентифицируйте, который чертит, меньше 2.5.

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

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

probWRLT2p5 = mean(isWRLT2p5)
probWRLT2p5 = 0.5362

Апостериорная вероятность, что коэффициент действительной заработной платы меньше 2.5, о 0.54.

Крайнее апостериорное распределение коэффициента WR isa t68, но сосредоточенный в 2,47 и масштабируемый 0,34. Непосредственно вычислите апостериорную вероятность что коэффициент WR меньше 2.5.

center = estBeta(isWR);
stdBeta = sqrt(diag(estBetaCov));
scale = stdBeta(isWR);
t = (2.5 - center)/scale;
dof = 68;
directProb = tcdf(t,dof)
directProb = 0.5361

Апостериорные вероятности почти идентичны.

Copyright 2018 The MathWorks, Inc.

Считайте модель линейной регрессии в Оценке Крайними Апостериорными распределениями.

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

p = 3;
PriorMdl = bayeslm(p,'ModelType','conjugate','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

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');
ylabel('rGNP');
xlabel('Year');
hold off

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

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

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

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

Copyright 2018 The MathWorks, Inc.

Больше о

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

Алгоритмы

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

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

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

Введенный в R2017a

Для просмотра документации необходимо авторизоваться на сайте