estimate
В будущем релизе функция estimate
Байесовых моделей conjugateblm
линейной регрессии, semiconjugateblm
, diffuseblm
, empiricalblm
и customblm
возвратит только предполагаемую модель и сводную таблицу оценки. А именно, синтаксис, возвращающий все выходные аргументы, изменится, как обозначено в следующем коде.
[PosteriorMdl,estBeta,EstBetaCov,estSigma2,estSigma2Var,Summary] = estimate(...); % Current and past releases [PosteriorMdl,Summary] = estimate(...); % Future release
Запуск в релизе R2018b, если estimate
возвращает больше, чем предполагаемая модель (выходной аргумент в первом положении), то это выдает это предупреждение:
Warning: Current syntax supports 6 output arguments, and will be removed in a future release. For supported output arguments, see estimate.
Вы не должны изменять свой код в это время. Однако, чтобы подготовить ваш код к этому программному обеспечению изменяют и избегают предупреждения, можно выполнить эту процедуру:
Ищите свой код экземпляры, в которых estimate
возвращает любой выходной параметр кроме PosteriorMdl
.
В идентифицированных экземплярах определите, возвращает ли estimate
оценки предельного или условного распределения. Если вызов estimate
использует аргумент пары "имя-значение" 'Beta'
или 'Sigma2'
, то это возвращает оценки условного распределения. В противном случае estimate
возвращает оценки предельного распределения.
Для экземпляров, возвращающих оценки предельного распределения:
Возвратите только PosteriorMdl
, когда вы вызовете estimate
.
Оцените крайнюю следующую статистику с помощью соответствующего кода в этой таблице.
Выходной аргумент | conjugateblm или diffuseblm | semiconjugateblm , empiricalblm или customblm |
---|---|---|
estBeta |
estBeta = PosteriorMdl.Mu; |
estBeta = mean(PosteriorMdl.BetaDraws,2); |
EstBetaCov | smry = summarize(PosteriorMdl); EstBetaCov = smry.Covariances{1:end - 1,1:end - 1}; EstBetaCov = PosteriorMdl.V/PosteriorMdl.B/(PosteriorMdl.A - 1); |
EstBetaCov = cov(PosteriorMdl.BetaDraws'); |
estSigma2 | smry = summarize(PosteriorMdl); estSigma2 = smry.MarginalDistributions.Mean(end); estSigma2 = 1/PosteriorMdl.B/(PosteriorMdl.A - 1); |
estSigma2 = mean(PosteriorMdl.Sigma2Draws); |
estSigma2Var | smry = summarize(PosteriorMdl); estSigma2Var = smry.Covariances{end,end}; estSigma2Var = 1/(PosteriorMdl.B^2*(PosteriorMdl.A - 1)^2*(PosteriorMdl.A - 2)); |
estSigma2Var = var(PosteriorMdl.Sigma2Draws); |
Summary |
smry = summarize(PosteriorMdl); Summary = smry.MarginalDistributions; Summary.Covariances = smry.Covariances.Variables |
smry = summarize(PosteriorMdl); Summary = smry.MarginalDistributions; Summary.Covariances = smry.Covariances.Variables |
Для примеров смотрите Замену Нежелательный Синтаксис Когда Оценка Аналитичного Крайний Следующий и Замену Нежелательный Синтаксис Когда Оценка Числового Крайний Следующий.
Для экземпляров, возвращающих оценки условного распределения, нет никакой простой замены. Можно проигнорировать предупреждение, и вы не должны принимать меры теперь. Однако это - лучшая практика подготовиться к изменению.
Подготовьтесь путем обновления кода, чтобы заменить все экземпляры, в которых estimate
возвращает estBeta
, EstBetaCov
, estSigma2
и estSigma2Var
с кодом, который извлекает оценки из сводной таблицы оценки (который находится в настоящее время в шестом выходном положении).
Эта таблица описывает, как извлечь условные следующие оценки из сводной таблицы оценки Summary
, возвращенный estimate
.
Выходной аргумент | Оценка |
---|---|
estBeta |
estBeta = Summary.Mean(1:end - 1); |
EstBetaCov |
EstBetaCov = Summary.Covariances{1:end - 1,1:end - 1} |
estSigma2 |
estSigma2 = Summary.Mean(end) |
estSigma2Var |
estSigma2Var = Summary.Covariances{end,end} |
В будущем релизе, когда изменение синтаксиса произойдет, estimate
сохранит условные следующие оценки в сводной таблице оценки, возвращенной во втором выходном положении. Если вы подготовили свой код, то, когда изменение синтаксиса происходит, заменяют все экземпляры
[PosteriorMdl,~,~,~,~,Summary] = estimate(...);
с
[PosteriorMdl,Summary] = estimate(...);
Если бы вы не подготовили свой код, то, когда изменение синтаксиса происходит, необходимо обновить код, как описано в предыдущей таблице.
Для примера смотрите Замену Нежелательный Синтаксис Когда Оценка Следующего Условного выражения.
Этот пример показывает, как заменить нежелательный синтаксис estimate
, когда это возвращает аналитическое предельное распределение. Несмотря на то, что этот пример использует conjugateblm
предшествующая модель, можно использовать тот же код для рассеянных предшествующих моделей.
Рассмотрите модель линейной регрессии кратного, которая предсказывает США действительный валовой национальный продукт (GNPR
) с помощью линейной комбинации индекса промышленного производства (IPI
), общая занятость (E
) и действительная заработная плата (WR
). AssumeThat:
Прерывание и три коэффициента регрессии являются случайными переменными с многомерным нормальным предшествующим условным выражением распределения на отклонении воздействия. Предшествующее среднее значение является 4-D вектором нулей, и предшествующая ковариационная матрица является единичной матрицей 4 на 4, масштабируемой 10 000.
Отклонение воздействия является случайной переменной с обратной гаммой предшествующее распределение. Форма и значения масштабного коэффициента равняются 3 и 1, соответственно.
Создайте сопряженную предшествующую модель нормальной обратной гаммы для параметров линейной регрессии. Определите номер предикторов p. Определите имена коэффициента регрессии к соответствующим именам переменных.
p = 3; PriorMdl = bayeslm(p,'ModelType','conjugate',... 'VarNames',["IPI" "E" "WR"]);
Загрузите набор данных Нельсона-Плоссера. Создайте переменные для ряда предиктора и ответа.
load Data_NelsonPlosser X = DataTable{:,PriorMdl.VarNames(2:end)}; y = DataTable{:,'GNPR'};
Оцените крайнее апостериорное распределение. Возвратите все оценки апостериорного распределения при помощи нежелательного синтаксиса. Выключите отображение оценки.
[PosteriorMdl,estBeta,estBetaCov,estSigma2,estSigma2Var] = ... estimate(PriorMdl,X,y,'Display',false)
Warning: Current syntax supports 6 output arguments, and will be removed in a future release. For supported output arguments, see estimate. > In conjugateblm/estimate (line 205) PosteriorMdl = conjugateblm with properties: NumPredictors: 3 Intercept: 1 VarNames: {4×1 cell} Mu: [4×1 double] V: [4×4 double] A: 34 B: 6.8660e-04 | 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) estBeta = -24.2494 4.3913 0.0011 2.4683 estBetaCov = 77.1246 0.7713 -0.0024 0.5311 0.7713 0.0200 -0.0000 -0.0295 -0.0024 -0.0000 0.0000 -0.0001 0.5311 -0.0295 -0.0001 0.1218 estSigma2 = 44.1347 estSigma2Var = 60.8709
Предупреждение указывает, что синтаксис, возвращающий больше, чем только следующая модель, изменится в будущем.
Вычислите следующие оценки при помощи поощренной процедуры.
estBeta = PosteriorMdl.Mu % Posterior mean of coefficients smry = summarize(PosteriorMdl); EstBetaCov = smry.Covariances{1:end - 1,1:end - 1} % Posterior covariance of coefficients estSigma2 = smry.MarginalDistributions.Mean(end) % Posterior mean of disturbance variance estSigma2Var = smry.Covariances{end,end} % Posterior variance of disturbance variance
estBeta = -24.2494 4.3913 0.0011 2.4683 EstBetaCov = 77.1246 0.7713 -0.0024 0.5311 0.7713 0.0200 -0.0000 -0.0295 -0.0024 -0.0000 0.0000 -0.0001 0.5311 -0.0295 -0.0001 0.1218 estSigma2 = 44.1347 estSigma2Var = 60.8709
Оценки, следующие из реализации и нежелательный синтаксис и поощренная процедура, эквивалентны.
Этот пример показывает, как заменить нежелательный синтаксис estimate
, когда это возвращает числовое предельное распределение. Несмотря на то, что этот пример использует модель semiconjugateblm
, можно использовать тот же код для эмпирических и пользовательских предшествующих моделей.
Рассмотрите модель линейной регрессии кратного, которая предсказывает США действительный валовой национальный продукт (GNPR
) с помощью линейной комбинации индекса промышленного производства (IPI
), общая занятость (E
) и действительная заработная плата (WR
). AssumeThat:
Прерывание и три коэффициента регрессии являются случайными переменными с многомерным нормальным предшествующим распределением. Предшествующее среднее значение является 4-D вектором нулей, и предшествующая ковариационная матрица является единичной матрицей 4 на 4, масштабируемой 10 000.
Отклонение воздействия является случайной переменной с обратной гаммой предшествующее распределение. Форма и значения масштабного коэффициента равняются 3 и 1, соответственно.
Эти четыре коэффициента регрессии и отклонение воздействия независимы.
Создайте полусопряженную предшествующую модель нормальной обратной гаммы для параметров линейной регрессии. Задайте количество предикторов p. Определите имена коэффициента регрессии к соответствующим именам переменных.
p = 3; PriorMdl = bayeslm(p,'ModelType','semiconjugate',... 'VarNames',["IPI" "E" "WR"]);
Загрузите набор данных Нельсона-Плоссера. Создайте переменные для ряда предиктора и ответа.
load Data_NelsonPlosser X = DataTable{:,PriorMdl.VarNames(2:end)}; y = DataTable{:,'GNPR'};
Оцените крайнее апостериорное распределение. Возвратите все оценки апостериорного распределения при помощи нежелательного синтаксиса. Выключите отображение оценки.
rng(1); % For reproducibility [PosteriorMdl,estBeta,estBetaCov,estSigma2,estSigma2Var] = ... estimate(PriorMdl,X,y,'Display',false)
Warning: Current syntax supports 6 output arguments, and will be removed in a future release. For supported output arguments, see estimate. > In semiconjugateblm/estimate (line 246) PosteriorMdl = empiricalblm with properties: NumPredictors: 3 Intercept: 1 VarNames: {4×1 cell} BetaDraws: [4×10000 double] Sigma2Draws: [1×10000 double] | Mean Std CI95 Positive Distribution ------------------------------------------------------------------------- Intercept | -23.9922 9.0520 [-41.734, -6.198] 0.005 Empirical IPI | 4.3929 0.1458 [ 4.101, 4.678] 1.000 Empirical E | 0.0011 0.0003 [ 0.000, 0.002] 0.999 Empirical WR | 2.4711 0.3576 [ 1.762, 3.178] 1.000 Empirical Sigma2 | 46.7474 8.4550 [33.099, 66.126] 1.000 Empirical estBeta = -23.9922 4.3929 0.0011 2.4711 estBetaCov = 81.9379 0.8162 -0.0025 0.5893 0.8162 0.0213 -0.0000 -0.0309 -0.0025 -0.0000 0.0000 -0.0001 0.5893 -0.0309 -0.0001 0.1279 estSigma2 = 46.7474 estSigma2Var = 71.4868
Предупреждение указывает, что синтаксис, возвращающий больше, чем только следующая модель, изменится в будущем.
Вычислите следующие оценки при помощи поощренной процедуры.
estBeta = mean(PosteriorMdl.BetaDraws,2) % Posterior mean of coefficients EstBetaCov = cov(PosteriorMdl.BetaDraws') % Posterior covariance of coefficients estSigma2 = mean(PosteriorMdl.Sigma2Draws) % Posterior mean of disturbance variance estSigma2Var = var(PosteriorMdl.Sigma2Draws) % Posterior variance of disturbance variance
estBeta = -23.9922 4.3929 0.0011 2.4711 EstBetaCov = 81.9379 0.8162 -0.0025 0.5893 0.8162 0.0213 -0.0000 -0.0309 -0.0025 -0.0000 0.0000 -0.0001 0.5893 -0.0309 -0.0001 0.1279 estSigma2 = 46.7474 estSigma2Var = 71.4868
Оценки, следующие из реализации и нежелательный синтаксис и поощренная процедура, эквивалентны.
Этот пример показывает, как подготовить ваш код к удалению нежелательного синтаксиса estimate
, когда вы оцениваете условное апостериорное распределение. Несмотря на то, что этот пример использует нормальную обратную гамму сопряженная Байесова модель линейной регрессии, можно использовать тот же код для полусопряженных, рассеянных, эмпирических, и пользовательских предшествующих моделей.
Рассмотрите модель линейной регрессии кратного, которая предсказывает США действительный валовой национальный продукт (GNPR
) с помощью линейной комбинации индекса промышленного производства (IPI
), общая занятость (E
) и действительная заработная плата (WR
). AssumeThat:
Прерывание и три коэффициента регрессии являются случайными переменными с многомерным нормальным предшествующим условным выражением распределения на отклонении воздействия. Предшествующее среднее значение является 4-D вектором нулей, и предшествующая ковариационная матрица является единичной матрицей 4 на 4, масштабируемой 10 000.
Отклонение воздействия является случайной переменной с обратной гаммой предшествующее распределение. Форма и значения масштабного коэффициента равняются 3 и 1, соответственно.
Создайте сопряженную предшествующую модель нормальной обратной гаммы для параметров линейной регрессии. Задайте количество предикторов p. Определите имена коэффициента регрессии к соответствующим именам переменных.
p = 3; PriorMdl = bayeslm(p,'ModelType','conjugate',... 'VarNames',["IPI" "E" "WR"]);
Загрузите набор данных Нельсона-Плоссера. Создайте переменные для ряда предиктора и ответа.
load Data_NelsonPlosser X = DataTable{:,PriorMdl.VarNames(2:end)}; y = DataTable{:,'GNPR'};
Оцените условное апостериорное распределение коэффициентов регрессии, учитывая, что отклонение воздействия равняется 10. Возвратите все условные оценки апостериорного распределения коэффициентов регрессии и сводной таблицы оценки при помощи нежелательного синтаксиса. Выключите отображение оценки.
[~,estBeta,estBetaCov,~,~,Summary] = ... estimate(PriorMdl,X,y,'Sigma2',10,'Display',false)
Warning: Current syntax supports 6 output arguments, and will be removed in a future release. For supported output arguments, see estimate. > In conjugateblm/estimate (line 205) estBeta = -24.2494 4.3913 0.0011 2.4683 estBetaCov = 17.4748 0.1748 -0.0005 0.1203 0.1748 0.0045 -0.0000 -0.0067 -0.0005 -0.0000 0.0000 -0.0000 0.1203 -0.0067 -0.0000 0.0276 Summary = 5×6 table Mean Std CI95 Positive Distribution Covariances _________ __________ _____________________ __________ ____________________ _______________________________________________________________________ Intercept -24.249 4.1803 -32.443 -16.056 3.2982e-09 'N (-24.25, 4.18^2)' 17.475 0.17477 -0.00053597 0.12034 0 IPI 4.3913 0.067307 4.2594 4.5233 1 'N (4.39, 0.07^2)' 0.17477 0.0045303 -1.4728e-06 -0.0066796 0 E 0.0011202 0.00015675 0.000813 0.0014274 1 'N (0.00, 0.00^2)' -0.00053597 -1.4728e-06 2.4571e-08 -1.8129e-05 0 WR 2.4683 0.1661 2.1427 2.7938 1 'N (2.47, 0.17^2)' 0.12034 -0.0066796 -1.8129e-05 0.02759 0 Sigma2 10 0 10 10 1 'Fixed value' 0 0 0 0 0
Предупреждение указывает, что синтаксис, возвращающий больше, чем только следующая модель, изменится в будущем.
Вычислите следующие оценки при помощи поощренной процедуры.
estBeta = Summary.Mean(1:end - 1) % Posterior mean of coefficients EstBetaCov = Summary.Covariances(1:end - 1,1:end - 1) % Posterior covariance of coefficients
estBeta = -24.2494 4.3913 0.0011 2.4683 EstBetaCov = 17.4748 0.1748 -0.0005 0.1203 0.1748 0.0045 -0.0000 -0.0067 -0.0005 -0.0000 0.0000 -0.0000 0.1203 -0.0067 -0.0000 0.0276
Оценки, следующие из реализации и нежелательный синтаксис и поощренная процедура, эквивалентны.