R сезонные временные ряды


9

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

Тем не менее, когда я регрессирую временной ряд на 11 сезонных фиктивных переменных, все коэффициенты не являются статистически значимыми, что говорит об отсутствии сезонности.

Я не понимаю, почему я придумываю два совершенно разных результата. Это случилось с кем-нибудь? Я делаю что-то неправильно?


Я добавлю сюда некоторые полезные детали.

Это мой временной ряд и соответствующее ежемесячное изменение. На обоих графиках вы можете видеть сезонность (или это то, что я хотел бы оценить). В частности, на втором графике (который является ежемесячным изменением ряда) я вижу повторяющуюся картину (максимумы и минимумы в те же месяцы года).

Временная последовательность

MonthlyChange

Ниже приведен вывод 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, вот ответ на ваш вопрос (OP говорит, что decomposeфункция in Rиспользуется).
Ричард Харди

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

3
Вам нужно посмотреть на шкалы, сезонный график показывает, что сезонные колебания находятся в диапазоне от -0,02 до +0,04, а фактические значения колеблются от 4 до 6 миллиардов. Функция декомпозиции заставляет ваши данные показывать некоторую сезонность, поэтому они показывают незначительное значение. В ваших данных нет сезонности.
синоптик

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

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

Ответы:


1

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

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

lm(Yvar ~ Time + Month)

Приносим извинения, если это не имеет смысла.


Time+VarFeb+...+Var

Это поможет увидеть несколько строк ваших данных. Но я представляю, что у вас есть три столбца: Время, Ивар, Месяц. Строки являются наблюдениями. Таким образом, я думаю, что коэффициентами в вашей 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

Правда, извините, я не совсем понял ваш вопрос. Было бы полезно, если бы вы могли опубликовать свой код, чтобы мы могли попытаться воспроизвести его.
Джмнаварро
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.