В 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
).
Моделируйте данные из модели 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
.
Задайте модели шаблона, чтобы использовать для оценки.
% 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
, соответствующие порядкам авторегрессивного и скользящего среднего значения модели.
Соответствуйте каждой модели к данным.
% 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
:
Возвращает предполагаемую ковариационную матрицу параметра, а не только стандартные погрешности.
Позволяет вам решить видеть оценки и информацию об оптимизации, вместо того, чтобы установить его, когда вы задаете модель.
Считайте количество приспособленных параметров в предполагаемой модели.
% 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);