В 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
).
Симулируйте данные из модели 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
.
Задайте модели шаблона, которые будут использоваться для оценки.
% 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
соответствующий авторегрессивному и скользящему среднему порядкам модели.
Подбор каждой модели к данным.
% 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
функция:
Возвращает оцененную ковариационную матрицу параметра, а не просто стандартные ошибки.
Позволяет вам принять решение просмотреть оценки и информацию об оптимизации, а не настраивать ее, когда вы задаете модель.
Подсчитайте количество настроенных параметров в предполагаемой модели.
% New way numParams11 = sum(any(EstParamCov11)); numParams21 = sum(any(EstParamCov21)); % Old way numParams12 = garchcount(EstMdl12); numParams22 = garchcount(EstMdl22);
Новая функциональность не содержит функцию, которая отсчитывает количество подобранных параметров в предполагаемой модели. Однако, если параметр фиксирован во время оценки, то программное обеспечение устанавливает все отклонения и ковариации соответствующей оценки параметра в 0
. Новый способ подсчета подобранных параметров использует эту функцию.
Оцените, какая модель является более подходящей, используя информационные критерии.
aic1 = aicbic(logL1,numParams1); aic2 = aicbic(logL2,numParams2);