Заменяя нежелательные синтаксисы 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.

Вы не должны изменять свой код в это время. Однако, чтобы подготовить ваш код к этому программному обеспечению изменяют и избегают предупреждения, можно выполнить эту процедуру:

  1. Ищите свой код экземпляры, в которых estimate возвращает любой выходной параметр кроме PosteriorMdl.

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

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

    1. Возвратите только PosteriorMdl, когда вы вызовете estimate.

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

      Выходной аргументconjugateblm или diffuseblmsemiconjugateblm, 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

      Для примеров смотрите Замену Нежелательный Синтаксис Когда Оценка Аналитичного Крайний Следующий и Замену Нежелательный Синтаксис Когда Оценка Числового Крайний Следующий.

  4. Для экземпляров, возвращающих оценки условного распределения, нет никакой простой замены. Можно проигнорировать предупреждение, и вы не должны принимать меры теперь. Однако это - лучшая практика подготовиться к изменению.

    Подготовьтесь путем обновления кода, чтобы заменить все экземпляры, в которых 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

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

Смотрите также

Объекты

Функции