Этот пример показывает, как сделать проверки качества подгонки. Остаточные диагностические графики помогают проверить образцовые предположения, и проверки прогноза перекрестной проверки помогают оценить прогнозирующую производительность. Временные ряды являются ежемесячными международными числами авиапассажира от 1 949 до 1960.
Загрузите набор данных авиакомпании.
load(fullfile(matlabroot,'examples','econ','Data_Airline.mat')) y = log(Data); T = length(y); Mdl = arima('Constant',0,'D',1,'Seasonality',12,... 'MALags',1,'SMALags',12); EstMdl = estimate(Mdl,y);
ARIMA(0,1,1) Model Seasonally Integrated with Seasonal MA(12) (Gaussian Distribution): Value StandardError TStatistic PValue _________ _____________ __________ __________ Constant 0 0 NaN NaN MA{1} -0.37716 0.066794 -5.6466 1.6364e-08 SMA{12} -0.57238 0.085439 -6.6992 2.0953e-11 Variance 0.0012634 0.00012395 10.193 2.1406e-24
Одно предположение о подобранной модели - то, что инновации следуют за Распределением Гаусса. Выведите невязки и проверяйте их на нормальность.
res = infer(EstMdl,y); stres = res/sqrt(EstMdl.Variance); figure subplot(1,2,1) qqplot(stres) x = -4:.05:4; [f,xi] = ksdensity(stres); subplot(1,2,2) plot(xi,f,'k','LineWidth',2); hold on plot(x,normpdf(x),'r--','LineWidth',2) legend('Standardized Residuals','Standard Normal') hold off
График квантиля квантиля (QQ-график) и оценка плотности ядра не показывает очевидных нарушений предположения нормальности.
Подтвердите, что невязки являются некоррелироваными. Посмотрите на демонстрационную автокорреляционную функцию (ACF) и частичная автокорреляционная функция (PACF) графики для стандартизированных невязок.
figure subplot(2,1,1) autocorr(stres) subplot(2,1,2) parcorr(stres)
[h,p] = lbqtest(stres,'lags',[5,10,15],'dof',[3,8,13])
h = 1x3 logical array
0 0 0
p = 1×3
0.1842 0.3835 0.7321
Демонстрационный ACF и графики PACF не показывают значительной автокорреляции. Более официально проведите Q-тест Ljung-поля в задержках 5, 10, и 15, со степенями свободы 3, 8, и 13, соответственно. Степени свободы составляют два предполагаемых коэффициента скользящего среднего значения.
Q-тест Ljung-поля подтверждает демонстрационный ACF и результаты PACF. Нулевая гипотеза, что все автокорреляции совместно равны нулю до протестированной задержки, не отклоняется (h = 0
) ни для одной из трех задержек.
Используйте выборку затяжки, чтобы вычислить прогнозирующий MSE модели. Используйте первые 100 наблюдений, чтобы оценить модель, и затем предсказать следующие 44 периода.
y1 = y(1:100); y2 = y(101:end); Mdl1 = estimate(Mdl,y1);
ARIMA(0,1,1) Model Seasonally Integrated with Seasonal MA(12) (Gaussian Distribution): Value StandardError TStatistic PValue _________ _____________ __________ __________ Constant 0 0 NaN NaN MA{1} -0.35674 0.089461 -3.9876 6.6739e-05 SMA{12} -0.63319 0.098744 -6.4124 1.4326e-10 Variance 0.0013285 0.00015882 8.365 6.013e-17
yF1 = forecast(Mdl1,44,'Y0',y1);
pmse = mean((y2-yF1).^2)
pmse = 0.0069
figure plot(y2,'r','LineWidth',2) hold on plot(yF1,'k--','LineWidth',1.5) xlim([0,44]) title('Prediction Error') legend('Observed','Forecast','Location','NorthWest') hold off
Прогнозирующая способность модели довольно хороша. Можно опционально сравнить PMSE для этой модели с PMSE для конкурирующей модели, чтобы помочь с образцовым выбором.