Байесовская линейная регрессионая модель с диффузным сопряженным априорным для вероятности данных
Байесовская линейная регрессия объекта модели diffuseblm задает, что соединение предшествующее распределение (β, σ2) пропорционально 1/ σ2 (the diffuse prior model).
Вероятность данных: где ϕ (yt; xtβ, σ2) - Гауссова плотность вероятностей, оцениваемая в yt со средними xtβ и отклонением σ2. Получившиеся маргинальное и условное апостериорные распределения аналитически прослеживаются. Для получения дополнительной информации о апостериорном распределении смотрите Аналитически отслеживаемые апостериоры.
В целом, когда вы создаете объект байесовской линейной регрессионой модели, он задает предшествующее распределение соединений и характеристики только линейной регрессионой модели. То есть объект модели является шаблоном, предназначенным для дальнейшего использования. В частности, чтобы включить данные в модель для апостериорного анализа распределения, передайте объект модели и данные в соответствующую функцию объекта.
создает байесовский объект линейной регрессионной модели (PriorMdl = diffuseblm(NumPredictors)PriorMdl) состоят из NumPredictors предикторы и точка пересечения, и устанавливает NumPredictors свойство. Совместное предшествующее распределение (β, σ2) - диффузная модель. PriorMdl является шаблоном, который задает предыдущие распределения и размерность β.
устанавливает свойства (кроме PriorMdl = diffuseblm(NumPredictors,Name,Value)NumPredictors) с использованием аргументов пары "имя-значение". Заключайте каждое имя свойства в кавычки. Для примера, diffuseblm(2,'VarNames',["UnemploymentRate"; "CPI"]) задает имена двух переменных предиктора в модели.
Можно задать значения свойств записи, когда вы создаете объект модели с помощью синтаксиса аргумента пары "имя-значение" или после того, как вы создаете объект модели с помощью записи через точку. Для примера, чтобы исключить точку пересечения из модели, введите
PriorMdl.Intercept = false;
NumPredictors - Количество переменных предиктораКоличество переменных предиктора в байесовской многофакторной линейной регрессии, заданное в виде неотрицательного целого числа.
NumPredictors должно быть таким же, как и количество столбцов в данных предиктора, которые вы задаете во время оценки модели или симуляции.
При указании NumPredictors, исключить любой термин точки пересечения из значения.
После создания модели, если вы меняете значение NumPredictors использование записи через точку, затем VarNames возвращается к значению по умолчанию.
Типы данных: double
Intercept - Флаг включения точки пересечения регрессионной моделиtrue (по умолчанию) | falseФлаг для включения точки пересечения регрессионной модели, заданный как значение в этой таблице.
| Значение | Описание |
|---|---|
false | Исключить точку пересечения из регрессионной модели. Поэтому β является p-мерный вектор, где p - значение NumPredictors. |
true | Включите точку пересечения в регрессионую модель. Поэтому β есть a (p + 1) -мерный вектор. Эта спецификация заставляет вектор T-на-1 из них быть подготовленным к данным предиктора во время оценки и симуляции. |
Если вы включаете столбец таковых в данные предиктора для термина точки пересечения, задайте Intercept на false.
Пример: 'Intercept',false
Типы данных: logical
VarNames - Имена переменных предиктораИмена переменных предиктора для отображений, заданные как строковый вектор или вектор камеры векторов символов. VarNames должен содержать NumPredictors элементы. VarNames - имя переменной в столбце (j)j набора данных предиктора, который вы задаете во время оценки, симуляции или прогнозирования.
По умолчанию является {'Beta (1)', 'Beta (2),..., , где Beta (p)}p - значение NumPredictors.
Пример: 'VarNames',["UnemploymentRate"; "CPI"]
Типы данных: string | cell | char
estimate | Оцените апостериорное распределение параметров байесовской линейной регрессионой модели |
simulate | Симулируйте коэффициенты регрессии и отклонение нарушения порядка байесовской линейной регрессионой модели |
forecast | Прогнозные отклики байесовской линейной регрессионой модели |
plot | Визуализация априорных и апостериорных плотностей параметров байесовской линейной регрессионой модели |
summarize | Сводная статистика распределения стандартной байесовской линейной регрессионой модели |
Рассмотрим множественную линейную регрессионую модель, которая предсказывает реальный валовой национальный продукт США (GNPR) с использованием линейной комбинации индекса промышленного производства (IPI), общая занятость (E), и реальная заработная плата (WR).
Для всех временные точки, - серия независимых гауссовских нарушений порядка со средним значением 0 и отклонением .
Предположим, что коэффициенты регрессии и отклонение нарушения порядка являются случайными переменными, и вы не знаете ранее об их значениях или распределении. То есть вы хотите использовать неинформативное априорное распределение Джеффриса: соединение априорное пропорционально .
Эти предположения и вероятность данных подразумевают аналитически отслеживаемое апостериорное распределение.
Создайте диффузную предшествующую модель для параметров линейной регрессии, которая является типом предыдущей модели по умолчанию. Задайте количество предикторов p.
p = 3; Mdl = bayeslm(p)
Mdl =
diffuseblm with properties:
NumPredictors: 3
Intercept: 1
VarNames: {4x1 cell}
| Mean Std CI95 Positive Distribution
-----------------------------------------------------------------------------
Intercept | 0 Inf [ NaN, NaN] 0.500 Proportional to one
Beta(1) | 0 Inf [ NaN, NaN] 0.500 Proportional to one
Beta(2) | 0 Inf [ NaN, NaN] 0.500 Proportional to one
Beta(3) | 0 Inf [ NaN, NaN] 0.500 Proportional to one
Sigma2 | Inf Inf [ NaN, NaN] 1.000 Proportional to 1/Sigma2
Mdl является diffuseblm Байесовский объект линейной регрессионной модели, представляющий предшествующее распределение коэффициентов регрессии и отклонение нарушения порядка. В командном окне bayeslm отображает сводные данные предыдущих распределений. Поскольку предшествующее является неинформативным, и данные еще не были включены, сводные данные являются тривиальным.
Можно задать значения свойств writable для созданных моделей с помощью записи через точку. Установите имена коэффициентов регрессии в соответствующие имена переменных.
Mdl.VarNames = ["IPI" "E" "WR"]
Mdl =
diffuseblm with properties:
NumPredictors: 3
Intercept: 1
VarNames: {4x1 cell}
| Mean Std CI95 Positive Distribution
-----------------------------------------------------------------------------
Intercept | 0 Inf [ NaN, NaN] 0.500 Proportional to one
IPI | 0 Inf [ NaN, NaN] 0.500 Proportional to one
E | 0 Inf [ NaN, NaN] 0.500 Proportional to one
WR | 0 Inf [ NaN, NaN] 0.500 Proportional to one
Sigma2 | Inf Inf [ NaN, NaN] 1.000 Proportional to 1/Sigma2
Рассмотрим линейную регрессионую модель в Create Diffuse Previous Model.
Создайте диффузную предшествующую модель для параметров линейной регрессии. Задайте количество предикторов, p, и имена коэффициентов регрессии.
p = 3; PriorMdl = bayeslm(p,'ModelType','diffuse','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
| Mean Std CI95 Positive Distribution
------------------------------------------------------------------------------------
Intercept | -24.2536 9.5314 [-43.001, -5.506] 0.006 t (-24.25, 9.37^2, 58)
IPI | 4.3913 0.1535 [ 4.089, 4.693] 1.000 t (4.39, 0.15^2, 58)
E | 0.0011 0.0004 [ 0.000, 0.002] 0.999 t (0.00, 0.00^2, 58)
WR | 2.4682 0.3787 [ 1.723, 3.213] 1.000 t (2.47, 0.37^2, 58)
Sigma2 | 51.9790 10.0034 [35.965, 74.937] 1.000 IG(29.00, 0.00069)
PosteriorMdl является conjugateblm объект модели, хранящий маргинальное апостериорное распределение соединений и учитывая данные. estimate отображает сводные данные маргинальных апостериорных распределений в командном окне. Строки сводных данных соответствуют коэффициентам регрессии и нарушения порядка отклонения, а столбцы - характеристикам апостериорного распределения. Характеристики включают:
CI95, который содержит 95% байесовских справедливых интервалов для параметров. Для примера апостериорная вероятность того, что коэффициент регрессии WR находится в [1.723, 3.213] 0,95.
Positive, который содержит апостериорную вероятность того, что параметр больше 0. Для примера вероятность того, что точка пересечения больше 0, составляет 0,006.
Distribution, который содержит описание апостериорных распределений параметров. Для примера - маргинальное апостериорное распределение IPI t со средним значением 4,39, стандартное отклонение 0,15 и 58 степеней свободы.
Доступ к свойствам апостериорного распределения с помощью записи через точку. Для примера отобразите периферийные апостериорные средства путем доступа к Mu свойство.
PosteriorMdl.Mu
ans = 4×1
-24.2536
4.3913
0.0011
2.4682
Рассмотрим линейную регрессионую модель в Create Diffuse Previous Model.
Создайте диффузную предшествующую модель для параметров линейной регрессии. Задайте количество предикторов p, и имена коэффициентов регрессии.
p = 3; PriorMdl = bayeslm(p,'ModelType','diffuse','VarNames',["IPI" "E" "WR"])
PriorMdl =
diffuseblm with properties:
NumPredictors: 3
Intercept: 1
VarNames: {4x1 cell}
| Mean Std CI95 Positive Distribution
-----------------------------------------------------------------------------
Intercept | 0 Inf [ NaN, NaN] 0.500 Proportional to one
IPI | 0 Inf [ NaN, NaN] 0.500 Proportional to one
E | 0 Inf [ NaN, NaN] 0.500 Proportional to one
WR | 0 Inf [ NaN, NaN] 0.500 Proportional to one
Sigma2 | Inf Inf [ NaN, NaN] 1.000 Proportional to 1/Sigma2
Загрузите набор данных Нельсона-Плоссера. Создайте переменные для ряда отклика и предиктора.
load Data_NelsonPlosser X = DataTable{:,PriorMdl.VarNames(2:end)}; y = DataTable{:,'GNPR'};
Оцените условное апостериорное распределение учитывая данные и и возвращает сводную таблицу оценок для доступа к оценкам.
[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.2536 1.8696 [-27.918, -20.589] 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.4682 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 во время оценки, выводы на ней тривиальны.
Извлеките вектор средних значений и ковариационную матрицу условного апостериора из сводной таблицы оценок.
condPostMeanBeta = Summary.Mean(1:(end - 1))
condPostMeanBeta = 4×1
-24.2536
4.3913
0.0011
2.4682
CondPostCovBeta = Summary.Covariances(1:(end - 1),1:(end - 1))
CondPostCovBeta = 4×4
3.4956 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 =
diffuseblm with properties:
NumPredictors: 3
Intercept: 1
VarNames: {4x1 cell}
| Mean Std CI95 Positive Distribution
-----------------------------------------------------------------------------
Intercept | 0 Inf [ NaN, NaN] 0.500 Proportional to one
IPI | 0 Inf [ NaN, NaN] 0.500 Proportional to one
E | 0 Inf [ NaN, NaN] 0.500 Proportional to one
WR | 0 Inf [ NaN, NaN] 0.500 Proportional to one
Sigma2 | Inf Inf [ NaN, NaN] 1.000 Proportional to 1/Sigma2
Потому что estimate вычисляет условное апостериорное распределение, оно возвращает исходную предшествующую модель, а не апостериорную в первой позиции списка выходных аргументов.
Рассмотрим линейную регрессионую модель в Estimate Marginal Posterior Distributions.
Создайте предыдущую модель для коэффициентов регрессии и отклонения нарушения порядка, а затем оцените маргинальные апостериорные распределения.
p = 3; PriorMdl = bayeslm(p,'ModelType','diffuse','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
| Mean Std CI95 Positive Distribution
------------------------------------------------------------------------------------
Intercept | -24.2536 9.5314 [-43.001, -5.506] 0.006 t (-24.25, 9.37^2, 58)
IPI | 4.3913 0.1535 [ 4.089, 4.693] 1.000 t (4.39, 0.15^2, 58)
E | 0.0011 0.0004 [ 0.000, 0.002] 0.999 t (0.00, 0.00^2, 58)
WR | 2.4682 0.3787 [ 1.723, 3.213] 1.000 t (2.47, 0.37^2, 58)
Sigma2 | 51.9790 10.0034 [35.965, 74.937] 1.000 IG(29.00, 0.00069)
Извлеките среднее апостериорное из от апостериорной модели и апостериорной ковариации из сводных данных оценок, возвращенной summarize.
estBeta = PosteriorMdl.Mu;
Summary = summarize(PosteriorMdl);
estBetaCov = Summary.Covariances{1:(end - 1),1:(end - 1)};Предположим, что если коэффициент реальной заработной платы ниже 2,5, то вводится в действие политика. Хотя апостериорное распределение WR известно, и вы можете вычислить вероятности непосредственно, можно оценить вероятность, используя симуляцию Монте-Карло вместо этого.
Нарисуйте 1e6 выборки из маргинального апостериорного распределения .
NumDraws = 1e6;
rng(1);
BetaSim = simulate(PosteriorMdl,'NumDraws',NumDraws);BetaSim является 4-байт- 1e6 матрица, содержащая рисунки. Строки соответствуют коэффициенту регрессии, а столбцы - последовательным рисованиям.
Изолируйте розыгрыши, соответствующие коэффициенту реальной заработной платы, и затем идентифицируйте, какие розыгрыши меньше 2,5.
isWR = PosteriorMdl.VarNames == "WR";
wrSim = BetaSim(isWR,:);
isWRLT2p5 = wrSim < 2.5;Найдите предельную апостериорную вероятность того, что коэффициент регрессии WR ниже 2,5 путем вычисления доли рисок, которые меньше 2,5.
probWRLT2p5 = mean(isWRLT2p5)
probWRLT2p5 = 0.5341
Апостериорная вероятность того, что коэффициент реальной заработной платы меньше 2,5, составляет около 0.53.
Маргинальное апостериорное распределение коэффициента WR является , но с центром 2,47 и масштабом 0,37. Непосредственно вычислите апостериорную вероятность того, что коэффициент 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.5333
Апостериорные вероятности почти идентичны.
Рассмотрим линейную регрессионую модель в Estimate Marginal Posterior Distributions.
Создайте предыдущую модель для коэффициентов регрессии и отклонения нарушения порядка, а затем оцените маргинальные апостериорные распределения. Продержитесь последние 10 периодов данных из оценки, чтобы использовать их для прогноза реального ВНП. Отключите отображение оценки.
p = 3; PriorMdl = bayeslm(p,'ModelType','diffuse','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.5489
RMSE прогноза является относительной мерой точности прогноза. В частности, вы оцениваете несколько моделей, используя различные допущения. Модель с самым низким прогнозным RMSE является наиболее эффективной моделью сравниваемых таковых.
Копирайт 2018 The MathWorks, Inc.
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, содержащим все нарушения порядка. Эти предположения подразумевают, что вероятность данных является
ϕ (yt; xtβ, σ2) - Гауссова плотность вероятностей со средней xtβ и отклонением σ2 оценивается при yt;.
Прежде чем рассматривать данные, вы накладываете joint prior distribution предположение на (β, σ2). В байесовском анализе вы обновляете распределение параметров с помощью информации о параметрах, полученных из вероятности данных. Результатом является joint posterior distribution (β, σ2) или conditional posterior distributions параметров.
bayeslm функция может создать любой поддерживаемый объект предыдущей модели для Байесовской линейной регрессии.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.