79 votos

¿Cómo comparar estadísticamente dos series temporales?

Tengo dos series temporales, que se muestran en el siguiente gráfico:

Time Series Plot

El gráfico muestra el detalle completo de ambas series temporales, pero puedo reducirlo fácilmente a sólo las observaciones coincidentes si es necesario.

Mi pregunta es: ¿Qué métodos estadísticos puedo utilizar para evaluar las diferencias entre las series temporales?

Sé que es una pregunta bastante amplia y vaga, pero no encuentro mucho material introductorio sobre esto en ningún sitio. Tal y como yo lo veo, hay dos cosas distintas que evaluar:

1. ¿Son los mismos valores?

2. ¿Las tendencias son las mismas?

¿Qué tipo de pruebas estadísticas sugeriría para evaluar estas cuestiones? Para la pregunta 1, obviamente puedo evaluar las medias de los diferentes conjuntos de datos y buscar diferencias significativas en las distribuciones, pero ¿hay alguna forma de hacerlo que tenga en cuenta la naturaleza de las series temporales de los datos?

Para la pregunta 2, ¿hay algo como las pruebas de Mann-Kendall que busque la similitud entre dos tendencias? Podría hacer la prueba de Mann-Kendall para ambos conjuntos de datos y comparar, pero no sé si es una forma válida de hacer las cosas, o si hay una forma mejor.

Estoy haciendo todo esto en R, así que si las pruebas que sugieren tienen un paquete de R entonces por favor hágamelo saber.

16 votos

El gráfico parece ocultar lo que puede ser una diferencia crucial entre estas series: podrían estar muestreadas a diferentes frecuencias. La línea negra (Aeronet) parece estar muestreada sólo unas 20 veces y la línea roja (Visibilidad) cientos de veces o más. Otro factor crítico puede ser la regularidad del muestreo, o la falta de ella: los tiempos entre las observaciones de Aeronet parecen variar un poco. En general, ayuda a borrar las líneas de conexión y mostrar sólo los puntos correspondientes a los datos reales, para que el espectador pueda determinar estas cosas visualmente.

2 votos

Aquí es una biblioteca de Python para el análisis de series temporales no espaciadas.

1 votos

Deja un enlace a a notas de la conferencia que discute este problema para los futuros lectores

39voto

Owen Fraser-Green Puntos 642

Como ya han dicho otros, es necesario tener una frecuencia de medición común (es decir, el tiempo entre observaciones). Una vez hecho esto, yo identificaría un modelo común que describiera razonablemente cada serie por separado. Podría ser un modelo ARIMA o un modelo de regresión de tendencias múltiples con posibles desplazamientos de nivel o un modelo compuesto que integre tanto la memoria (ARIMA) como las variables ficticias. Este modelo común podría estimarse globalmente y por separado para cada una de las dos series y, a continuación, se podría construir una prueba F para comprobar la hipótesis de un conjunto común de parámetros.

2 votos

Bueno, en realidad no es necesario tener la misma frecuencia para ambas series. Es que por lo visto hay poco software para otros casos, pero mira traces.readthedocs.io/es/latest . Parece que se publica mucho sobre otros casos en las revistas de astronomía y en las de finanzas y geofísica ... ver refs en es.wikipedia.org/wiki/Serie_de_tiempo_desigual

19voto

VictorS Puntos 31

Considere la grangertest() en el lmtest biblioteca.

Es una prueba para ver si una serie temporal es útil para predecir otra.

Un par de referencias para empezar:

https://spia.uga.edu/faculty_pages/monogan/teaching/ts/

https://spia.uga.edu/faculty_pages/monogan/teaching/ts/Kgranger.pdf

http://en.wikipedia.org/wiki/Granger_causality

1 votos

Su tamaño de muestra sería demasiado pequeño con < 10 puntos de datos frente a la cantidad de parámetros que necesita para encajar en Granger.

7 votos

@fionn, los enlaces de tu respuesta están muertos. ¿Puedes actualizar tu respuesta?

4voto

krzycho Puntos 15

Acabo de encontrar esto. Su primera respuesta nos trazar g los dos conjuntos la misma escala (timewise) para ver las diferencias visualmente. Lo has hecho y puedes ver fácilmente que hay algunas diferencias evidentes. El siguiente paso es utilizar el análisis de correlación simple... y ver qué relación tienen utilizando el coeficiente de correlación (r). Si la r es pequeña, la conclusión sería que están débilmente relacionadas y, por lo tanto, no son comparables, mientras que un valor mayor de r sugeriría una buena comparación entre las dos series. El tercer paso, cuando hay una buena correlación, es comprobar la significación estadística de la r. En este caso se puede utilizar la prueba de Shapiro Welch, que supondría que las dos series se distribuyen normalmente (hipótesis nula) o no (hipótesis alternativa). Hay otras pruebas que puedes hacer, pero espero que mi respuesta te ayude.

3 votos

Cuando se comparan series temporales, es la autocorrelación y la posibilidad de ajustar modelos de series temporales, como los modelos ARIMA, lo que puede ayudar a determinar su similitud. Dos realizaciones del mismo proceso estocástico no tienen por qué tener el mismo aspecto al trazarlas.

1 votos

@MichaelR.Chernick Pero a menudo, cuando se comparan series temporales, se está más interesado en las realizaciones particulares que en las propiedades estadísticas.

2voto

krystal marie Puntos 1

Quiero proponer otro enfoque. Se trata de comprobar si dos series temporales son iguales. Este enfoque sólo es adecuado para los datos muestreados con poca frecuencia donde la autocorrelación es baja.

Si la serie temporal x es similar a la serie temporal y, entonces la varianza de x-y debería ser menor que la varianza de x. Podemos comprobarlo utilizando una prueba F unilateral para la varianza. Si la relación var(x-y)/var(x) es significativamente menor que uno, entonces y explica una proporción significativa de la varianza de x.

También tenemos que comprobar que x-y no es significativamente diferente de 0. Esto se puede hacer con una prueba t de una muestra y dos lados.

x <- cumsum(runif(10)-0.5)
t <- seq_along(x)
y <- x + rnorm(10, 0, 0.2)
# y <- x + rnorm(10, 0.2, 0.2)
plot(t,x, "b", col = "red")
points(t,y, "b", col = "blue")

var.test(x-y, x, alternative = "less") # does y improve variance of x?
#> 
#>  F test to compare two variances
#> 
#> data:  x - y and x
#> F = 0.27768, num df = 9, denom df = 9, p-value = 0.03496
#> alternative hypothesis: true ratio of variances is less than 1
#> 95 percent confidence interval:
#>  0.0000000 0.8827118
#> sample estimates:
#> ratio of variances 
#>           0.277679
t.test(x-y) # check that x-y does not have an offset
#> 
#>  One Sample t-test
#> 
#> data:  x - y
#> t = -0.0098369, df = 9, p-value = 0.9924
#> alternative hypothesis: true mean is not equal to 0
#> 95 percent confidence interval:
#>  -0.1660619  0.1646239
#> sample estimates:
#>     mean of x 
#> -0.0007189834

Creado el 2021-09-02 por el paquete reprex (v2.0.0)

Creo que debería ser posible ampliar este enfoque para comprobar si dos series temporales están correlacionadas linealmente, utilizando x-lm(x ~ y) en lugar de x-y.

Edición: El tratamiento de la autocorrelación creo que podría hacerse encontrando un grado de libertad efectivo adecuado para las pruebas, c.f, https://doi.org/10.1016/j.neuroimage.2019.05.011

0voto

Bil Puntos 141

Ajuste una línea recta a las dos señales de las series temporales utilizando polyfit. A continuación, calcule el error cuadrático medio (RMSE) de ambas líneas. El valor obtenido para la línea roja sería bastante menor que el obtenido para la línea gris.

También haga las lecturas en alguna frecuencia común.

2 votos

Bienvenido a Cross Validated y gracias por tu primera respuesta. Sin embargo, me preocupa que no responda directamente a la pregunta: ¿cómo ayudaría exactamente el enfoque propuesto a la persona que pregunta a evaluar si los valores y/o las tendencias son similares?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X