график

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

Синтаксис

plot(PosteriorMdl)
plot(PriorMdl)
plot(PosteriorMdl,PriorMdl)
plot(___,Name,Value)
pointsUsed = plot(___)
[pointsUsed,posteriorDensity,priorDensity] = plot(___)
[pointsUsed,posteriorDensity,priorDensity,FigureHandle] = 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);

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);

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);

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

plot(PosteriorMdl,PriorMdl);

Считайте модель регрессии в Графике Предшествующими и Апостериорными распределениями.

Загрузите набор данных Нельсона-Плоссера, создайте значение по умолчанию, спрягают предшествующую модель, и затем оценивают следующее использование первых 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');

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');

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

Считайте модель регрессии в Графике Предшествующими и Апостериорными распределениями.

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

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);

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

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

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

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

[pointsUsedPost,posteriorDensities1] = plot(PosteriorMdl);

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

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

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

Все выходные значения имеют те же размерности как 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)

Входные параметры

свернуть все

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

Ограничения

Поскольку 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 (ε) = σ 2IT×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