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