R сезонний часовий ряд


9

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

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

Я не розумію, чому я приходжу до двох дуже різних результатів. Це сталося з кимось? Я щось роблю не так?


Додаю сюди кілька корисних деталей.

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

TimeSeries

Щомісячна зміна

Нижче виводиться decomposeфункція. Я розумію, що, як сказав @RichardHardy, функція не перевіряє, чи існує реальна сезонність. Але розкладання, здається, підтверджує те, що я думаю.

Розкласти

Однак коли я регресую часовий ряд на 11 сезонних фіктивних змінних (січень-листопад, виключаючи грудень), я виявляю наступне:

    Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 5144454056  372840549  13.798   <2e-16 ***
    Jan     -616669492  527276161  -1.170    0.248    
    Feb     -586884419  527276161  -1.113    0.271    
    Mar     -461990149  527276161  -0.876    0.385    
    Apr     -407860396  527276161  -0.774    0.443    
    May     -395942771  527276161  -0.751    0.456    
    Jun     -382312331  527276161  -0.725    0.472    
    Jul     -342137426  527276161  -0.649    0.520    
    Aug     -308931830  527276161  -0.586    0.561    
    Sep     -275129629  527276161  -0.522    0.604    
    Oct     -218035419  527276161  -0.414    0.681    
    Nov     -159814080  527276161  -0.303    0.763

В основному всі коефіцієнти сезонності не є статистично значущими.

Для запуску лінійної регресії я використовую таку функцію:

lm.r = lm(Yvar~Var$Jan+Var$Feb+Var$Mar+Var$Apr+Var$May+Var$Jun+Var$Jul+Var$Aug+Var$Sep+Var$Oct+Var$Nov)

де я створив Yvar як змінну часового ряду з місячною частотою (частота = 12).

Я також намагаюся врахувати тенденцію, що склалася в часовому ряду, включаючи змінну тенденції до регресії. Однак результат не змінюється.

                  Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 3600646404   96286811  37.395   <2e-16 ***
    Jan     -144950487  117138294  -1.237    0.222    
    Feb     -158048960  116963281  -1.351    0.183    
    Mar      -76038236  116804709  -0.651    0.518    
    Apr      -64792029  116662646  -0.555    0.581    
    May      -95757949  116537153  -0.822    0.415    
    Jun     -125011055  116428283  -1.074    0.288    
    Jul     -127719697  116336082  -1.098    0.278    
    Aug     -137397646  116260591  -1.182    0.243    
    Sep     -146478991  116201842  -1.261    0.214    
    Oct     -132268327  116159860  -1.139    0.261    
    Nov     -116930534  116134664  -1.007    0.319    
    trend     42883546    1396782  30.702   <2e-16 ***

Звідси моє запитання: чи я роблю щось неправильне в регресійному аналізі?


1
@forecaster, ось відповідь на ваше запитання (ОП говорить, що decomposeфункція в Rвикористовується).
Річард Харді

1
Читаючи файл довідки decomposeфункції, здається, що функція не перевіряє, чи є сезонність. Натомість він просто отримує середні показники за кожен сезон, віднімає середнє значення і називає це сезонним компонентом. Таким чином, він створюватиме сезонний компонент незалежно від того, чи є справжній базовий сезонний компонент або просто шум. Тим не менш, це не пояснює, чому ваші манекени незначні, хоча ви кажете, що сезонність видно з графіку даних. Можливо, ваш зразок занадто малий, щоб отримати значні сезонні манекени? Вони спільно значущі?
Річард Харді

3
Потрібно переглянути масштаби, сезонна діаграма показує, що сезонні зміни коливаються від -0,02 до +0,04, тоді як фактичні значення коливаються від 4 мільярдів до 6 мільярдів. Функція декомпозиції змушує ваші дані демонструвати деяку сезонність, тому вона показує значення, яке є незначним. У ваших даних сезонності немає.
синоптик

1
Я вважав, що сезонність стосується скоріше рухів із певною «фіксованою» частотою, а не величини руху. Ваги різні, оскільки перша діаграма показує баланс (у фунтах), а друга - зміна (виражена у відсотках). Я щойно спробував повторно запустити регресію: якщо я врахую поліноміальну тенденцію, якийсь коефіцієнт починає бути значущим. Гадаю, як запропонував @danno, тенденція дуже значна.
mattiace

1
Тест Канова та Хансена може дати ваші додаткові відомості про наявність та стабільність сезонного малюнка у ваших даних. Для деяких застосувань цього тесту див., Наприклад, цю публікацію , яка також містить посилання на оригінальний папір та зразок коду.
javlacalle

Відповіді:


1

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

Крім того, я не дуже впевнений у часових рядах, але чи не слід призначати кожне спостереження місяць, а ваша регресія виглядає приблизно так?

lm(Yvar ~ Time + Month)

Вибачте, якщо це не має сенсу ... Чи регресія має тут найбільше сенсу?


Я читав у підручнику "Економетрика" (Вулдрідж), що якщо ви вводите фактор "часу" в регресію, це як би дерендувати ваш початковий часовий ряд. Під фактором "час" я маю на увазі такий вектор, як [1, 2, ..., n], з n = до числа спостережень. Я насправді не розумію вашої другої точки. Моя друга регресія виглядає наступним чином: lm.r = lm (Yvar ~ Var Jan + Var Nov). Це ви мали на увазі? Time+VarFeb+...+Var
mattiace

Це допоможе побачити кілька рядків ваших даних. Але, я думаю, у вас є три колонки, «Час», «Івар», «Місяць». Рядки - це спостереження. Таким чином, я думаю, що фактори у вашому lm () будуть часом та місяцем (а не факторними рівнями місяця). Крім того, я думаю, є деякі проблеми з lm () щодо часових рядів ... спостереження не є незалежними - тимчасово автокорельовано.
данно

1

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

Після цього я б прокоментував, що сезонні зміни є порівняно незначними. Тому не дивно, що при щомісячних заходах, що проводяться протягом 6 років (загалом всього 72 спостереження), лінійна регресійна модель не вдається точно визначити будь-який із 11-ти місячних контрастів як статистично значущих. Це, крім того , не дивно , що час ефект дійсно досягти статистичної значущості, тому що це те ж саме приблизно відповідає лінійному збільшення відбувається по всьому 72 спостереженню, залежно від їх сезонного ефекту.

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

library(lmtest) model.mt <- lm(outcome ~ time + month) model.t <- lm(outcome ~ time) aov(model.mt, model.t) lrtest(model.mt, model.t) library(sandwich) ## autoregressive consistent robust standard errors waldtest(lrtest, lmtest, vcov.=function(x)vcovHAC(x))


0

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


jmnavarro, я правильно визначив частоту у функції розкладання (= 12, оскільки у мене є місячні дані). Насправді я задоволений результатом цієї функції. Моє запитання, чому я не знаходжу однакового результату (сезонність є важливою), коли я роблю лінійну регресію з використанням фіктивних змінних. Я це робив і з R, і з excel, і результати однакові: коефіцієнти манекенів статистично не значимі. Це проти того, що я раніше знаходив у функції розкладання. Я не розумію, чи пропускаю я щось тут
mattiace

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