R Séries temporais sazonais

9

Uso a decomposefunção Re crio os três componentes da minha série temporal mensal (tendência, sazonal e aleatória). Se plotar o gráfico ou olhar para a tabela, posso ver claramente que a série temporal é afetada pela sazonalidade.

No entanto, quando regredo a série temporal para as 11 variáveis ​​fictícias sazonais, todos os coeficientes não são estatisticamente significativos, sugerindo que não há sazonalidade.

Não entendo por que tenho dois resultados muito diferentes. Isso aconteceu com alguém? Estou fazendo algo errado?


Eu adiciono aqui alguns detalhes úteis.

Esta é a minha série temporal e a alteração mensal correspondente. Nos dois gráficos, você pode ver que há sazonalidade (ou é isso que eu gostaria de avaliar). Especialmente, no segundo gráfico (que é a variação mensal da série), vejo um padrão recorrente (pontos altos e pontos baixos nos mesmos meses do ano).

TimeSeries

MonthlyChange

Abaixo está a saída da decomposefunção. Agradeço que, como disse @RichardHardy, a função não teste se há sazonalidade real. Mas a decomposição parece confirmar o que penso.

Decompor

No entanto, quando regrito a série temporal em 11 variáveis ​​fictícias sazonais (janeiro a novembro, exceto dezembro), encontro o seguinte:

    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

Basicamente, todos os coeficientes de sazonalidade não são estatisticamente significativos.

Para executar a regressão linear, uso a seguinte função:

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)

onde eu configurei o Yvar como uma variável de série temporal com frequência mensal (frequência = 12).

Também tento levar em consideração o componente de tendência das séries temporais, incluindo uma variável de tendência para a regressão. No entanto, o resultado não muda.

                  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 ***

Portanto, minha pergunta é: estou fazendo algo errado na análise de regressão?

mattiace
fonte
11
@ forecaster, aqui está uma resposta para sua pergunta (OP diz que a decomposefunção Ré usada).
Richard Hardy
11
Lendo o arquivo de ajuda da decomposefunção, parece que a função não testa se há sazonalidade. Em vez disso, apenas obtém médias para cada estação, subtrai a média e chama isso de componente sazonal. Portanto, produziria um componente sazonal, independentemente de haver um componente sazonal subjacente verdadeiro ou apenas ruído. No entanto, isso não explica por que seus manequins são insignificantes, embora você diga que a sazonalidade é visível a partir de um gráfico dos dados. Será que sua amostra é muito pequena para obter bonecos sazonais significativos? Eles são conjuntamente significativos?
Richard Hardy
3
Você precisa observar as escalas, o gráfico sazonal mostra que a variação sazonal está entre -0,02 e +0,04, enquanto os valores reais variam de 4 bilhões a 6 bilhões. A função Decompose força seus dados a mostrar alguma sazonalidade e é por isso que está mostrando um valor desprezível. Não há sazonalidade nos seus dados.
forecaster
11
Eu pensei que a sazonalidade é mais sobre movimentos com uma certa frequência "fixa" do que a magnitude do movimento. As escalas são diferentes, pois o primeiro gráfico mostra um saldo (em termos de libras) e o segundo é a alteração (expressa em termos percentuais). Eu apenas tentei refazer a regressão: se eu levar em consideração uma tendência polinomial, algum coeficiente começa a ser significativo. Eu acho que, como @danno sugeriu, a tendência é muito significativa.
Mattiace
11
O teste Canova e Hansen pode fornecer algumas informações adicionais sobre a presença e a estabilidade de um padrão sazonal em seus dados. Para algumas aplicações deste teste, veja, por exemplo, esta postagem , que também fornece o link para o artigo original e o código de exemplo.
Javlacalle

Respostas:

1

Você está fazendo a regressão nos dados depois de remover a tendência? Você tem uma tendência positiva e sua assinatura sazonal provavelmente está mascarada em sua regressão (a variação devido à tendência ou erro é maior que devido ao mês), a menos que você tenha explicado a tendência em Yvar ...

Além disso, não estou muito confiante com as séries temporais, mas cada observação não deve ser atribuída por mês e sua regressão se parece com isso?

lm(Yvar ~ Time + Month)

Desculpas se isso não faz sentido ... A regressão faz mais sentido aqui?

danno
fonte
Li em um livro de Econometria (Wooldridge) que se você introduzir um fator de "tempo" na regressão, é como diminuir a tendência de sua série temporal original. Para fator "tempo", quero dizer um vetor como [1, 2, ..., n] com n = para o número de observações. Eu realmente não entendo o seu segundo ponto. Minha segunda regressão é semelhante à seguinte: lm.r = lm (Yvar ~ Var Jan + Var Nov). É isso que você queria dizer? F e b + . . . + V a rTime+VarFeb+...+Var
Mattiace
Seria bom ver algumas linhas dos seus dados. Mas imagino que você tenha três colunas, Tempo, Yvar, Mês. As linhas são observações. Assim, eu pensaria que os fatores em seu lm () seriam Hora e mês (não os níveis de fator do mês). Além disso, acho que há alguns problemas com lm ​​() em séries temporais ... a observação não é independente - correlacionada automaticamente no tempo.
Danno
1

Em sua representação gráfica das séries temporais, é óbvio que "tendência" - um componente linear no tempo - é o único contribuinte substancial para a realização. Gostaríamos de comentar que o aspecto mais importante desta série cronológica é o aumento estável a cada mês.

Depois disso, gostaria de comentar que a variação sazonal é minúscula em comparação. Portanto, não é de surpreender que, com medidas mensais tomadas ao longo de 6 anos (um total de apenas 72 observações), o modelo de regressão linear não tenha precisão para identificar qualquer um dos contrastes de 11 meses como estatisticamente significativo. Além disso, não é surpreendente que o efeito do tempo não atingiu significância estatística, porque é o mesmo aumento linear aproximadamente consistentes ocorrendo ao longo de todas as 72 observações, depende do seu efeito sazonal.

A falta de significância estatística para qualquer um dos contrastes de 11 meses não significa que não há efeitos sazonais. De fato, se você usar um modelo de regressão para determinar se há sazonalidade, o teste apropriado é o teste de 11 graus de liberdade aninhado, que avalia simultaneamente a significância estatística do contraste de cada mês. Você obteria esse teste realizando uma ANOVA, teste de razão de verossimilhança ou teste de Wald robusto. Por exemplo:

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))

AdamO
fonte
0

Não sei se é o seu caso, mas isso aconteceu comigo quando comecei a analisar as séries temporais no R e o problema era que eu não havia declarado corretamente o período da série temporal ao criar o objeto de série temporal para decompô-lo. Há um parâmetro na função de série temporal que permite especificar sua frequência. Com isso, decompõe corretamente suas tendências sazonais.

jmnavarro
fonte
jmnavarro, defini a frequência corretamente na função decompose (= 12, pois tenho dados mensais). De fato, estou feliz com o resultado dessa função. Minha pergunta é por que não encontro o mesmo resultado (a sazonalidade é significativa) quando faço regressão linear usando variáveis ​​dummy. Fiz isso com R e excel e os resultados são os mesmos: coeficientes fictícios não estatisticamente significativos. Isso é contra o que encontrei anteriormente na função decompor. Eu não entendo, se eu estou faltando alguma coisa aqui fora
Mattiace
É verdade, desculpe, não entendi completamente sua pergunta. Ajudaria se você pudesse postar seu código, para que pudéssemos tentar reproduzi-lo.
jmnavarro