Этот пример показывает, как применить как несезонное, так и сезонное дифференцирование с помощью полиномиальных объектов оператора задержки. Временные ряды - ежемесячные международные счетчики пассажиров авиакомпаний с 1949 по 1960 год.
Загрузите набор данных авиакомпании (Data_Airline.mat
).
load('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
получить несезонно и сезонно дифференцированные ряды.
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';
Дифференцированная серия не имеет ни тренда, ни сезонного компонента, выставленной оригинальной серией.