exponenta event banner

Преобразование функций 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);

    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);

См. также

Объекты

Функции

Связанные темы