¿Por qué la función stl proporciona una variación estacional significativa con datos aleatorios?

11

Tracé el siguiente código con la función stl (Descomposición estacional de series de tiempo de Loess):

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

Muestra una variación estacional significativa con datos aleatorios colocados en el código anterior (función rnorm). Se observa una variación significativa cada vez que se ejecuta, aunque el patrón es diferente. A continuación se muestran dos de estos patrones:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

¿Cómo podemos confiar en la función stl en algunos datos cuando muestra variación estacional? ¿Es necesario ver esta variación estacional a la vista de algunos otros parámetros? Gracias por tu perspicacia.

El código se ha tomado de esta página: ¿Es este un método apropiado para evaluar los efectos estacionales en los datos de recuento de suicidios?

rnso
fuente
1
Eso sucede porque hay "patrones" en datos aleatorios, si su técnica de ajuste tiene suficientes parámetros.
bill_080
3
El término "significativo" aquí no parece reflejar ningún tipo de prueba de significación.
Nick Cox
1
Stl es un método no paramétrico basado en datos, por lo que no hay forma de cuantificar la presencia de ausencia de incertidumbres estacionales a través de pruebas de significación.
pronosticador

Respuestas:

12

La descomposición de Loess está pensada para suavizar la serie mediante la aplicación de promedios a los datos para que colapsen en componentes, por ejemplo, la tendencia o la temporada, que son interesantes para el análisis de los datos. Pero esta metodología no pretende hacer una prueba formal de la presencia de estacionalidad .

Aunque en su ejemplo stldevuelve un patrón suavizado de periodicidad estacional, este patrón no es relevante para explicar la dinámica de la serie. Para ver eso, podemos comparar la varianza de cada componente con respecto a la varianza de la serie 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 es el resto lo que explica la mayor parte de la variación en los datos (como es de esperar para un proceso de ruido blanco).

Si tomamos una serie con estacionalidad, la varianza relativa del componente estacional es mucho más relevante (aunque no tenemos una forma directa de probarlo ya que loess no es 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 

Las variaciones relativas indican que la estacionalidad es el componente principal que explica la dinámica de la serie.


Una mirada descuidada a la trama stlpuede ser engañosa. El buen patrón devuelto por stlpuede hacernos pensar que se puede identificar un patrón estacional relevante en los datos, pero una mirada más cercana puede revelar que en realidad no es así. Si el propósito es decidir sobre la presencia de estacionalidad, la descomposición de loess puede ser útil como una vista preliminar, pero debe complementarse con otras herramientas.

javlacalle
fuente
En su ejemplo de AirPassengers, no hay tendencia en la producción, mientras que hay una tendencia clara en la trama (AirPassengers). La tendencia llega a 0,86 (con una estacionalidad de solo 0,1) si se elimina la declaración "diff (log (AirPassengers))". ¿Lo que debe hacerse?
rnso
Di un ejemplo que es numéricamente claro. En la práctica, solo comparando la varianza de los componentes suavizados puede no ser suficiente para llegar a una conclusión sobre la presencia de estacionalidad. Por ejemplo, como descubrió en este caso, si la tendencia no se elimina al tomar diferencias, la varianza de la tendencia domina la varianza del componente estacional. La pregunta es: ¿es una varianza relativa de 0.1 lo suficientemente grande como para considerar relevante este componente? El problema es que, en base a loess, no hay una forma directa de probar si la varianza del componente es significativa.
javlacalle
Como dije, lo que debemos hacer en este y otros casos es usar otros métodos para evaluar la presencia de estacionalidad. Vea, por ejemplo, la segunda parte de mi respuesta aquí . Una vez que hemos concluido que la estacionalidad está presente en los datos, podemos usar loess para obtener el patrón de este componente.
javlacalle
Solo para más aclaraciones, ¿cómo muestra la varianza relativa cuánto juega una parte de la descomposición en los datos generales? IE 70% estacional, 20% tendencia. etc.
Ted Mosby
1
@TedMosby La varianza es una medida de variabilidad / dispersión en los datos. La suma de las variaciones de los componentes (p. Ej., Tendencia, estacional) y la variación del resto se suman a la variación de la serie original. De esta manera, al comparar la varianza de un componente con la varianza de la serie original, podemos tener una idea de qué tan relevante es el componente (es decir, qué parte de la variabilidad en los datos se explica por el componente).
javlacalle
2

En una línea similar, he visto la utilización de modelos de Fourier para datos no estacionales, forzando una estructura estacional en los valores de ajuste y pronóstico, causando un resultado similar (¡jadeo!). Ajustar un modelo presunto le da al usuario lo que está imponiendo / presumiendo, que no siempre es lo que una buena analítica sugeriría / entregaría.

IrishStat
fuente
1
stl()no se basa en ideas de Fourier. Aunque todavía no he visto a nadie que defienda el análisis "sin sentido", tenga en cuenta que cualquier familia modelo ajustada podría considerarse como impuesta o presumida. La pregunta es hasta qué punto cualquier procedimiento ofrece margen para que los usuarios se den cuenta de si funciona mal para un conjunto de datos en particular y cómo funciona.
Nick Cox
@NickCox bastante cierto ...
IrishStat