Этот пример показывает, как использовать Информационный критерий Акайке (AIC), чтобы выбрать несезонные авторегрессивные и скользящие средние полиномиальные степени задержки для регрессионной модели с ошибками ARMA.
Оцените несколько моделей путем передачи данных в estimate
. Варьируйте авторегрессивное и скользящее среднее степени p и q, соответственно. Каждая подобранная модель содержит оптимизированное значение целевой функции логарифмической правдоподобности, которое вы передаете aicbic
для вычисления статистики подгонки AIC. Статистика аппроксимации AIC штрафует оптимизированную функцию логарифмической правдоподобности за сложность (то есть за наличие большего количества параметров).
Симулируйте данные отклика и предиктора для регрессионой модели с ошибками ARMA:
где является Гауссовым со средним 0 и отклонением 1.
Mdl0 = regARIMA('Intercept',2,'Beta',[-2; 1.5],... 'AR',{0.75, -0.5},'MA',0.7,'Variance',1); rng(2); % For reproducibility X = randn(1000,2); % Predictors y = simulate(Mdl0,1000,'X',X);
Регрессируйте ответ на предикторы. Постройте график невязок (т.е. оцененные безусловные нарушения порядка).
Fit = fitlm(X,y);
u = Fit.Residuals.Raw;
figure
plot(u)
title('{\bf Estimated Unconditional Disturbances}')
Постройте график ACF и PACF невязок.
figure subplot(2,1,1) autocorr(u) subplot(2,1,2) parcorr(u)
ACF и PACF медленно распадаются, что указывает на процесс ARMA. Трудно использовать эти коррелограммы для определения лагов. Однако представляется разумным, что оба полинома должны иметь четыре или меньше лагов на основе длин автокорреляций и частичных автокорреляций.
Чтобы определить количество лагов AR и MA, задайте и оцените регрессионые модели с ошибками ARMA (p, q) путем изменения p = 1,.., 3 и q = 1,..., 3. Сохраните оптимизированное логарифмической правдоподобностью значение целевой функции для каждой подгонки модели.
pMax = 3; qMax = 3; LogL = zeros(pMax,qMax); SumPQ = LogL; for p = 1:pMax for q = 1:qMax Mdl = regARIMA(p,0,q); [~,~,LogL(p,q)] = estimate(Mdl,y,'X',X,... 'Display','off'); SumPQ(p,q) = p+q; end end
Вычислите AIC для каждой модели подгонки. Количество параметров p + q + 4 (т.е. Точка пересечения, два коэффициента регрессии и инновационные отклонения).
logL = reshape(LogL,pMax*qMax,1);... % Elements taken column-wise numParams = reshape(SumPQ,pMax*qMax,1) + 4; aic = aicbic(logL,numParams); AIC = reshape(aic,pMax,qMax)
AIC = 3×3
103 ×
3.1323 3.0195 2.9984
2.9280 2.9297 2.9314
2.9297 2.9305 2.9321
minAIC = min(aic)
minAIC = 2.9280e+03
[bestP,bestQ] = find(AIC == minAIC)
bestP = 2
bestQ = 1
Лучшая модель подгонки является регрессионной моделью с ошибками AR (2,1), потому что ее соответствующий AIC является самым низким .