В этом примере показано, как задать сезонную модель ARIMA используя arima
. Временные ряды - ежемесячные международные пассажирские номера авиакомпаний с 1949 по 1960 год.
Загрузите набор данных авиакомпании, а затем постройте естественный журнал ежемесячных итогов по пассажирам.
load('Data_Airline.mat') y = log(Data); T = length(y); figure plot(dates,y) xlim([1,T]) datetick('x','mmmyy') axis tight title('Log Airline Passengers') ylabel('(thousands)')
Данные выглядят нестационарными, с линейным трендом и сезонной периодичностью.
Вычислим дифференцированный ряд, , где - исходные логарифмические данные. Постройте график дифференцированного ряда.
A1 = LagOp({1,-1},'Lags',[0,1]); A12 = LagOp({1,-1},'Lags',[0,12]); dY = filter(A1*A12,y); figure plot(dY) title('Differenced Log Airline Passengers')
Дифференцированный ряд выглядит стационарным.
figure
autocorr(dY,'NumLags',50)
ACF выборки из дифференцированных рядов показывает значительную автокорреляцию при лагах, которые множители из 12. Существует также потенциально значительная автокорреляция при небольших лагах.
Box, Jenkins и Reinsel предлагают мультипликативную сезонную модель,
для этого набора данных (Box et al., 1994).
Задайте эту модель.
Mdl = arima('Constant',0,'D',1,'Seasonality',12,... 'MALags',1,'SMALags',12)
Mdl = arima with properties: Description: "ARIMA(0,1,1) Model Seasonally Integrated with Seasonal MA(12) (Gaussian Distribution)" Distribution: Name = "Gaussian" P: 13 D: 1 Q: 13 Constant: 0 AR: {} SAR: {} MA: {NaN} at lag [1] SMA: {NaN} at lag [12] Seasonality: 12 Beta: [1×0] Variance: NaN
Свойство P
равно 13
, соответствующий сумме несезонных и сезонных степеней дифференцирования (1 + 12). Свойство Q
также равно 13
, соответствующий сумме степеней несезонных и сезонных полиномов МА (1 + 12). Параметры, которые нужно оценить, имеют значение NaN
.
Ссылки:
Box, G. E. P., G. M. Jenkins, and G. C. Reinsel. Анализ временных рядов: прогнозирование и управление. 3-й эд. Englewood Cliffs, Нью-Джерси: Prentice Hall, 1994.
arima
| autocorr
| filter
| LagOp