Análisis de datos de series temporales en Python: hacia la IA

Estás leyendo la publicación: Análisis de datos de series temporales en Python: hacia la IA

Publicado originalmente en Hacia la IA, la empresa líder mundial en noticias y medios de IA y tecnología. Si está creando un producto o servicio relacionado con la IA, lo invitamos a considerar convertirse en patrocinador de la IA. En Hacia la IA, ayudamos a escalar las empresas emergentes de IA y tecnología. Permítanos ayudarlo a dar rienda suelta a su tecnología a las masas.

Una guía práctica para el análisis de datos de series temporales en Python Pandas

Los datos de series temporales son uno de los tipos de datos más comunes en la industria y probablemente trabajará con ellos en su carrera. Por lo tanto, comprender cómo trabajar con él y cómo aplicar técnicas analíticas y de pronóstico es fundamental para todos los aspirantes a científicos de datos. En esta serie de artículos, repasaré las técnicas básicas para trabajar con datos de series de tiempo, comenzando con la manipulación, el análisis y la visualización de datos para comprender sus datos y prepararlos y luego usar técnicas estadísticas, de aprendizaje automático y profundas para realizar pronósticos. y clasificación. Será más una guía práctica en la que aplicaré cada concepto discutido y explicado a datos reales.

Esta serie constará de 8 artículos:

  1. Manipulación de datos de series temporales en Python Pandas [A Practical Guide]
  2. Análisis de series temporales en Python Pandas [A Practical Guide] (¡Usted está aquí!)
  3. Visualización de datos de series temporales en Python [A practical Guide]
  4. Modelos de Arima en Python [A practical Guide]
  5. Aprendizaje automático para datos de series temporales [A practical Guide]
  6. Aprendizaje profundo para datos de series temporales [A practical Guide]
  7. Proyecto de pronóstico de series temporales utilizando análisis estadístico, aprendizaje automático y aprendizaje profundo.
  8. Clasificación de series temporales mediante análisis estadístico, aprendizaje automático y aprendizaje profundo.

Tabla de contenidos:

  1. Correlación y Autocorrelación
  2. Modelos de series temporales
  3. Modelos autorregresivos (AR)
  4. Modelos de media móvil (MA) y ARMA
  5. Caso de Estudio: Cambio Climático

Todos los códigos y conjuntos de datos utilizados en este artículo se pueden encontrar en este repositorio.

1. Correlación y Autocorrelación

En esta sección, se le presentarán las ideas de correlación y autocorrelación para series de tiempo. La correlación describe la relación entre series de dos tiempos y la autocorrelación describe la relación de una serie de tiempo con sus valores pasados.

1.1. Correlación de dos series temporales

La correlación de las dos series temporales mide cómo varían entre sí. El coeficiente de correlación resume esta relación en un número. Una correlación de uno significa que las dos series tienen una relación lineal perfecta sin desviaciones. Las altas correlaciones significan que las dos series varían fuertemente juntas. Una correlación baja significa que varían juntos, pero existe una asociación débil. Y una correlación negativa alta significa que varían en direcciones opuestas, pero aún con una relación lineal.

Hay un error común al calcular la correlación entre dos series de tiempo de tendencia. Considere series de dos tiempos que son tendencia. Incluso si las dos series no están relacionadas en absoluto, aún podría obtener una correlación muy alta. Por eso, cuando miras la correlación de, digamos, dos acciones, deberías mirar la correlación de sus devolucionesno su niveles.

En el siguiente ejemplo, las dos series, precios de las acciones y avistamientos de ovnis, ambos tienden hacia arriba con el tiempo. Por supuesto, no hay relación entre esas dos series, pero la correlación es 0,94. Pero si calcula la correlación de los cambios porcentuales, la correlación se reduce a aproximadamente cero.

La siguiente figura muestra que las dos series están correlacionadas cuando se trazan con el tiempo. La razón de esto, como se mencionó, es que ambas son series de tendencias.

1.2. Regresión lineal simple

Una regresión lineal simple para series de tiempo encuentra la pendiente, beta, y el intercepto, alfa, de una línea que se ajusta mejor entre una variable dependiente, y, y una variable independiente, x. Las x y las y pueden ser series de dos tiempos.

Las técnicas de regresión son muy comunes y, por lo tanto, hay muchos paquetes en Python que se pueden usar. En statsmodels, hay OLS. En entumecidohay polifit, y si establece el grado en 1, ajusta los datos a una línea, que es una regresión lineal. Los pandas tienen un viejos método, y espía tiene una función de regresión lineal. Tenga en cuenta que el orden de x e y no es consistente entre paquetes.

En el siguiente ejemplo, lamentaremos los valores de los precios del petróleo utilizando el sp500 como variable independiente. Los datos se pueden encontrar aquí. Debe agregar una columna de unos como variable dependiente del lado derecho. La razón por la que tiene que hacer esto es que la función de regresión asume que si no hay una columna constante, entonces desea ejecutar la regresión sin una intersección. Al agregar una columna de unos, modelos estadisticos calculará también el coeficiente de regresión de esa columna, que se puede interpretar como la intersección de la línea. El método de statsmodels “agregar constante” es una forma simple de agregar una constante.

El resultado de la regresión se muestra en la siguiente figura.

Solo nos centraremos en los elementos resaltados en amarillo de los resultados de la regresión. El coef contiene la pendiente y la intersección del análisis de regresión. Dado que las dos variables están negativamente correlacionadas, la pendiente es negativa. La segunda estadística importante a tener en cuenta es el R-Squared, que es 0,12. El R-cuadrado mide qué tan bien se ajusta la línea de regresión lineal a los datos. Existe una relación entre la correlación y el R-cuadrado. La magnitud de la correlación es la raíz cuadrada del R-cuadrado. Y el signo de la correlación es el signo de la pendiente de la línea de regresión.

1.3. Autocorrelación

La autocorrelación es la correlación de una sola serie temporal con una copia retrasada de sí misma. También se llama correlación serial. A menudo, cuando nos referimos a la autocorrelación de una serie, nos referimos a la autocorrelación de “retraso uno”. Entonces, al usar datos diarios, por ejemplo, la autocorrelación sería la correlación de la serie con la misma serie retrasada un día.

🔥 Recomendado:  10 datos sobre DuckDuckGo para expertos en marketing digital y profesionales de SEO

la autocorrelación positiva, que también se conoce como seguimiento de tendencias, significa que el aumento observado en un intervalo de tiempo conduce a un aumento proporcional en el intervalo de tiempo rezagado. Mientras que la autocorrelación negativa, que se conoce como reversión a la media, significa que si un valor en particular está por encima del promedio, es más probable que el siguiente valor (o el valor anterior) esté por debajo del promedio. La siguiente figura muestra un ejemplo de ambos.

La autocorrelación de series de tiempo tiene muchas aplicaciones en el mundo real. Muchas estrategias de fondos de cobertura son solo versiones un poco más complejas de las estrategias de reversión a la media y de impulso. Dado que las acciones históricamente han tenido una autocorrelación negativa en horizontes de aproximadamente una semana, una estrategia popular es comprar acciones que han caído durante la última semana y vender acciones que han subido. Para otros activos como materias primas y divisas, históricamente han tenido una autocorrelación positiva en horizontes de varios meses, por lo que la estrategia típica de los fondos de cobertura es comprar materias primas que han subido en los últimos meses y vender aquellas materias primas que han bajado.

1.4. Función de autocorrelación

La función de autocorrelación (ACF) es la autocorrelación en función del retraso. Cualquier autocorrelación significativa distinta de cero implica que la serie se puede pronosticar desde el pasado. Puede ser en qué valores debe confiar para pronosticar los valores en el futuro, descubrir ganancias estacionales al observar la función de autocorrelación en estas temporadas y puede usarse para seleccionar un modelo para ajustar los datos como se mostrará en la sección 3.

trama_acf es el modelos estadisticos para trazar la función de autocorrelación. La entrada x es una serie o matriz. Los retrasos del argumento indican cuántos retrasos de la función de autocorrelación se trazarán. El argumento alfa establece el ancho del intervalo de confianza. Por ejemplo, si alfa es igual a 0,05, eso significa que si la verdadera autocorrelación en ese retraso es cero, solo hay un 5% de probabilidad de que la autocorrelación de la muestra quede fuera de esa ventana. Obtendrá un intervalo de confianza más amplio si establece alfa más bajo o si tiene menos observaciones.

si no quieres bonos establece alfa = 1

2. Modelos de series temporales

En esta sección, aprenderá acerca de algunos modelos simples de series de tiempo. Estos incluyen ruido blanco y una caminata aleatoria.

2.1. Ruido blanco

El ruido blanco es la serie con media constante y varianza con el tiempo y autocorrelación cero en todos los retrasos. Hay varios casos especiales de ruido blanco. Por ejemplo, si los datos son ruido blanco pero también tienen una distribución normal o gaussiana, se denomina ruido blanco gaussiano.

El ruido blanco se parece a lo siguiente:

La autocorrelación del ruido blanco:

2.2. Caminata aleatoria

En un paseo aleatorio, el precio de hoy es el mismo que el precio de ayer además del ruido blanco.

P

Por lo tanto, el cambio en el precio es ruido blanco. Dado que no podemos pronosticar el ruido blanco, el mejor pronóstico para el precio de hoy será el precio de ayer.

Para probar si una serie de tiempo sigue una caminata aleatoria o no, podemos hacer una regresión del valor actual (por ejemplo, el precio) con los valores rezagados. Si el coeficiente de la pendiente es significativamente menor que uno, podemos rechazar la hipótesis nula (la serie sigue un camino aleatorio). Si no es significativamente diferente de uno, no podemos rechazar la hipótesis nula.

Otra forma de hacerlo es hacer una regresión de la diferencia de valores en los valores de retraso y probar que el coeficiente de pendiente sea cero en lugar de uno. Esto se conoce como el Dickey-Fuller prueba y si se agregan más valores rezagados se llamará la Dickey-Fuller aumentado (ADF) prueba.

El siguiente ejemplo muestra cómo aplicar esta prueba al SP500 datos en python usando el modelos estadisticos biblioteca.

El valor p es 0,9, lo que significa que la diferencia no es significativa y no podemos rechazar la hipótesis nula, por lo que la serie de tiempo del SP500 sigue un camino aleatorio.

2.3. Estacionario

Las señales estacionarias son las señales que su distribución conjunta no depende del tiempo. Una definición más práctica es la definición de papelería débil, que significa que la media, la varianza y la autocorrelación de la señal no dependen del tiempo.

La papelería es un concepto muy importante en el análisis y pronóstico de series de tiempo. La razón de esto es que si la serie no es estacionaria, no podríamos modelarla ni pronosticarla. La tarea principal del paso de modelado es estimar un conjunto de parámetros que podrían usarse para las tareas requeridas, como la previsión. Si la serie no es estacionaria, sus parámetros cambiarán con el tiempo, por lo que no podrá modelarla. Una caminata aleatoria es un tipo común de serie no estacionaria. La varianza crece con el tiempo. Por ejemplo, si los precios de las acciones son un paseo aleatorio, entonces la incertidumbre sobre los precios de mañana es mucho menor que la incertidumbre dentro de 10 años. Las series estacionales también son no estacionarias.

Muchas series no estacionarias pueden convertirse en estacionarias mediante una simple transformación. A Random Walk es una serie no estacionaria, pero si tomas las primeras diferencias, la nueva serie es White Noise, que es estacionaria.

En el ejemplo a continuación, el Precios del S&P 500 que es un paseo aleatorio no estacionario, la señal se transforma en una señal de ruido blanco estacionaria tomando la primera diferencia.

El siguiente ejemplo es para las ganancias trimestrales de Bloque H & R, que tiene un gran componente estacional y, por lo tanto, no es estacionario. Si tomamos la diferencia estacional, tomando la diferencia con un retraso de 4, la serie transformada parece estacionaria.

🔥 Recomendado:  Investigación: los especialistas en marketing prefieren los datos de terceros. Pero, ¿qué pasa con las preocupaciones de privacidad?

El último ejemplo son los ingresos trimestrales de Amazon. Está creciendo exponencialmente y exhibe un fuerte patrón estacional. Primero, tomaremos solo el logaritmo de la serie para eliminar el crecimiento exponencial. Pero si toma tanto el logaritmo de la serie como la diferencia estacional, la serie transformada parece estacionaria.

3. Modelos autorregresivos (AR)

En esta sección, explicaremos los modelos autorregresivos, o AR, para series de tiempo. Estos modelos utilizan valores pasados ​​de la serie para predecir el valor actual.

3.1. Definición de modelos AR

Un modelo autorregresivo (AR) predice el comportamiento futuro basado en el comportamiento pasado. Se utiliza para pronosticar cuando existe alguna correlación entre los valores de una serie temporal y los valores que los preceden y suceden.

En el modelo AR, el valor de hoy es igual a la fracción (phi) del valor de ayer además del ruido y la media, como se muestra en la siguiente ecuación:

R

Dado que solo observamos un paso anterior en el tiempo, este es el modelo AR (1), el modelo se puede ampliar para incluir más valores retrasados ​​​​y más parámetros de phi. Aquí mostramos un AR(1), un AR(2) y un AR(3).

Si phi es igual a uno, entonces la serie representará un paseo aleatorio como se discutió en la sección anterior y si es cero será un ruido blanco. Para que el proceso sea estable y estacionario, phi debe estar entre -1 y +1. Si phi tiene un valor negativo, un rendimiento positivo en el último período, en el momento t-1, implica que es más probable que el rendimiento de este período sea negativo. Nos referimos a esto como reversión a la media en la sección 1.3. Si phi tiene un valor positivo, entonces un rendimiento positivo en el último período implica que se espera que el rendimiento de este período sea positivo. Nos referimos a esto como impulso en la sección 1.3.

El siguiente ejemplo muestra cuatro series de tiempo simuladas con diferentes valores de phi (0.9, -0.9, 0.5, -0.5):

Cuando phi es 0,9, se parece a un paseo aleatorio. Cuando phi es igual a -0.9, el proceso tiene un gran valor positivo seguido por uno mayormente negativo. Los dos inferiores son similares pero menos exagerados y más cercanos al ruido blanco.

Para tener una mejor comprensión, veamos la función de autocorrelación de estas cuatro series de tiempo simuladas:

Si phi es positivo, la función de autocorrelación decaerá exponencialmente a la tasa de phi. Esto significa que si phi es 0.9, entonces la autocorrelación en 1 es 0.9 y en 2 es (0.9)**2 y en 3 es (0.9)**3, y así sucesivamente. Si phi es negativo, será el mismo pero invertirá su signo en cada retraso.

3.2. Estimación y pronóstico de modelos AR

Para estimar los parámetros de los modelos AR para una serie de tiempo, podemos usar la clase ARIMA como se muestra en el siguiente ejemplo:

El orden (1,0,0) significa que está ajustando los datos a un modelo AR(1). Una orden (2,0,0) significaría que está ajustando los datos a un modelo AR(2). Las partes segunda y tercera de la orden se discutirán en la siguiente sección.

El resumen de los resultados se muestra a continuación, el parámetro phi está resaltado en amarillo. Podemos ver que es 0.91 que es similar al parámetro phi de los datos simulados usados ​​en la subsección anterior.

3.3. Elegir el modelo adecuado

En el apartado anterior ya se conocía el orden del modelo. Sin embargo, en la práctica, esto no se le dará a usted. Existen diferentes métodos para determinar el orden del modelo AR. Nos centraremos en dos de ellos: La Función de Autocorrelación Parcial y los Criterios de Información.

La función de autocorrelación parcial (PACF) mide los beneficios incrementales de agregar otro retraso. Para tener una mejor comprensión de PACF, primero definamos la autocorrelación parcial. Una autocorrelación parcial es una descripción de la relación entre una observación en una serie de tiempo y los datos de pasos de tiempo anteriores que no tenga en cuenta las correlaciones entre las observaciones intermedias. La correlación entre observaciones en pasos de tiempo sucesivos es una función lineal de las correlaciones indirectas. Estas conexiones indirectas se eliminan utilizando la función de autocorrelación parcial.

Basado en esta definición de autocorrelación parcial, el PACF indica solo la asociación entre dos datos que los retrasos más cortos entre esas observaciones no explican. La autocorrelación parcial para el retraso 3 es, por ejemplo, simplemente la correlación que los retrasos 1 y 2 no explican. En otras palabras, la correlación parcial para cada rezago es la correlación única entre las dos observaciones después de eliminar las correlaciones intermedias..

Para trazar el PACF, puede usar la función plot_pacf de la biblioteca statsmodels como se muestra en el siguiente ejemplo:

Generamos dos datos simulados con AR(1) y AR(2), la siguiente figura muestra el PACF para ambos:

Estos gráficos muestran la función de autocorrelación parcial para modelos AR de diferentes órdenes. En la gráfica superior, para un modelo AR(1), solo el retraso (1) PACF es significativamente diferente de cero. De manera similar, para un modelo AR(2), dos rezagos son diferentes de cero.

Si aplicamos la función ARIMA que usamos en la subsección anterior, a los datos simulados usados ​​en el ejemplo anterior y usamos el orden del modelo que obtuvimos de la gráfica PACF. Deberíamos obtener los mismos parámetros de la función que la utilizada para generar los datos simulados. En el siguiente ejemplo, usamos los datos simulados con AR(2) y phi de 0.6 y 0.3:

Los coeficientes resaltados en amarillo son phi_1 y phi_2, que son, como se esperaba, 0,6 y 0,3.

Cuantos más parámetros haya en un modelo, mejor se ajustará el modelo a los datos. Pero esto puede llevar al modelo a sobreajustar los datos. El criterios de información ajustar la bondad de ajuste de un modelo imponiendo una penalización basada en el número de parámetros utilizados. Dos medidas comunes de bondad de ajuste ajustada se denominan criterio de información de Akaike (AIC) y criterio de información bayesiano (BIC).

🔥 Recomendado:  ¿Qué significa Mutual en Instagram?

El AIC es un método matemático para evaluar qué tan bien se ajusta un modelo a los datos a partir de los cuales se generó. En estadística, AIC se utiliza para comparar diferentes modelos posibles y determinar cuál se ajusta mejor a los datos. El modelo de mejor ajuste según AIC es el que explica la mayor cantidad de variación utilizando la menor cantidad posible de variables independientes. BIC es un criterio para la selección de modelos entre un conjunto finito de modelos. Se basa, en parte, en la función de verosimilitud y está estrechamente relacionado con AIC. Al ajustar modelos, es posible aumentar la probabilidad agregando parámetros, pero hacerlo puede resultar en un ajuste excesivo. El BIC resuelve este problema introduciendo un término de penalización por el número de parámetros en el modelo. El plazo de penalización es mayor en BIC que en AIC.

En la práctica, la forma de utilizar los criterios de información es ajustar varios modelos, cada uno con un número diferente de parámetros, y elegir el que tenga el criterio de información bayesiano más bajo. Esto se muestra en el siguiente ejemplo:

Puede ver que el BIC más bajo ocurre para un AR(2), que es de donde provienen los datos simulados.

4. Modelos de media móvil y ARMA

En esta sección, veremos otro tipo de modelo, el modelo de promedio móvil o MA. También veremos cómo combinar los modelos AR y MA en un poderoso modelo ARMA.

4.1.Definición del modelo de media móvil

En el modelo MA, los valores de hoy equivalen a una media más el ruido, más una fracción de theta del ruido de ayer. Esto se muestra en la siguiente ecuación:

R

A esto se le llama modelo MA de orden 1, o simplemente modelo MA(1) ya que consideramos solo el ruido de ayer, si buscamos dos días anteriores será MA(2), y así sucesivamente. Si el parámetro MA, theta, es cero, entonces el proceso es ruido blanco. Los modelos MA son estacionarios para todos los valores de theta.

Supongamos que R

Para crear datos simulados del modelo MA, podemos usar ArmaProcess de la biblioteca statsmodels como se muestra en el siguiente ejemplo:

4.2. Estimación del modelo MA

Para estimar el modelo MA a partir de una serie de tiempo dada, podemos usar el mismo método que para estimar el modelo AR que se mostró antes en la sección 3.2. Usaremos la función ARIMA, pero el orden será (0,0,1) en lugar de (1,0,0). Un ejemplo de esto se muestra a continuación:

El número resaltado en amarillo es el parámetro theta para los datos simulados. El resultado concuerda con nuestra expectativa ya que el parámetro utilizado para generar los datos de simulación fue 0.

4.3. Modelos ARMA

Un modelo ARMA es una combinación de los modelos AR y MA. Aquí está la fórmula del modelo ARMA(1,1):

R

5. Caso de Estudio: Cambio Climático

Reunamos todos los conceptos cubiertos en este artículo a través del estudio de caso del cambio climático. Analizaremos algunos datos de temperatura tomados durante casi 150 años. Los datos fueron descargados de la sitio web de la NOAA.

Se realizarán los siguientes pasos:

  • Aplique métodos pandas convirtiendo el índice a DateTime y trazando los datos.
  • Aplique la prueba Dickey-Fuller aumentada para ver si los datos son un paseo aleatorio.
  • Tomar las primeras diferencias en los datos para transformarlos en una serie estacionaria
  • Calcule la función de autocorrelación y la función de autocorrelación parcial de los datos.
  • Ajuste los modelos AR, MA y ARMA a los datos.
  • Usa el Criterio de Información para elegir el mejor modelo entre los que miraste.
  • Finalmente, con el mejor modelo, pronostique las temperaturas durante los próximos 30 años.

Los dos primeros pasos se realizan con el siguiente código:

El valor p de la prueba ADF es 0,58, lo que significa que la serie temporal no es estacionaria y no podemos rechazar que se trata de un paseo aleatorio.

Los pasos tercero y cuarto se aplican a los datos usando el siguiente código:

No hay un patrón claro en ACF y PACF excepto por la autocorrelación negativa lag-1 en ACF.

Después de eso, los datos se ajustarán a los tres modelos y se calculará el AIC para cada modelo. Esto se hace usando el siguiente código:

El AIC para tres modelos se muestra a continuación:

El ARMA(1,1) tiene los valores AIC más bajos entre los tres modelos. Por lo tanto, se utilizará para la estimación y pronóstico de parámetros.

De acuerdo con el modelo, se espera que la temperatura sea alrededor de 0,6 grados más alta en 30 años (casi en su totalidad debido a la tendencia), pero el intervalo de confianza del 95 % es de más de 5 grados.

Referencias

[1]. https://app.datacamp.com/learn/courses/time-series-analysis-in-python

[2]. https://www.statisticshowto.com/modelo-autoregresivo/

[3]. https://analyticsindiamag.com/what-are-autocorrelation-and-parcial-autocorrelation-in-time-series-data/

[4]. https://www.scribbr.com/statistics/akaike-information-criterion/

[5]. https://medium.com/@analyttica/what-is-bayesian-information-criterion-bic-b3396a894be6


El análisis de datos de series temporales en Python se publicó originalmente en Hacia la IA en Medium, donde las personas continúan la conversación destacando y respondiendo a esta historia.

Publicado a través de Hacia la IA