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