estimate estimate функция байесовских моделей линейной регрессии conjugateblm, semiconjugateblm, diffuseblm, empiricalblm, и customblm возвращает только оценочную модель и сводную таблицу оценки. Предыдущий и текущий синтаксисы для estimate являются:
[PosteriorMdl,estBeta,EstBetaCov,estSigma2,estSigma2Var,Summary] = estimate(...); % Now issues error [PosteriorMdl,Summary] = estimate(...); % Supported
Начиная с R2019b, estimate возвращает оцененный объект модели в первой позиции выходного аргумента и сводную таблицу оценки во второй позиции выходного аргумента. Если указать выходные аргументы в последующих позициях, то estimate выдает эту ошибку:
Too many output arguments.
Чтобы избежать ошибки, обновите код, выполнив эту процедуру.
Поиск экземпляров кода, в которых estimate возвращает любые позиции выходного аргумента после первого.
В выявленных экземплярах определите, estimate возвращает оценки предельного или условного распределения. Если вызов estimate использует 'Beta' или 'Sigma2' аргумент пары имя-значение, функция возвращает оценки условного распределения. В противном случае it возвращает оценки предельного распределения.
Для случаев, возвращающих оценки предельного распределения:
Вернуть PosteriorMdl и Summary при звонке estimate.
Оцените предельную заднюю статистику, используя соответствующий код в этой таблице.
| Выходной аргумент | PosteriorMdl Является conjugateblm Объект | PosteriorMdl Является empiricalblm Объект |
|---|---|---|
estBeta | estBeta = PosteriorMdl.Mu; estBeta = Summary.Mean(1:(end - 1)); | estBeta = Summary.Mean(1:(end - 1)); estBeta = mean(PosteriorMdl.BetaDraws,2); |
EstBetaCov | EstBetaCov = Summary.Covariances(1:(end - 1),1:(end - 1)); EstBetaCov = PosteriorMdl.V/PosteriorMdl.B/(PosteriorMdl.A - 1); | EstBetaCov = Summary.Covariances(1:(end - 1),1:(end - 1)); EstBetaCov = cov(PosteriorMdl.BetaDraws'); |
estSigma2 | estSigma2 = Summary.Mean(end); estSigma2 = 1/PosteriorMdl.B/(PosteriorMdl.A - 1); | estSigma2 = Summary.Mean(end); estSigma2 = mean(PosteriorMdl.Sigma2Draws); |
estSigma2Var | estSigma2Var = Summary.Covariances(end,end); estSigma2Var = 1/(PosteriorMdl.B^2*(PosteriorMdl.A - 1)^2*(PosteriorMdl.A - 2)); | estSigma2Var = Summary.Covariances(end,end); estSigma2Var = var(PosteriorMdl.Sigma2Draws); |
Примеры см. в разделах Замена удаленного синтаксиса при оценке аналитического краевого положения и Замена удаленного синтаксиса при оценке числового краевого положения.
Для экземпляров, возвращающих оценки условного распределения, необходимо вернуть сводную таблицу оценки. Summary во второй позиции выходного аргумента. В этой таблице описывается, как извлечь условные апостериорные оценки из Summary.
| Выходной аргумент | Оценка |
|---|---|
estBeta |
|
EstBetaCov |
|
estSigma2 |
|
estSigma2Var |
|
Пример см. в разделе Замена удаленного синтаксиса при оценке условного заднего положения.
В этом примере показано, как заменить удаленный синтаксис estimate когда он возвращает аналитический краевой задний.
Рассмотрим модель множественной линейной регрессии, которая предсказывает реальный валовой национальный продукт США (GNPR) с использованием линейной комбинации индекса промышленного производства (IPI), общая занятость (E) и реальная заработная плата (WR). Предположим, что:
Коэффициенты перехвата и три коэффициента регрессии являются случайными переменными с многомерным нормальным предшествующим распределением, обусловленным дисперсией возмущений. Предыдущее среднее является 4-D вектором нулей, а предшествующая ковариационная матрица является единичной матрицей 4 на 4, масштабированной на 10000.
Дисперсия возмущений является случайной величиной с обратным гамма-предварительным распределением. Значения параметров формы и масштаба равны 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'};
Перед R2019b, estimate может вернуть до шести выходов, каждый из которых суммирует апостериорное распределение. Ранее поддерживаемый синтаксис:
[PosteriorMdl,estBeta,EstBetaCov,estSigma2,estSigma2Var,Summary] = estimate(PriorMdl,X,y);
Для R2019b, estimate поддерживает возврат только двух выходов: задняя модель PosteriorMdl и сводная таблица оценки Summary. Оцените предельное апостериорное распределение с помощью обновленного синтаксиса. Верните заднюю модель и сводную таблицу оценки.
[PosteriorMdl,Summary] = estimate(PriorMdl,X,y);
Method: Analytic posterior distributions
Number of observations: 62
Number of predictors: 4
Log marginal likelihood: -259.348
| 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 = PosteriorMdl.Mu % Posterior mean of coefficientsestBeta = 4×1
-24.2494
4.3913
0.0011
2.4683
EstBetaCov = Summary.Covariances(1:(end - 1),1:(end - 1)) % Posterior covariance of coefficientsEstBetaCov = 4×4
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 = Summary.Mean(end) % Posterior mean of disturbance varianceestSigma2 = 44.1347
estSigma2Var = Summary.Covariances(end,end) % Posterior variance of disturbance varianceestSigma2Var = 60.8709
В этом примере показано, как заменить удаленный синтаксис estimate когда он возвращает численный краевой задний.
Рассмотрим модель множественной линейной регрессии, которая предсказывает реальный валовой национальный продукт США (GNPR) с использованием линейной комбинации индекса промышленного производства (IPI), общая занятость (E) и реальная заработная плата (WR). Предположим, что:
Коэффициенты перехвата и три коэффициента регрессии являются случайными переменными с многомерным нормальным предшествующим распределением, обусловленным дисперсией возмущений. Предыдущее среднее является 4-D вектором нулей, а предшествующая ковариационная матрица является единичной матрицей 4 на 4, масштабированной на 10000.
Дисперсия возмущений является случайной величиной с обратным гамма-предварительным распределением. Значения параметров формы и масштаба равны 3 и 1 соответственно.
Создайте предыдущую модель normal-inverse-gamma semaconjugate для параметров линейной регрессии. Укажите число предикторов p. Задайте имена коэффициентов регрессии для соответствующих имен переменных.
p = 3; PriorMdl = bayeslm(p,'ModelType','semiconjugate','VarNames',["IPI" "E" "WR"]);
Загрузите набор данных Нельсона-Плоссера. Создайте переменные для последовательности ответа и предиктора.
load Data_NelsonPlosser X = DataTable{:,PriorMdl.VarNames(2:end)}; y = DataTable{:,'GNPR'};
Перед R2019b, estimate может вернуть до шести выходов, каждый из которых суммирует апостериорное распределение. Ранее поддерживаемый синтаксис:
[PosteriorMdl,estBeta,EstBetaCov,estSigma2,estSigma2Var,Summary] = estimate(PriorMdl,X,y);
Для R2019b, estimate поддерживает возврат только двух выходов: задняя модель PosteriorMdl и сводная таблица оценки Summary. Оцените предельное апостериорное распределение с помощью обновленного синтаксиса. Верните заднюю модель и сводную таблицу оценки.
[PosteriorMdl,Summary] = estimate(PriorMdl,X,y);
Method: Gibbs sampling with 10000 draws
Number of observations: 62
Number of predictors: 4
| Mean Std CI95 Positive Distribution
-------------------------------------------------------------------------
Intercept | -23.9999 9.0499 [-41.852, -6.163] 0.003 Empirical
IPI | 4.3933 0.1445 [ 4.112, 4.677] 1.000 Empirical
E | 0.0011 0.0003 [ 0.000, 0.002] 1.000 Empirical
WR | 2.4696 0.3571 [ 1.764, 3.169] 1.000 Empirical
Sigma2 | 46.9242 8.4732 [33.244, 66.309] 1.000 Empirical
Вычислите апостериорные оценки с помощью новой процедуры.
estBeta = Summary.Mean(1:(end - 1)) % Posterior mean of coefficientsestBeta = 4×1
-23.9999
4.3933
0.0011
2.4696
EstBetaCov = Summary.Covariances(1:(end - 1),1:(end - 1)) % Posterior covariance of coefficientsEstBetaCov = 4×4
81.9002 0.8161 -0.0025 0.5843
0.8161 0.0209 -0.0000 -0.0303
-0.0025 -0.0000 0.0000 -0.0001
0.5843 -0.0303 -0.0001 0.1275
estSigma2 = Summary.Mean(end) % Posterior mean of disturbance varianceestSigma2 = 46.9242
estSigma2Var = Summary.Covariances(end,end) % Posterior variance of disturbance varianceestSigma2Var = 71.7952
В этом примере показано, как заменить удаленный синтаксис estimate когда он возвращает условный задний.
Рассмотрим модель множественной линейной регрессии, которая предсказывает реальный валовой национальный продукт США (GNPR) с использованием линейной комбинации индекса промышленного производства (IPI), общая занятость (E) и реальная заработная плата (WR). Предположим, что:
Коэффициенты перехвата и три коэффициента регрессии являются случайными переменными с многомерным нормальным предшествующим распределением, обусловленным дисперсией возмущений. Предыдущее среднее является 4-D вектором нулей, а предшествующая ковариационная матрица является единичной матрицей 4 на 4, масштабированной на 10000.
Дисперсия возмущений является случайной величиной с обратным гамма-предварительным распределением. Значения параметров формы и масштаба равны 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'};
Перед R2019b, estimate может вернуть до шести мероприятий; последние пять суммируют условное апостериорное распределение. Ранее поддерживаемый синтаксис:
[~,estBeta,EstBetaCov,estSigma2,estSigma2Var,Summary] = estimate(PriorMdl,X,y);
Для R2019b, estimate поддерживает возврат только двух выходов. Условные апостериорные оценки находятся в сводной таблице оценок во второй позиции выходного аргумента.
Оцените условное апостериорное распределение коэффициентов регрессии, учитывая, что дисперсия возмущений равна 10. Возвращает сводную таблицу оценки с помощью обновленного синтаксиса.
[~,Summary] = estimate(PriorMdl,X,y,'Sigma2',10);Method: Analytic posterior distributions
Conditional variable: Sigma2 fixed at 10
Number of observations: 62
Number of predictors: 4
| Mean Std CI95 Positive Distribution
--------------------------------------------------------------------------------
Intercept | -24.2494 4.1803 [-32.443, -16.056] 0.000 N (-24.25, 4.18^2)
IPI | 4.3913 0.0673 [ 4.259, 4.523] 1.000 N (4.39, 0.07^2)
E | 0.0011 0.0002 [ 0.001, 0.001] 1.000 N (0.00, 0.00^2)
WR | 2.4683 0.1661 [ 2.143, 2.794] 1.000 N (2.47, 0.17^2)
Sigma2 | 10 0 [10.000, 10.000] 1.000 Fixed value
Вычислите апостериорные оценки с помощью новой процедуры.
estBeta = Summary.Mean(1:end - 1) % Posterior mean of coefficientsestBeta = 4×1
-24.2494
4.3913
0.0011
2.4683
EstBetaCov = Summary.Covariances(1:end - 1,1:end - 1) % Posterior covariance of coefficientsEstBetaCov = 4×4
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