Чому функція stl дає значні сезонні зміни в випадкових даних


11

Я побудував наступний код з функцією stl (Сезонне декомпозиція часових рядів по Лоссу):

plot(stl(ts(rnorm(144), frequency=12), s.window="periodic"))

Він показує знакову сезонність з випадковими даними, введеними в код вище (функція rnorm). Значні зміни спостерігаються щоразу, коли цей запуск виконується, хоча шаблон є іншим. Нижче показано дві такі схеми:

введіть тут опис зображення

введіть тут опис зображення

Як ми можемо розраховувати на функцію stl на деяких даних, коли вона показує сезонні зміни. Чи потрібно враховувати це сезонне коливання з огляду на деякі інші параметри? Дякуємо за ваше розуміння.

Код взятий з цієї сторінки: Чи це відповідний метод для перевірки сезонних наслідків даних про кількість самогубств?


1
Це трапляється тому, що у випадкових даних є "шаблони", якщо ваша техніка підгонки має достатньо параметрів.
bill_080

3
Термін "суттєвий" тут, схоже, не відображає будь-якого виду перевірки значимості.
Нік Кокс

1
Stl - непараметричний метод, керований даними, тому немає можливості кількісно оцінити відсутність сезонних невизначеностей за допомогою тестування на значимість.
синоптик

Відповіді:


12

Розпад Лосса призначений для вирівнювання серії за допомогою застосування середніх даних до даних, щоб вони згорталися на компоненти, наприклад, тенденції чи сезонність, які є цікавими для аналізу даних. Але ця методологія не призначена для проведення офіційного тесту на наявність сезонності .

Хоча у вашому прикладі stlповертається згладжена закономірність сезонної періодичності, ця модель не має значення для пояснення динаміки серії. Для того, щоб побачити це, ми можемо порівняти дисперсію кожного компонента по відношенню до дисперсії вихідної серії.

set.seed(123)
x <- ts(rnorm(144, sd=1), frequency=12)
a <- stl(x, s.window="periodic")
apply(a$time.series, 2, var) / var(x)
#   seasonal      trend  remainder 
# 0.07080362 0.07487838 0.81647852 

Ми можемо бачити, що саме в решті пояснюється більшість розбіжностей у даних (як і слід було б очікувати у процесі білого шуму).

Якщо ми беремо серію з сезонністю, відносна дисперсія сезонного компонента набагато актуальніша (хоча ми не маємо прямого способу перевірити це, оскільки лос не є параметричним).

y <- diff(log(AirPassengers))
b <- stl(y, s.window="periodic")
apply(b$time.series, 2, var) / var(y)
#    seasonal       trend   remainder 
# 0.875463620 0.001959407 0.117832537 

Відносні дисперсії вказують на те, що сезонність є основним компонентом, що пояснює динаміку серії.


Недбалий погляд на сюжет з боку stlможе бути оманливим. Приємний малюнок, який повертається, stlможе змусити нас думати, що відповідна сезонна закономірність може бути визначена в даних, але більш детальний погляд може виявити, що це насправді не так. Якщо метою вирішення питання щодо наявності сезонності, розпад льосу може бути корисним як попередній вигляд, але його слід доповнити іншими інструментами.


У вашому прикладі AirPassengers не спостерігається тенденція щодо випуску продукції, тоді як чітка тенденція щодо сюжету (AirPassengers). Тенденція доходить до 0,86 (при сезонному лише 0,1), якщо вилучено "diff (log (AirPassengers))". Що робити?
rnso

Я наводив приклад, який чисельно зрозумілий. На практиці просто порівняння дисперсії згладжених компонентів може бути недостатньо для того, щоб дійти висновку про наявність сезонності. Наприклад, як ви виявили в цьому випадку, якщо тенденцію не усунути шляхом розбіжностей, дисперсія тенденції домінує над дисперсією сезонного компонента. Питання: чи достатня величина відносної дисперсії 0,1, щоб вважати цей компонент релевантним? Проблема полягає в тому, що на основі льосу немає простого способу перевірити, чи є дисперсія компонента значною.
javlacalle

Як я вже сказав, у цьому та інших випадках ми повинні робити інші методи тестування на наявність сезонності. Дивіться, наприклад, другу частину моєї відповіді тут . Після того, як ми зробили висновок, що сезонність присутня в даних, ми можемо використовувати льос для отримання структури цього компонента.
javlacalle

Для більшого роз'яснення, як відносна дисперсія показує, на яку частину розкладання грає загальна інформація? IE 70% сезонний, 20% тренд. пр.
Тед Мосбі

1
@TedMosby Дисперсія - це міра мінливості / дисперсності даних. Сума дисперсій компонентів (наприклад, тенденція, сезонність) та дисперсія залишку додаються до дисперсії оригінальної серії. Таким чином, порівнюючи дисперсію компонента з дисперсією вихідного ряду, ми можемо отримати уявлення про те, наскільки релевантним є компонент (тобто, скільки змінності в даних пояснюється компонентом).
javlacalle

2

У подібному руслі я бачив використання моделей Фур'є для несезонних даних, примушуючи сезонну структуру до відповідних та прогнозованих значень, спричиняючи подібний (ошатний!) Результат. Встановлення припущеної моделі дає користувачеві те, що він нав'язує / припускає, що не завжди є тим, що б хороша аналітика запропонувала / поставила.


1
stl()не ґрунтується на ідеях Фур'є. Хоча я ще не бачив когось, хто виступає за «бездумний» аналіз, зауважте, що будь-яка сім'я моделей може розглядатися як нав'язана або припущена. Питання полягає в тому, наскільки будь-яка процедура пропонує можливість користувачам усвідомити, якщо і як вона погано працює для певного набору даних.
Нік Кокс

@NickCox цілком вірно ....
IrishStat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.