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