Преобразование из функций GARCH в объекты модели

В R2014a, arima, garch, egarch, и gjr модели и связанные с ними функциональные возможности заменяют garchfit, garchinfer, garchplot, garchpred, garchsim, garchcount, garchdisp, garchget, и garchset функций. Если вы используете более старые функции анализа данных GARCH, то получите ошибку. Используйте информацию на этой странице, чтобы помочь вам преобразовать более старые функции в более новые.

Предположим, что вы хотите проанализировать одномерный ряд y использование модели ARIMA (3,4) с инновациями GARCH (1,2), и у вас есть предварительные наблюдения (y0), инновации (e0) и условные стандартные отклонения (sigma0). В этой таблице показаны оба способа завершения такого анализа.

ШагСтарая функциональностьНовая функциональность
Задайте составную модель ARIMA-GARCH
Mdl = garchset('R',3,'M',4,...
    'P',1,'Q',2);
Mdl = arima(3,0,4);
VarMdl = garch(1,2);
Mdl.Variance = VarMdl;
Извлечение свойств модели
garchget(Mdl,'K')
Mdl.Variance.Constant
Установите ограничения равенства
Mdl = garchset(Mdl,...
    'K',0.75,'FixK',1);
Mdl.Variance.Constant = 0.75;
Оценка параметров
EstMdl = garchfit(Mdl,y,[],...
    e0,sigma0,y0);
[EstMdl,EstParamCov] = ...
    estimate(Mdl,y,'E0',e0,...
    'V0',sigma0.^2,'Y0',y0)
Подсчитайте количество настроенных параметров
numParams = garchcount(...
    EstMdl);
numParams = sum(any(...
    EstParamCov));
Вывод условных отклонений (sigma2) и получить логарифмическую правдоподобность (logL)
[e,sigma,logL] = ...
    garchinfer(EstMdl,y,...
    [],e0,sigma0,y0);
sigma2 = sigma.^2;
[e,sigma2,logL] = infer(...
    EstMdl,y,'E0',e0,...
    'V0',sigma0.^2,'Y0',y0);
Моделируйте наблюдения
simY = garchsim(EstMdl,100);
simY = simulate(EstMdl,100);
Нарушения порядка фильтра
e = randn(100,1);
simY = garchsim(EstMdl,[],...
    [],e);
e = randn(100,1);
simY = filter(EstMdl,e);
Прогнозные наблюдения
fY = garchpred(EstMdl,y,...
    15);
fY = forecast(EstMdl,15,...
    'Y0',y);

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

Предположим, что вы хотите проанализировать одномерный ряд. Вы подозреваете, что модель является либо моделью ARIMA (2,1 )/GARCH (1,1), либо моделью ARIMA (1,1 )/GARCH (1,1), и хотите проверить, какая модель лучше подходит к данным. Переменные, представляющие новую функциональность, имеют суффикс 1 (например, Mdl1), а те, которые имеют более старые функциональные возможности, имеют суффикс 2 (например, Mdl2).

  1. Симулируйте данные из модели ARIMA (2,1) с инновациями GARCH (1,1).

    % New way
    VarMdl1 = garch('GARCH',0.3,'ARCH',0.2,'Constant',0.75);
    Mdl1 = arima('AR',{0.5,0.3},'MA',-0.7,'Constant',0,'Variance',VarMdl1);
    [y1,e1,v1] = simulate(Mdl1,100);
    
    % Old way
    Mdl2 = garchset('AR',[0.5,0.3],'MA',-0.7,'C',0,...
        'GARCH',0.3,'ARCH',0.2,'K',0.75);
    [e2,sd2,y2] = garchsim(Mdl2,100);

    Ниже перечислены различия:

    • Mdl1 является arima объект, и Mdl2 является массивом структур.

    • simulate возвращает условные отклонения, в то время как garchsim возвращает условные стандартные отклонения.

    • С новой функциональностью необходимо:

      • Задайте несколько значений коэффициентов, используя массив ячеек.

      • Задайте модель отклонения используя garch, egarch, или gjr.

  2. Задайте модели шаблона, которые будут использоваться для оценки.

    % New way
    VarMdl1 = garch(1,1);
    Mdl11 = arima('ARLags',1,'MALags',1,'Variance',VarMdl1);
    Mdl12 = arima('ARLags',1:2,'MALags',1,'Variance',VarMdl1);
    
    % Old way
    Mdl21 = garchset('R',1,'M',1,'P',1,'Q',1,'Display','off');
    Mdl22 = garchset('R',2,'M',1,'P',1,'Q',1,'Display','off');
    

    Новая функциональность имеет аргументы пары "имя-значение" 'ARLags' и 'MALags' чтобы задать полиномиальные условия модели. Вы должны задать каждый порядок терминов индивидуально, что позволяет получить более гибкую спецификацию. Модели Mdl11 и Mdl12 имеют свойства P и Q соответствующий авторегрессивному и скользящему среднему порядкам модели.

  3. Подбор каждой модели к данным.

    % New way
    logL1 = [0;0];       % Preallocate
    numParams1 = logL1;  % Preallocate
    [EstMdl11,EstParamCov11,logl11] = estimate(Mdl11,y1,'Display','off');
    [EstMdl12,EstParamCov12,logl12] = estimate(Mdl12,y1,'Display','off');
    
    % Old way
    logL2 = [0;0];       % Preallocate
    numParams2 = logL2;  % Preallocate
    [EstMdl21,~,logl12] = garchfit(Mdl21,y2);
    [EstMdl22,~,logl22] = garchfit(Mdl22,y2);

    The estimate функция:

    • Возвращает оцененную ковариационную матрицу параметра, а не просто стандартные ошибки.

    • Позволяет вам принять решение просмотреть оценки и информацию об оптимизации, а не настраивать ее, когда вы задаете модель.

  4. Подсчитайте количество настроенных параметров в предполагаемой модели.

    % New way
    numParams11 = sum(any(EstParamCov11));
    numParams21 = sum(any(EstParamCov21));
    
    % Old way
    numParams12 = garchcount(EstMdl12);
    numParams22 = garchcount(EstMdl22); 

    Новая функциональность не содержит функцию, которая отсчитывает количество подобранных параметров в предполагаемой модели. Однако, если параметр фиксирован во время оценки, то программное обеспечение устанавливает все отклонения и ковариации соответствующей оценки параметра в 0. Новый способ подсчета подобранных параметров использует эту функцию.

  5. Оцените, какая модель является более подходящей, используя информационные критерии.

    aic1 = aicbic(logL1,numParams1);
    aic2 = aicbic(logL2,numParams2);

См. также

Объекты

Функции

Похожие темы