Проверяйте припадок мультипликативной модели ARIMA

Этот пример показывает, как сделать проверки качества подгонки. Остаточные диагностические графики помогают проверить образцовые предположения, и проверки прогноза перекрестной проверки помогают оценить прогнозирующую производительность. Временные ряды являются ежемесячными международными числами авиапассажира от 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 для конкурирующей модели, чтобы помочь с образцовым выбором.

Смотрите также

Объекты

Функции

Связанные примеры

Больше о