Преобразование от функций 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) и получите loglikelihood (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);
Предскажите наблюдения
foreY = garchpred(EstMdl,y,...
    15);
foreY = 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 является типом данных object, и Mdl2 является типом данных struct.

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

    • С новой функциональностью вы должны:

      • Задайте несколько содействующих значений с помощью массива ячеек.

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

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

    % New way
    ToEstVarMdl1 = garch(1,1);
    ToEstMdl11 = arima('ARLags',1,'MALags',1,'Variance',ToEstVarMdl1);
    ToEstMdl21 = arima('ARLags',1:2,'MALags',1,'Variance',ToEstVarMdl1);
    
    % Old way
    ToEstMdl12 = garchset('R',1,'M',1,'P',1,'Q',1,'Display','off');
    ToEstMdl22 = garchset('R',2,'M',1,'P',1,'Q',1,'Display','off');
    

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

  3. Соответствуйте каждой модели к данным.

    % New way
    logL1 = [0;0];       % Preallocate
    numParams1 = logL1;  % Preallocate
    [EstMdl11,EstParamCov11,logl11] = estimate(ToEstMdl11,...
        y1,'Display','off');
    [EstMdl21,EstParamCov21,logl21] = estimate(ToEstMdl21,...
        y1,'Display','off');
    
    % Old way
    logL2 = [0;0];       % Preallocate
    numParams2 = logL2;  % Preallocate
    [EstMdl12,~,logl12] = garchfit(ToEstMdl12,y2);
    [EstMdl22,~,logl22] = garchfit(ToEstMdl22,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);

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

Объекты

Функции

Похожие темы