В этом примере показано, как использовать информационный критерий Akaike (AIC) для выбора несезонных степеней авторегрессии и многочлена скользящего среднего для регрессионной модели с ошибками ARMA.
Оцените несколько моделей, передав данные в estimate. Варьируйте авторегрессивные и скользящие средние градусы p и q соответственно. Каждая подогнанная модель содержит оптимизированное значение целевой функции loglikelive, которое передается aicbic для расчета статистики соответствия AIC. Статистика соответствия AIC штрафует за сложность (т.е. за наличие большего количества параметров) оптимизированную функцию средств к существованию.
Смоделировать данные ответа и предиктора для регрессионной модели с ошибками ARMA:
αt + 0 .7αt-1,
где - гауссов со средним значением 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 является самой низкой .