Por que a função stl fornece variação sazonal significativa com dados aleatórios

11

Plotamos o seguinte código com a função stl (Decomposição Sazonal de Séries Temporais de Loess):

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

Ele mostra uma variação sazonal significativa com dados aleatórios inseridos no código acima (função rnorm). Variação significativa é vista toda vez que é executada, embora o padrão seja diferente. Dois desses padrões são mostrados abaixo:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Como podemos confiar na função stl em alguns dados quando mostra variação sazonal. Essa variação sazonal precisa ser vista em vista de outros parâmetros? Obrigado pela sua compreensão.

O código foi retirado desta página: Esse é um método apropriado para testar efeitos sazonais nos dados da contagem de suicídios?

rnso
fonte
11
Isso acontece porque existem "padrões" em dados aleatórios, se a sua técnica de ajuste tiver parâmetros suficientes.
bill_080
3
O termo "significativo" aqui não parece refletir nenhum tipo de teste de significância.
Nick Cox
11
Stl é um método não paramétrico orientado a dados, portanto, não há como quantificar a ausência de presença de incertezas sazonais através de testes de significância.
previsor

Respostas:

12

A decomposição de Loess destina-se a suavizar a série aplicando médias aos dados, para que se colapsem em componentes, por exemplo, tendência ou sazonal, que são interessantes para a análise dos dados. Mas essa metodologia não se destina a fazer um teste formal para a presença de sazonalidade .

Embora no seu exemplo stlretorne um padrão suavizado de periodicidade sazonal, esse padrão não é relevante para explicar a dinâmica da série. Para ver isso, podemos comparar a variação de cada componente em relação à variação da série original.

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 

Podemos ver que é o restante que explica a maior parte da variação nos dados (como seria de esperar de um processo de ruído branco).

Se tomarmos uma série com sazonalidade, a variação relativa do componente sazonal é muito mais relevante (embora não tenhamos uma maneira direta de testá-lo, pois loess não é paramétrico).

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 

As variações relativas indicam que a sazonalidade é o principal componente que explica a dinâmica das séries.


Um olhar descuidado da trama stlpode ser enganador. O bom padrão retornado por stlpode nos fazer pensar que um padrão sazonal relevante pode ser identificado nos dados, mas uma análise mais detalhada pode revelar que esse não é realmente o caso. Se o objetivo é decidir sobre a presença de sazonalidade, a decomposição do loess pode ser útil como uma visão preliminar, mas deve ser complementada com outras ferramentas.

javlacalle
fonte
No exemplo do AirPassengers, não há tendência de saída, enquanto há uma tendência clara na plotagem (AirPassengers). A tendência chega a 0,86 (com sazonal de apenas 0,1) se a instrução "diff (log (AirPassengers))" for removida. O que deveria ser feito?
rnso
Dei um exemplo que é numericamente claro. Na prática, apenas comparando a variação dos componentes suavizados pode não ser suficiente para chegar a uma conclusão sobre a presença de sazonalidade. Por exemplo, como você descobriu neste caso, se a tendência não for removida pela diferença, a variação da tendência domina a variação do componente sazonal. A questão é: uma variação relativa de 0,1 é grande o suficiente para considerar esse componente relevante? O problema é que, com base no loess, não há uma maneira direta de testar se a variação do componente é significativa.
Javlacalle
Como eu disse, o que devemos fazer neste e em outros casos é usar outros métodos para testar a presença de sazonalidade. Veja, por exemplo, a segunda parte da minha resposta aqui . Depois de concluirmos que a sazonalidade está presente nos dados, podemos usar o loess para obter o padrão desse componente.
Javlacalle
Apenas para mais esclarecimentos, como a variação relativa mostra quanto uma parte da decomposição desempenha nos dados gerais? IE 70% sazonal, tendência de 20%. etc.
Ted Mosby
11
@TedMosby A variação é uma medida de variabilidade / dispersão nos dados. A soma das variações dos componentes (por exemplo, tendência, sazonal) e a variação do restante são adicionadas à variação da série original. Dessa maneira, comparando a variação de um componente com a variação da série original, podemos ter uma idéia de quão relevante o componente é (ou seja, quanto da variabilidade nos dados é explicada pelo componente).
javlacalle
2

Do mesmo modo, vi a utilização de modelos de Fourier em dados não sazonais, forçando uma estrutura sazonal nos valores de ajuste e previsão, causando um resultado semelhante (suspiro!). Ajustar um modelo presumido fornece ao usuário o que ele está impondo / presumindo, o que nem sempre é o que uma boa análise sugere / fornece.

IrishStat
fonte
11
stl()não é baseado em idéias de Fourier. Embora eu ainda não tenha visto alguém defendendo análises "irracionais", observe que qualquer família de modelos ajustada pode ser considerada imposta ou presumida. A questão é até que ponto qualquer procedimento oferece escopo para que os usuários percebam se e como funciona mal para um determinado conjunto de dados.
Nick Cox
@NickCox bem verdade ....
IrishStat