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 = 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, соответственно.
Создайте нормально-обратную-гамма-полуконъюгатную предшествующую модель для параметров линейной регрессии. Задайте количество предикторов . Установите имена коэффициентов регрессии в соответствующие имена переменных.
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 = 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