exponenta event banner

график

Визуализация предыдущих и задних плотностей параметров байесовской модели линейной регрессии

Описание

пример

plot(PosteriorMdl) или plot(PriorMdl) строит график апостериорных или предыдущих распределений параметров в байесовской модели линейной регрессии PosteriorMdl или PriorMdlсоответственно. plot добавляет вложенные диаграммы для каждого параметра к одной фигуре и перезаписывает одну и ту же фигуру при вызове plot несколько раз.

пример

plot(PosteriorMdl,PriorMdl) строит график заднего и предыдущего распределений в одном и том же субплоте. plot использует сплошные синие линии для задних плотностей и пунктирные красные линии для предыдущих плотностей.

пример

plot(___,Name,Value) использует любую из комбинаций входных аргументов в предыдущих синтаксисах и дополнительных параметрах, заданных одним или несколькими аргументами пары имя-значение. Например, можно оценить заднюю или предыдущую плотность, подав значения β и start2, или выбрать, какие распределения параметров включить в рисунок.

пример

pointsUsed = plot(___) также возвращает значения параметров, которые plot используется для оценки плотностей на вложенных графиках.

пример

[pointsUsed,posteriorDensity,priorDensity] = plot(___) также возвращает значения вычисленных плотностей.

Если указать одну модель, то plot возвращает значения плотности в PosteriorDensity. В противном случае plot возвращает значения задней плотности в PosteriorDensity и предыдущие значения плотности в PriorDensity.

пример

[pointsUsed,posteriorDensity,priorDensity,FigureHandle] = plot(___) возвращает дескриптор фигуры, содержащей распределения.

Примеры

свернуть все

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

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

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

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

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

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

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

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

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

PriorMdl является conjugateblm Объект байесовской модели линейной регрессии, представляющий предварительное распределение коэффициентов регрессии и дисперсии возмущений.

Постройте график предыдущих распределений.

plot(PriorMdl);

Figure contains 5 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. Axes 5 with title Sigma2 contains an object of type line.

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

Предположим, что среднее значение коэффициентов регрессии равно [-2040.0012] ′ и их масштабированная ковариационная матрица равна

[100000.00100001e-800000.1].

Кроме того, предшествующая шкала дисперсии возмущений составляет 0,01. Укажите предшествующую информацию с помощью точечной нотации.

PriorMdl.Mu = [-20; 4; 0.001; 2];
PriorMdl.V = diag([1 0.001 1e-8 0.01]);
PriorMdl.B = 0.01;

Запросите новый рисунок и постройте график предыдущего распределения.

plot(PriorMdl);

Figure contains 5 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. Axes 5 with title Sigma2 contains an object of type line.

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

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

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

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

PosteriorMdl = estimate(PriorMdl,X,y,'Display',false);

PosteriorMdl является conjugateblm объект модели, который содержит апостериорные распределения β и start2.

Постройте график задних распределений.

plot(PosteriorMdl);

Figure contains 5 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. Axes 5 with title Sigma2 contains an object of type line.

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

plot(PosteriorMdl,PriorMdl);

Figure contains 5 axes. Axes 1 with title Intercept contains 2 objects of type line. Axes 2 with title IPI contains 2 objects of type line. Axes 3 with title E contains 2 objects of type line. Axes 4 with title WR contains 2 objects of type line. Axes 5 with title Sigma2 contains 2 objects of type line. These objects represent Posterior, Prior.

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

Загрузите набор данных Нельсона-Плоссера, создайте предыдущую сопряженную модель по умолчанию, а затем оцените заднюю модель, используя первые 75% данных. Выключите отображение оценки.

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

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

d = 0.75;
PosteriorMdlFirst = estimate(PriorMdl,X(1:floor(d*end),:),y(1:floor(d*end)),...
    'Display',false);

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

[~,~,~,h] = plot(PosteriorMdlFirst,PriorMdl,'VarNames','Sigma2');

Figure contains an axes. The axes with title Sigma2 contains 2 objects of type line. These objects represent Posterior, Prior.

h - маркер перемещения фигуры для графика распределения. Если изменить имя марки фигуры, изменив Tag свойство, затем следующее plot вызов помещает все новые участки распределения на другой показатель.

Измените имя маркера перемещения фигуры на FirstHalfData с использованием точечной нотации.

h.Tag = 'FirstHalfData';

Оцените апостериорное распределение, используя остальные данные. Укажите апостериорное распределение на основе последних 25% данных в качестве предыдущего распределения.

PosteriorMdl = estimate(PosteriorMdlFirst,X(ceil(d*end):end,:),...
    y(ceil(d*end):end),'Display',false);

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

plot(PosteriorMdl,PosteriorMdlFirst,'VarNames','Sigma2');

Figure contains an axes. The axes with title Sigma2 contains 2 objects of type line. These objects represent Posterior, Prior.

Этот тип графика показывает эволюцию заднего распределения при включении новых данных.

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

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

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

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

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

[pointsUsedPrior,priorDensities1] = plot(PriorMdl);

Figure contains 5 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. Axes 5 with title Sigma2 contains an object of type line.

pointsUsedPrior является массивом ячеек 5 на 1 из 1 на 1000 числовых векторов, представляющих значения параметров, которые plot используется для построения графика соответствующих плотностей. Первый элемент соответствует перехвату, следующие три элемента соответствуют коэффициентам регрессии, а последний элемент соответствует дисперсии возмущений. priorDensities1 имеет те же размеры, что и pointsUsed и содержит соответствующие значения плотности.

Оцените апостериорное распределение. Выключите отображение оценки.

PosteriorMdl = estimate(PriorMdl,X,y,'Display',false);

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

[pointsUsedPost,posteriorDensities1] = plot(PosteriorMdl);

Figure contains 5 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. Axes 5 with title Sigma2 contains an object of type line.

pointsUsedPost и posteriorDensities1 имеют те же размеры, что и pointsUsedPrior. pointsUsedPost выходные данные могут отличаться от pointsUsedPrior. posteriorDensities1 содержит значения задней плотности.

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

[pointsUsedPP,posteriorDensities2,priorDensities2] = plot(PosteriorMdl,PriorMdl);

Figure contains 5 axes. Axes 1 with title Intercept contains 2 objects of type line. Axes 2 with title IPI contains 2 objects of type line. Axes 3 with title E contains 2 objects of type line. Axes 4 with title WR contains 2 objects of type line. Axes 5 with title Sigma2 contains 2 objects of type line. These objects represent Posterior, Prior.

Все выходные значения имеют те же размеры, что и pointsUsedPrior. posteriorDensities2 выход содержит задние значения плотности. priorDensities2 выходные данные содержат предыдущие значения плотности.

Подтвердить, что pointsUsedPP равно pointsUsedPost.

compare = @(a,b)sum(a == b) == numel(a);
cellfun(compare,pointsUsedPost,pointsUsedPP)
ans = 5x1 logical array

   1
   1
   1
   1
   1

Используемые точки эквивалентны.

Подтвердите, что задние плотности одинаковы, но что предыдущие плотности не одинаковы.

cellfun(compare,posteriorDensities1,posteriorDensities2)
ans = 5x1 logical array

   1
   1
   1
   1
   1

cellfun(compare,priorDensities1,priorDensities2)
ans = 5x1 logical array

   0
   0
   0
   0
   0

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

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

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

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

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)     
 
summaryTbl = summarize(PosteriorMdl);
summaryTbl = summaryTbl.MarginalDistributions;

summaryTbl - таблица, содержащая статистику, которая estimate отображается в командной строке.

Для каждого параметра определите набор из 50 равномерно разнесенных значений в пределах трех стандартных отклонений среднего значения. Поместите значения в ячейки вектора ячейки 5 на 1, следуя порядку параметров, которые составляют строки сводной таблицы оценки.

Points = cell(numel(summaryTbl.Mean),1); % Preallocation

for j = 1:numel(summaryTbl.Mean)
    Points{j} = linspace(summaryTbl.Mean(j) - 3*summaryTbl.Std(j),...
        summaryTbl.Mean(j) + 2*summaryTbl.Std(j),50);
end

Постройте график задних распределений в пределах соответствующих интервалов.

plot(PosteriorMdl,'Points',Points)

Figure contains 5 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. Axes 5 with title Sigma2 contains an object of type line.

Входные аргументы

свернуть все

Байесовская модель линейной регрессии, хранящая характеристики заднего распределения, указанные как conjugateblm или empiricalblm объект модели, возвращенный estimate.

При указании PriorMdl, то PosteriorMdl является задним распределением, состоящим из PriorMdl и данные. Если NumPredictors и VarNames свойства двух моделей не равны, plot выдает ошибку.

Байесовская модель линейной регрессии, хранящая предшествующие характеристики распределения, указанные как conjugateblm, semiconjugateblm, diffuseblm, empiricalblm, customblm, mixconjugateblm, mixsemiconjugateblm, или lassoblm объект модели, возвращенный bayeslm.

При указании PosteriorMdl, то PriorMdl является предыдущим распределением, которое, в сочетании с правдоподобием данных, формирует PosteriorMdl. Если NumPredictors и VarNames свойства двух моделей не равны, plot выдает ошибку.

Аргументы пары «имя-значение»

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

Пример: 'VarNames',["Beta1"; "Beta2"; "Sigma2"] строит графики распределений коэффициентов регрессии, соответствующих именам Beta1 и Beta2 в VarNames свойство объекта модели и дисперсию возмущений Sigma2.

Имена параметров, указывающие, какие плотности выводить на график на рисунке, указанные как разделенная запятыми пара, состоящая из 'VarNames' и вектор ячейки символьных векторов или строкового вектора. VarNames должен включать "Intercept", любое имя в VarNames имущество PriorMdl или PosteriorMdl, или "Sigma2".

По умолчанию plot выбирает "Intercept" (если в модели существует пересечение), все коэффициенты регрессии и "Sigma2". Если модель имеет более 34 коэффициентов регрессии, то plot выбирает только первый-34-й.

VarNames нечувствителен к регистру.

Совет

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

Пример: 'VarNames',["Beta(1)","Beta(2)"]

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

Значения параметров для расчета плотности и печати, заданные как разделенная запятыми пара, состоящая из 'Points' и numPoints-мерный числовой вектор или numVarNames-мерный вектор ячейки числовых векторов. numPoints - количество значений параметров, plot вычисляет и строит график плотности.

  • Если Points является числовым вектором, то plot оценивает и строит графики плотностей всех указанных распределений с использованием его элементов (см. VarNames).

  • Если Points является вектором ячейки числовых векторов, то:

    • numVarNames должно быть numel(VarNames), где VarNames - значение VarNames.

    • Ячейки соответствуют элементам VarNames.

    • Для j = 1,…,numVarNames, plot вычисляет и выводит на график плотность параметра с именем VarNames{j} используя вектор точек в ячейке Points(j).

По умолчанию plot определяет 1000 адекватные значения для вычисления и построения графика плотности для каждого параметра.

Пример: 'Points',{1:0.1:10 10:0.2:25 1:0.01:2}

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

Выходные аргументы

свернуть все

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

Предположим Points и VarNames являются значениями Points и VarNamesсоответственно. Если Points является числовым вектором, то PointsUsed является repmat({Points},numel(VarNames)). В противном случае PointsUsed равняется Points. Ячейки соответствуют именам в VarNames.

Оцененные и нанесенные на график задние плотности, возвращенные как numVarNames-by-1 вектор ячейки числовых векторов строк. numVarNames является numel(VarNames), где VarNames - значение VarNames. Ячейки соответствуют именам в VarNames. posteriorDensity имеет те же размеры, что и priorDensity.

Оцененные и нанесенные на график предыдущие плотности, возвращенные как numVarNames-by-1 вектор ячейки числовых векторов строк. priorDensity имеет те же размеры, что и posteriorDensity.

Окно рисунка, содержащее распределения, возвращенные как figure объект.

plot перезаписывает создаваемое окно фигуры.

При переименовании FigureHandle для нового окна фигуры или вызова figure перед вызовом plot, то plot продолжает перезаписывать текущую цифру. Для печати распределений в другом окне фигуры измените идентификатор фигуры текущего окна фигуры, переименовав его Tag собственность. Например, чтобы переименовать текущее окно фигуры под названием FigureHandle кому newFigure, в командной строке введите:

FigureHandle.Tag = newFigure;

Ограничения

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

Подробнее

свернуть все

Байесовская модель линейной регрессии

Байесовская модель линейной регрессии рассматривает параметры β и 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 вектор, содержащий все возмущения. Эти допущения подразумевают, что вероятность данных

    (β, start2 | y, x) =∏t=1Tϕ (yt; xtβ, start2).

    (yt; xtβ, start2) - гауссова плотность вероятности со средним значением xtβ и дисперсией start2, оцениваемой при yt;.

Перед рассмотрением данных необходимо наложить совместное предварительное предположение о распределении на (β, start2). В байесовском анализе выполняется обновление распределения параметров с использованием информации о параметрах, полученных из вероятности получения данных. Результатом является совместное апостериорное распределение (β, start2) или условное апостериорное распределение параметров.

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