exponenta event banner

Замена удаленных синтаксисов 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.

Чтобы избежать ошибки, обновите код, выполнив эту процедуру.

  1. Поиск экземпляров кода, в которых estimate возвращает любые позиции выходного аргумента после первого.

  2. В выявленных экземплярах определите, estimate возвращает оценки предельного или условного распределения. Если вызов estimate использует 'Beta' или 'Sigma2' аргумент пары имя-значение, функция возвращает оценки условного распределения. В противном случае it возвращает оценки предельного распределения.

  3. Для случаев, возвращающих оценки предельного распределения:

    1. Вернуть PosteriorMdl и Summary при звонке estimate.

    2. Оцените предельную заднюю статистику, используя соответствующий код в этой таблице.

      Выходной аргумент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);

      Примеры см. в разделах Замена удаленного синтаксиса при оценке аналитического краевого положения и Замена удаленного синтаксиса при оценке числового краевого положения.

  4. Для экземпляров, возвращающих оценки условного распределения, необходимо вернуть сводную таблицу оценки. Summary во второй позиции выходного аргумента. В этой таблице описывается, как извлечь условные апостериорные оценки из Summary.

    Выходной аргументОценка
    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 когда он возвращает аналитический краевой задний.

Рассмотрим модель множественной линейной регрессии, которая предсказывает реальный валовой национальный продукт США (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 coefficients
estBeta = 4×1

  -24.2494
    4.3913
    0.0011
    2.4683

EstBetaCov = Summary.Covariances(1:(end - 1),1:(end - 1)) % Posterior covariance of coefficients
EstBetaCov = 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 variance
estSigma2 = 44.1347
estSigma2Var = Summary.Covariances(end,end) % Posterior variance of disturbance variance
estSigma2Var = 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 coefficients
estBeta = 4×1

  -23.9999
    4.3933
    0.0011
    2.4696

EstBetaCov = Summary.Covariances(1:(end - 1),1:(end - 1)) % Posterior covariance of coefficients
EstBetaCov = 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 variance
estSigma2 = 46.9242
estSigma2Var = Summary.Covariances(end,end) % Posterior variance of disturbance variance
estSigma2Var = 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 coefficients
estBeta = 4×1

  -24.2494
    4.3913
    0.0011
    2.4683

EstBetaCov = Summary.Covariances(1:end - 1,1:end - 1) % Posterior covariance of coefficients
EstBetaCov = 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

См. также

Объекты

Функции