plot

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

Описание

пример

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

пример

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

пример

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

пример

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 и отклонением σ2.

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

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

  • σ2IG(A,B). 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 объект модели, который содержит апостериорные распределения β и σ2.

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

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. The 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. The posteriorDensities2 выход содержит апостериорные значения плотности. The 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' и a numPoints-мерный числовой вектор или numVarNames-мерный вектор камеры числовых векторов. numPoints - количество значений параметров, которые plot оценивает и строит графики плотности.

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

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

    • numVarNames должен быть числительным (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 is repmat ({Points}, число (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;

Ограничения

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

Подробнее о

свернуть все

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

A Bayesian linear regression model обрабатывает параметры β и σ2 в модели многофакторной линейной регрессии (MLR) yt = xt β + εt как случайные переменные.

Для времен t = 1,..., T:

  • yt - наблюдаемая реакция.

  • xt является 1-бай- (p + 1) вектором-строкой наблюдаемых значений p предикторов. Чтобы разместить точку пересечения модели, x 1 t = 1 для всех t.

  • β является (p + 1) -на-1 вектор-столбец коэффициентов регрессии, соответствующих переменным, которые составляют столбцы xt.

  • εt является случайным нарушением порядка со средним значением нуля и Cov (ε) = σ2I T × T, в то время как ε является вектором T -by-1, содержащим все нарушения порядка. Эти предположения подразумевают, что вероятность данных является

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

    ϕ (yt; xtβ, σ2) - Гауссова плотность вероятностей со средней xtβ и отклонением σ2 оценивается при yt;.

Прежде чем рассматривать данные, вы накладываете joint prior distribution предположение на (β, σ2). В байесовском анализе вы обновляете распределение параметров с помощью информации о параметрах, полученных из вероятности данных. Результатом является joint posterior distribution, σ2) или conditional posterior distributions параметров.

Введенный в R2017a