exponenta event banner

Сезонная корректировка с использованием стабильного сезонного фильтра

В этом примере показано, как использовать стабильный сезонный фильтр для десезонализации временного ряда (с использованием аддитивного разложения). Временные ряды - ежемесячные случайные смерти в США с 1973 по 1978 год (Brockwell and Davis, 2002).

Загрузите данные.

Загрузите набор данных о случайных смертях.

load('Data_Accidental.mat')
y = Data;
T = length(y);

figure
plot(y/1000)
h1 = gca;
h1.XLim = [0,T];
h1.XTick = 1:12:T;
h1.XTickLabel = datestr(dates(1:12:T),10);
title 'Monthly Accidental Deaths';
ylabel 'Number of deaths (thousands)';
hold on

Figure contains an axes. The axes with title Monthly Accidental Deaths contains an object of type line.

Данные показывают сильный сезонный компонент с периодичностью 12.

Примените скользящее среднее на 13 сроков.

Сглаживание данных с использованием 13-кратного скользящего среднего. Для предотвращения потери данных наблюдения повторите первое и последнее сглаженные значения шесть раз. Вычтите сглаженный ряд из исходного ряда, чтобы уменьшить количество данных. Добавьте оценку тренда скользящего среднего к графику наблюдаемого временного ряда.

sW13 = [1/24;repmat(1/12,11,1);1/24];
yS = conv(y,sW13,'same');
yS(1:6) = yS(7); yS(T-5:T) = yS(T-6);

xt = y-yS;

h = plot(yS/1000,'r','LineWidth',2);
legend(h,'13-Term Moving Average')
hold off

Figure contains an axes. The axes with title Monthly Accidental Deaths contains 2 objects of type line. This object represents 13-Term Moving Average.

Уменьшенный временной ряд: xt.

Использование параметра shape 'same' при вызове conv возвращает сглаженный ряд той же длины, что и исходный ряд.

Шаг 3. Создание сезонных индексов.

Создание массива ячеек, sidx, для хранения индексов, соответствующих каждому периоду. Данные являются ежемесячными, с периодичностью 12, поэтому первый элемент sidx - вектор с элементами 1, 13, 25,..., 61 (соответствующий январским наблюдениям). Второй элемент sidx - вектор с элементами 2, 14, 16,..., 62 (соответствующий февральским наблюдениям). Это повторяется в течение всех 12 месяцев .

s = 12;
sidx = cell(s,1);
for i = 1:s
 sidx{i,1} = i:s:T;
end

sidx{1:2}
ans = 1×6

     1    13    25    37    49    61

ans = 1×6

     2    14    26    38    50    62

Использование массива ячеек для хранения индексов допускает возможность того, что каждый период не встречается одинаковое количество раз в пределах наблюдаемого ряда.

Шаг 4. Примените стабильный сезонный фильтр.

Применение стабильного сезонного фильтра к убывающей серии, xt. Используя индексы, построенные на этапе 3, усредняют уменьшенные данные, соответствующие каждому периоду. То есть среднее значение всех значений января (по индексам 1, 13, 25,..., 61), а затем среднее значение всех значений февраля (по индексам 2, 14, 26,..., 62) и так далее за оставшиеся месяцы. Поместите сглаженные значения обратно в один вектор.

Центрируйте сезонную оценку, чтобы колебаться около нуля.

sst = cellfun(@(x) mean(xt(x)),sidx);

% Put smoothed values back into a vector of length N
nc = floor(T/s); % no. complete years
rm = mod(T,s); % no. extra months
sst = [repmat(sst,nc,1);sst(1:rm)];

% Center the seasonal estimate (additive)
sBar = mean(sst); % for centering
sst = sst-sBar;

figure
plot(sst/1000)
title 'Stable Seasonal Component';
h2 = gca;
h2.XLim = [0 T];
ylabel 'Number of deaths (thousands)';
h2.XTick = 1:12:T;
h2.XTickLabel = datestr(dates(1:12:T),10);

Figure contains an axes. The axes with title Stable Seasonal Component contains an object of type line.

Стабильная сезонная составляющая имеет постоянную амплитуду по ряду. Сезонная оценка центрирована и колеблется около нуля.

Шаг 5. Десезонализация серии.

Вычтите оцененный сезонный компонент из исходных данных.

dt = y - sst;

figure
plot(dt/1000)
title 'Deseasonalized Series';
ylabel 'Number of deaths (thousands)';
h3 = gca;
h3.XLim = [0 T];
h3.XTick = 1:12:T;
h3.XTickLabel = datestr(dates(1:12:T),10);

Figure contains an axes. The axes with title Deseasonalized Series contains an object of type line.

Десезонализированный ряд состоит из долгосрочного тренда и нерегулярных компонентов. Масштабная квадратичная тенденция в количестве случайных смертей очевидна с удалением сезонной составляющей.

Ссылки:

Броквелл, П. Дж. и Р. А. Дэвис. Введение во временные ряды и прогнозирование. 2-й ред. Нью-Йорк, Нью-Йорк: Спрингер, 2002.

См. также

|

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

Подробнее