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

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

Объекты

Функции

Похожие темы