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

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

См. также

Объекты

Функции