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.

\forall 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 objects. Axes object 1 with title Intercept contains an object of type line. Axes object 2 with title IPI contains an object of type line. Axes object 3 with title E contains an object of type line. Axes object 4 with title WR contains an object of type line. Axes object 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 objects. Axes object 1 with title Intercept contains an object of type line. Axes object 2 with title IPI contains an object of type line. Axes object 3 with title E contains an object of type line. Axes object 4 with title WR contains an object of type line. Axes object 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 objects. Axes object 1 with title Intercept contains an object of type line. Axes object 2 with title IPI contains an object of type line. Axes object 3 with title E contains an object of type line. Axes object 4 with title WR contains an object of type line. Axes object 5 with title Sigma2 contains an object of type line.

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

plot(PosteriorMdl,PriorMdl);

Figure contains 5 axes objects. Axes object 1 with title Intercept contains 2 objects of type line. Axes object 2 with title IPI contains 2 objects of type line. Axes object 3 with title E contains 2 objects of type line. Axes object 4 with title WR contains 2 objects of type line. Axes object 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 object. The axes object 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 object. The axes object 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 objects. Axes object 1 with title Intercept contains an object of type line. Axes object 2 with title IPI contains an object of type line. Axes object 3 with title E contains an object of type line. Axes object 4 with title WR contains an object of type line. Axes object 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 objects. Axes object 1 with title Intercept contains an object of type line. Axes object 2 with title IPI contains an object of type line. Axes object 3 with title E contains an object of type line. Axes object 4 with title WR contains an object of type line. Axes object 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 objects. Axes object 1 with title Intercept contains 2 objects of type line. Axes object 2 with title IPI contains 2 objects of type line. Axes object 3 with title E contains 2 objects of type line. Axes object 4 with title WR contains 2 objects of type line. Axes object 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 objects. Axes object 1 with title Intercept contains an object of type line. Axes object 2 with title IPI contains an object of type line. Axes object 3 with title E contains an object of type line. Axes object 4 with title WR contains an object of type line. Axes object 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 имя аргумента и 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 оценивает и строит плотность параметра под названием VarNamesJ} при помощи вектора из точек в ячейке 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- 1 вектор ячейки из числовых векторов-строк. numVarNames numel (VarNames), где VarNames значение VarNames. Ячейки соответствуют именам в VarNames. posteriorDensity имеет те же размерности как priorDensity.

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

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

plot перезаписывает окно рисунка, которое это производит.

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

FigureHandle.Tag = newFigure;

Ограничения

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

Больше о

свернуть все

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

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

В течение многих времен t = 1..., T:

  • yt является наблюдаемым ответом.

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

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

  • εt является случайным воздействием со средним значением нуля и Cov (ε) = σ2T I ×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