Этот пример показывает, как применить и несезонное и сезонное дифференцирование с помощью объектов полинома оператора задержки. Временные ряды являются ежемесячными международными количествами авиапассажира от 1 949 до 1960.
Загрузите набор данных авиакомпании (Data_Airline.mat
).
load(fullfile(matlabroot,'examples','econ','Data_Airline.mat')) y = log(Data); T = length(y); figure plot(y) h1 = gca; h1.XLim = [0,T]; h1.XTick = [1:12:T]; h1.XTickLabel = datestr(dates(1:12:T),10); title 'Log Airline Passenger Counts';
Данные показывают линейный тренд и сезонный компонент с периодичностью 12.
Возьмите первое различие, чтобы обратиться к линейному тренду и 12-му различию, чтобы обратиться к периодичности. Если ряд должен быть преобразован, преобразование
где обозначает оператор различия, и обозначает оператор задержки.
Создайте полиномы оператора задержки и . Затем умножьте их, чтобы получить желаемый полином оператора задержки.
D1 = LagOp({1 -1},'Lags',[0,1]); D12 = LagOp({1 -1},'Lags',[0,12]); D = D1*D12
D = 1-D Lag Operator Polynomial: ----------------------------- Coefficients: [1 -1 -1 1] Lags: [0 1 12 13] Degree: 13 Dimension: 1
Первый полином, , имеет коэффициент 1 в задержке 0 и коэффициенте-1 в задержке 1. Сезонный полином дифференцирования, , имеет коэффициент 1 в задержке 0, и-1 в задержке 12. Продукт этих полиномов
который имеет коэффициент 1 в задержках 0 и 13 и коэффициент-1 в задержках 1 и 12.
Отфильтруйте данные с полиномом дифференцирования D
, чтобы добраться нев сезон и в сезон differenced ряд.
dY = filter(D,y); length(y) - length(dY)
ans = 13
Отфильтрованный ряд является 13 наблюдениями короче, чем исходный ряд. Это происходит из-за применения степени 13 полиномиальных фильтров.
figure plot(14:T,dY) h2 = gca; h2.XLim = [0,T]; h2.XTick = [1:12:T]; h2.XTickLabel = datestr(dates(1:12:T),10); axis tight; title 'Differenced Log Airline Passenger Counts';
differenced ряд не имеет ни тренда, ни сезонного компонента, показанного исходным рядом.