Байесова модель линейной регрессии с рассеянным, сопряженным предшествующий для вероятности данных
Байесов diffuseblm
объекта модели линейной регрессии указывает, что объединенное предшествующее распределение (β, σ 2) пропорционально 1/σ2 (diffuse prior model).
Вероятность данных где ϕ (yt; xtβ, σ 2) является Гауссовой плотностью вероятности, оцененной в yt со средним xtβ и отклонением σ 2. Получившиеся крайние и условные апостериорные распределения аналитически послушны. Для получения дополнительной информации на апостериорном распределении, смотрите Аналитически Послушное Последующее поколение.
В целом, когда вы создаете Байесов объект модели линейной регрессии, он задает объединенное предшествующее распределение и характеристики модели линейной регрессии только. Таким образом, объект модели является шаблоном, предназначенным для дальнейшего использования. А именно, чтобы включить данные в модель для анализа апостериорного распределения, передайте объект модели и данные к соответствующей объектной функции.
PriorMdl = diffuseblm(NumPredictors)
PriorMdl = diffuseblm(NumPredictors,Name,Value)
создает Байесов объект модели линейной регрессии (PriorMdl
= diffuseblm(NumPredictors
)PriorMdl
), состоявший из предикторов NumPredictors
и прерывания, и устанавливает свойство NumPredictors
. Объединенное предшествующее распределение (β, σ 2) является рассеянной моделью. PriorMdl
является шаблоном, который задает предшествующие дистрибутивы и размерность β.
Можно установить перезаписываемые значения свойств, когда вы создаете объект модели при помощи синтаксиса аргумента пары "имя-значение", или после того, как вы создаете объект модели при помощи записи через точку. Например, чтобы исключить прерывание из модели, войти
PriorMdl.Intercept = false;
NumPredictors
— Количество переменных прогнозаКоличество переменных прогноза в Байесовом несколько модель линейной регрессии, заданная как неотрицательное целое число.
NumPredictors
должен совпасть с количеством столбцов в ваших данных о предикторе, которые вы задаете во время образцовой оценки или симуляции.
При определении NumPredictors
исключите любой термин прерывания из значения.
После создания модели, если вы изменяете значение NumPredictors
с помощью записи через точку, затем VarNames
возвращается к своему значению по умолчанию.
Типы данных: double
Intercept
— Отметьте для включения прерывания модели регрессииtrue
(значение по умолчанию) | false
Отметьте для включения прерывания модели регрессии, заданного как значение в этой таблице.
Значение | Описание |
---|---|
false | Исключите прерывание из модели регрессии. Поэтому β является p - размерный вектор, где p является значением NumPredictors . |
true | Включайте прерывание в модель регрессии. Поэтому β (p + 1) - размерный вектор. Эта спецификация заставляет T-by-1 вектор из единиц предварительно ожидаться к данным о предикторе во время оценки и симуляции. |
Если вы включаете столбец из единиц в данных о предикторе для термина прерывания, то установленный Intercept
к false
.
Пример: 'Intercept',false
Типы данных: логический
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
).
\forall моменты времени, серия независимых Гауссовых воздействий со средним значением 0 и отклонение .
Предположим что коэффициенты регрессии и отклонение воздействия случайные переменные, и у вас нет предварительных знаний их значений или распределения. Таким образом, вы хотите использовать неинформативный предшествующий Jeffreys: объединенное предшествующее распределение пропорционально .
Эти предположения и вероятность данных подразумевают аналитически послушное апостериорное распределение.
Создайте рассеянную предшествующую модель для параметров линейной регрессии, которая является предшествующим типом модели по умолчанию. Задайте количество предикторов 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
отображает сводные данные предшествующих дистрибутивов. Поскольку предшествующее неинформативно, и данные еще не были включены, сводные данные тривиальны.
Можно установить перезаписываемые значения свойств созданных моделей с помощью записи через точку. Определите имена коэффициента регрессии к соответствующим именам переменных.
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
Полагайте, что модель линейной регрессии в Создает Рассеянную Предшествующую Модель.
Создайте рассеянную предшествующую модель для параметров линейной регрессии. Задайте количество предикторов, 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%-е Байесовы equitailed вероятные интервалы для параметров. Например, апостериорная вероятность, что коэффициент регрессии 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
Полагайте, что модель линейной регрессии в Создает Рассеянную Предшествующую Модель.
Создайте рассеянную предшествующую модель для параметров линейной регрессии. Задайте количество предикторов 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,condPostMeanBeta,CondPostCovBeta] = 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
Warning: Current syntax supports 6 output arguments, and will be removed in a future release. For supported output arguments, see <a href="matlab:helpview(fullfile(docroot,'econ','econ.map'),'blmestimate')">estimate</a>.
estimate
возвращается 4 1 вектор средних значений и ковариационная матрица 4 на 4 условного апостериорного распределения в condPostMeanBeta
и CondPostCovBeta
, соответственно. Кроме того, estimate
отображает сводные данные условного апостериорного распределения .
Предупреждение указывает, что в будущем релизе синтаксисы estimate
изменятся. В это время не обновляйте свой код. Для получения дополнительной информации смотрите Заменяющий Нежелательные Синтаксисы оценки.
Отобразите 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
вычисляет условное апостериорное распределение, он возвращает исходную предшествующую модель, не следующее, в первом положении списка выходных аргументов.
Считайте модель линейной регрессии в Оценке Крайними Апостериорными распределениями.
Создайте предшествующую модель для коэффициентов регрессии и отклонения воздействия, затем оцените крайние апостериорные распределения.
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-by-матрицей 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
является a , но сосредоточенный в 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
Апостериорные вероятности почти идентичны.
Считайте модель линейной регрессии в Оценке Крайними Апостериорными распределениями.
Создайте предшествующую модель для коэффициентов регрессии и отклонения воздействия, затем оцените крайние апостериорные распределения. Протяните последние 10 периодов данных из оценки, таким образом, можно использовать их, чтобы предсказать действительный GNP. Выключите отображение оценки.
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 является лучше всего выполняющей моделью тех сравниваемых.
Copyright 2018 The MathWorks, Inc.
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 вектор, содержащий все воздействия. Эти предположения подразумевают, что вероятность данных
ϕ (yt; xtβ, σ 2) является Гауссовой плотностью вероятности со средним xtβ и отклонением σ 2 оцененных в yt;.
Прежде, чем рассмотреть данные, вы налагаете предположение joint prior distribution на (β, σ 2). В Байесовом анализе вы обновляете распределение параметров при помощи информации о параметрах, полученных из вероятности данных. Результатом является joint posterior distribution (β, σ 2) или conditional posterior distributions параметров.
Функция bayeslm
может создать любой поддерживаемый предшествующий объект модели для Байесовой линейной регрессии.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.