Байесова модель линейной регрессии с рассеянным, сопряженным предшествующий для вероятности данных
Байесов объект модели линейной регрессии diffuseblm
указывает, что объединенное предшествующее распределение (β, σ 2) пропорционально 1/σ2 (diffuse prior model).
Вероятность данных где ϕ (yt; xtβ, σ 2) является Гауссовой плотностью вероятности, оцененной в yt со средним xtβ и отклонением σ 2. Получившиеся крайние и условные апостериорные распределения аналитически послушны. Для получения дополнительной информации на апостериорном распределении, смотрите Аналитически Послушное Последующее поколение.
В общем случае, когда вы создаете Байесов объект модели линейной регрессии, он задает объединенное предшествующее распределение и характеристики модели линейной регрессии только. Таким образом, объект модели является шаблоном, предназначенным для дальнейшего использования. А именно, чтобы включить данные в модель для анализа апостериорного распределения, передайте объект модели и данные к соответствующей объектной функции.
создает Байесов объект модели линейной регрессии (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
из набора данных предиктора, который вы задаете во время оценки, симуляции или прогнозирования.
Значением по умолчанию является {'Бета (1)', 'Бета (2)..., Бета (
, где 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,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
вычисляет условное апостериорное распределение, оно возвращает исходную предшествующую модель, не следующее, в первом положении списка выходных аргументов.
Считайте модель линейной регрессии в Оценке Крайними Апостериорными распределениями.
Создайте предшествующую модель для коэффициентов регрессии и отклонения воздействия, затем оцените крайние апостериорные распределения.
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
isa , но сосредоточенный в 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.