Una guía completa para el análisis de series de tiempo

Nodo de origen: 1878658

imagen de serie temporal

  • Una serie temporal representa una serie de órdenes basadas en el tiempo. Serían años, meses, semanas, días, horus, minutos y segundos.
  • Una serie de tiempo es una observación de la secuencia de tiempo discreto de intervalos sucesivos.
  • Una serie de tiempo es un gráfico continuo.
  • La variable / función de tiempo es la variable independiente y es compatible con la variable objetivo para predecir los resultados.
  • El análisis de series de tiempo (TSA) se utiliza en diferentes campos para predicciones basadas en el tiempo, como pronóstico del tiempo, finanzas, procesamiento de señales, dominio de ingeniería, sistemas de control, sistemas de comunicaciones.
  • Dado que TSA implica producir el conjunto de información en una secuencia particular, se diferencia de los análisis espaciales y de otro tipo.
  • Usando los modelos AR, MA, ARMA y ARIMA, podríamos predecir el futuro.

Introducción al análisis de series de tiempo

El Análisis de Series Temporales es la forma de estudiar las características de la variable respuesta con respecto al tiempo, como variable independiente. Para estimar la variable objetivo en nombre de la predicción o el pronóstico, utilice la variable de tiempo como punto de referencia. En este artículo discutiremos en detalle los objetivos, supuestos y componentes de la TSA (estacionarios y no estacionarios). Junto con el algoritmo TSA y casos de uso específicos en Python.

  1. ¿Qué es el análisis de series de tiempo (TSA) y su supuesto?

  2. ¿Cómo analizar)?
  3. Importancia del análisis de series de tiempo y sus tipos.
  4. Componentes de la serie temporal
  5. ¿Cuáles son las limitaciones de las series de tiempo?
  6. Estudio detallado de tipos de datos de series temporales.
  7. Discusión sobre componentes estacionarios y no estacionarios
  8. Conversión de no estacionario en estacionario
  9. ¿Por qué se utiliza el análisis de series de tiempo en la ciencia de datos y el aprendizaje automático?
  10. Análisis de series temporales en ciencia de datos y aprendizaje automático
  11. Implementación del modelo autorregresivo
  12. Implementación de la media móvil (PESOS - MEDIA MÓVIL SIMPLE)
  13. Entendiendo ARMA y ARIMA
  14. Pasos de implementación para ARIMA
  15. Análisis de series de tiempo - Flujo de proceso (Re-gap)

¿Qué es el análisis de series de tiempo?

Definición: Si ve, hay muchas más definiciones para TSA. Pero hazlo simple.

Una serie de tiempo no es más que una secuencia de varios puntos de datos que ocurrieron en un orden sucesivo durante un período de tiempo determinado.

Objetivos:

  • Para comprender cómo funcionan las series de tiempo, qué factores están afectando a una determinada variable en diferentes momentos.
  • El análisis de series de tiempo proporcionará las consecuencias y los conocimientos de las características del conjunto de datos dado que cambia con el tiempo.
  • Apoyo para derivar la predicción de los valores futuros de la variable de serie temporal.
  • Supuestos: Existe un y único supuesto que es “estacionario”, lo que significa que el origen del tiempo, no afecta las propiedades del proceso bajo el factor estadístico.

¿Cómo analizar series temporales?

Pasos rápidos aquí para su referencia, de todos modos. Veremos esto en detalle en este artículo más adelante.

  • Recopilar los datos y limpiarlos
  • Preparación de la visualización con respecto al tiempo frente a la característica clave
  • Observando la estacionariedad de la serie
  • Desarrollar gráficos para comprender su naturaleza.
  • Construcción de modelos - AR, MA, ARMA y ARIMA
  • Extraer información valiosa de la predicción

Importancia de las series temporales y sus tipos

TSA es la columna vertebral para el análisis de predicciones y pronósticos, específico para los enunciados de problemas basados ​​en el tiempo.

  • Analizar el conjunto de datos históricos y sus patrones
  • Comprender y relacionar la situación actual con los patrones derivados de la etapa anterior.
  • Comprender el factor o factores que influyen en determinadas variables en diferentes períodos.

Con la ayuda de "Series de tiempo" podemos preparar numerosos análisis y resultados basados ​​en el tiempo.

  • Previsiones
  • Segmentación
  • Clasificación
  • Análisis descriptivo`
  • Análisis de intervención

Componentes del análisis de series de tiempo

  • Tendencia
  • Estacionalidad
  • Cíclico
  • Irregularidad
  • Tendencia : En el que no hay un intervalo fijo y cualquier divergencia dentro del conjunto de datos dado es una línea de tiempo continua. La tendencia sería Negativa, Positiva o Nula.
  • Estacionalidad: En el que el intervalo regular o fijo cambia dentro del conjunto de datos en una línea de tiempo continua. Sería curva de campana o diente de sierra
  • Cíclico: En el que no hay intervalo fijo, incertidumbre en el movimiento y su patrón.
  • Irregularidad: Situaciones / eventos / escenarios inesperados y picos en un corto período de tiempo.
Componentes del análisis de series de tiempo

¿Cuáles son las limitaciones del análisis de series de tiempo?

Las series de tiempo tienen las limitaciones que se mencionan a continuación, tenemos que ocuparnos de ellas durante nuestro análisis,

  • Al igual que en otros modelos, la TSA no admite los valores faltantes.
  • Los puntos de datos deben ser lineales en su relación.
  • Las transformaciones de datos son obligatorias, por lo que son un poco caras.
  • Los modelos funcionan principalmente con datos univariados.

Tipos de datos de series temporales

Analicemos los tipos de datos de las series de tiempo y su influencia. Al discutir los tipos de datos de TS, hay dos tipos principales.

  • Estacionario
  • No estacionario

6.1 Estacionario: Un conjunto de datos debe seguir las siguientes reglas básicas, sin tener el componente Tendencia, Estacionalidad, Cíclico e Irregularidad de la serie temporal.

  • El valor MEDIO de ellos debe ser completamente constante en los datos durante el análisis.
  • La VARIANZA debe ser constante con respecto al marco de tiempo
  • La COVARIANZA mide la relación entre dos variables.

6.2 No estacionarioy: Esto es justo lo opuesto a estacionario.

Media, varianza y covarianza de series de tiempo

Métodos para comprobar la estacionariedad 

Durante el flujo de trabajo de preparación del modelo TSA, debemos acceder si el conjunto de datos dado es estacionario o NO. Utilizando Prueba estadística y de parcelas.

7.1 Prueba estadística: Hay dos pruebas disponibles para probar si el conjunto de datos es estacionario o NO.

  • Prueba de Dickey-Fuller aumentada (ADF)
  • Prueba de Kwiatkowski-Phillips-Schmidt-Shin (KPSS)

7.1.1 Dickey-Fuller aumentado (ADF) Prueba o prueba de raíz unitaria: la prueba ADF es la prueba estadística más popular y con los siguientes supuestos.

  • Hipótesis nula (H0): la serie no es estacionaria
  • Hipótesis alternativa (HA): la serie es estacionaria
    • valor p> 0.05 Fallo al rechazar (H0)
    • valor p <= 0.05 Aceptar (H1)

7.1.2 Kwiatkowski – Phillips – Schmidt – Shin (KPSS): estas pruebas se utilizan para probar una Hipótesis NULA (HO), que percibirá la serie de tiempo, como estacionaria alrededor de una tendencia determinista frente a la alternativa de una raíz unitaria. Dado que la TSA busca datos estacionarios para su análisis posterior, debemos asegurarnos de que el conjunto de datos sea estacionario.

Conversión de no estacionario en estacionario

Analicemos rápidamente cómo convertir No estacionario en estacionario para un modelado eficaz de series de tiempo. Hay dos métodos principales disponibles para esta conversión.

  • Detendencia
  • Diferenciando

8.1 Detendencia: Implica eliminar los efectos de la tendencia del conjunto de datos dado y mostrar solo las diferencias en los valores de la tendencia. siempre permite identificar los patrones cíclicos.

Variable de tendencia

8.2 Diferenciación: Esta es una transformación simple de la serie en una nueva serie de tiempo, que usamos para eliminar la dependencia de la serie en el tiempo y estabilizar la media de la serie de tiempo, por lo que la tendencia y la estacionalidad se reducen durante esta transformación.

Yt = Yt - Yt-1

Yt = Valor con el tiempo

Extracciones de eliminación de tendencia y diferenciación

Detendencia y diferenciación

8.3 Transformación: Esto incluye tres métodos diferentes: Transformación de potencia, Raíz cuadrada y Transferencia de registros. El más utilizado es la Transferencia de registros.

Metodología de media móvil

El método de series de tiempo comúnmente utilizado es la media móvil. Este método es hábil con variaciones aleatorias a corto plazo. Relativamente asociado con los componentes de series de tiempo.

La media móvil (MA) (o) media móvil: En el que MA ha calculado tomando datos promediados de la serie de tiempo, dentro de k períodos.

Veamos los tipos de medias móviles:

  • Media móvil simple (SMA),
  • Promedio móvil acumulativo (CMA)
  • Media Móvil Exponencial (EMA)

9.1 Media móvil simple (SMA)

La SMA es la media no ponderada de los M o N puntos anteriores. Se prefiere la selección de puntos de datos de ventana deslizante, dependiendo de la cantidad de suavizado, ya que al aumentar el valor de M o N, se mejora el suavizado a expensas de la precisión.

Promedio Simple de Movimiento

Para entenderlo mejor, utilizaré la temperatura del aire.

importar pandas como pd desde matplotlib importar pyplot como plt desde statsmodels.graphics.tsaplots importar plot_acf df_temperature = pd.read_csv ('temperature_TSA.csv', encoding = 'utf-8') df_temperature.head ()
Jefe de Dataframe
df_temperature.info ()
Información del marco de datos
# establecer el índice para la columna de año df_temperature.set_index ('Any', inplace = True) df_temperature.index.name = 'year' # Temperatura del aire promedio anual - cálculo df_temperature ['average_temperature'] = df_temperature.mean (axis = 1) # eliminar columnas no deseadas y restablecer el marco de datos df_temperature = df_temperature [['average_temperature']] df_temperature.head ()
Temperatura media
# SMA durante un período de 10 y 20 años df_temperature ['SMA_10'] = df_temperature.average_temperature.rolling (10, min_periods = 1) .mean () df_temperature ['SMA_20'] = df_temperature.average_temperature.rolling (20, min_periods = 1) .mean ()
# Grean = Promedio de temperatura del aire, ROJO = 10 años, colores NARANJOS para los colores del gráfico de líneas = ['verde', 'rojo', 'naranja'] # Gráfico de líneas df_temperature.plot (color = colors, linewidth = 3, figsize = (12,6)) plt.xticks (tamaño de fuente = 14) plt.yticks (tamaño de fuente = 14) plt.legend (etiquetas = ['Temperatura promedio del aire', '10 años SMA ', '20 años SMA'], fontsize = 14) plt.title ('La temperatura media anual del aire en la ciudad', fontsize = 20) plt.xlabel ('Year', fontsize = 16) plt.ylabel ('Temperature [° C]', fontsize = 16)

Temperatura promedio anual del aire

9.2 Promedio móvil acumulado (CMA)

El CMA es la media no ponderada de los valores pasados ​​hasta el momento actual.

Media móvil acumulada
# CMA Temperatura del aire df_temperature ['CMA'] = df_temperature.average_temperature.expanding (). Mean ()
# green -Avg Air Temp y Orange -CMA colors = ['green', 'orange'] # line plot df_temperature [['average_temperature', 'CMA']]. plot (color = colors, linewidth = 3, figsize = ( 12,6)) plt.xticks (tamaño de fuente = 14) plt.yticks (tamaño de fuente = 14) plt.legend (etiquetas = ['Temperatura promedio del aire', 'CMA'], tamaño de fuente = 14) plt.title ('El temperatura media del aire en la ciudad ', tamaño de fuente = 20) plt.xlabel (' Año ', tamaño de fuente = 16) plt.ylabel (' Temperatura [° C] ', tamaño de fuente = 16)

Temperatura del aire promedio anual

9.3 Promedio móvil exponencial (EMA)

EMA se utiliza principalmente para identificar tendencias y filtrar el ruido. El peso de los elementos se reduce gradualmente con el tiempo. Esto significa que da peso a los puntos de datos recientes, no a los históricos. En comparación con SMA, el EMA cambia más rápido y es más sensible.

α -> Factor de suavizado.

  • Tiene un valor entre 0,1.
  • Representa la ponderación aplicada al período muy reciente.

Aplicaremos las medias móviles exponenciales con un factor de suavizado de 0.1 y 0.3 en el conjunto de datos dado.

Después de aplicar el factor suavizante
# Temperatura del aire EMA # Vamos a suavizar el factor - 0.1 df_temperature ['EMA_0.1'] = df_temperature.average_temperature.ewm (alpha = 0.1, adjust = False) .mean () # Vamos a suavizar el factor - 0.3 df_temperature ['EMA_0.3' ] = df_temperature.average_temperature.ewm (alfa = 0.3, ajuste = Falso) .mean ()
# verde - Promedio de temperatura del aire, rojo - factor de suavizado - 0.1, amarillo - factor de suavizado - 0.3 colores = ['verde', 'rojo', 'amarillo'] df_temperature [['average_temperature', 'EMA_0.1', 'EMA_0.3 .3 ']]. Plot (color = colores, ancho de línea = 12,6, figsize = (0.8), alpha = 14) plt.xticks (tamaño de fuente = 14) plt.yticks (tamaño de fuente = 0.1) plt.legend (etiquetas = ['Temperatura promedio del aire', 'EMA - alpha = 0.3', 'EMA - alpha = 14'], fontsize = 20) plt.title ('La temperatura promedio anual del aire en la ciudad', fontsize = 16) plt.xlabel ( 'Año', tamaño de fuente = 16) plt.ylabel ('Temperatura [° C]', tamaño de fuente = XNUMX)
Temperatura promedio anual del aire en la ciudad

Análisis de series temporales en ciencia de datos y aprendizaje automático

Cuando se trata de TSA en ciencia de datos y aprendizaje automático, hay varias opciones de modelos disponibles. En el que los modelos de media móvil autorregresiva (ARMA) con [p, d y q].

  • P ==> retrasos autorregresivos
  • q == rezagos de media móvil
  • d ==> diferencia en el orden

Antes de que conozcamos a Arima, primero debe comprender mejor los términos a continuación.

  • Función de autocorrelación (ACF)
  • Función de autocorrelación parcial (PACF)

10.1 Función de autocorrelación (ACF): ACF se utiliza para indicar qué tan similar es un valor dentro de una serie de tiempo dada y el valor anterior. (O) Mide el grado de similitud entre una serie de tiempo dada y la versión rezagada de esa serie de tiempo en diferentes intervalos que observamos.

La biblioteca Python Statsmodels calcula la autocorrelación. Esto se utiliza para identificar un conjunto de tendencias en el conjunto de datos dado y la influencia de los valores observados anteriormente en los valores observados actualmente.

10.2 Autocorrelación parcial (PACF): PACF es similar a la función de autocorrelación y es un poco difícil de entender. Siempre muestra la correlación de la secuencia consigo misma con algún número de unidades de tiempo por orden de secuencia en el que solo se ha mostrado el efecto directo, y todos los demás efectos intermedios se eliminan de la serie de tiempo dada.

Autocorrelación y autocorrelación parcial

plot_acf (df_temperature) plt.show ()
plot_acf (df_temperature, retrasos = 30) plt.show ()
Correlación automática y correlación automática parcial

Observación: La temperatura anterior influye en la temperatura actual, pero la importancia de esa influencia disminuye y aumenta ligeramente desde la visualización anterior junto con la temperatura con intervalos de tiempo regulares.

10.3 Tipos de autocorrelación

Tipos de correlación automática

10.4 Interpretar gráficos ACF y PACF

ACF
PACF
Modelo perfecto de ML
La trama declina gradualmente Parcela cae instantáneamente Modelo auto regresivo.
Parcela cae instantáneamente La trama declina gradualmente Modelo de media móvil
Trazar el declive gradualmente Trazar el declive gradualmente ARMA
Caída de la trama al instante Caída de la trama al instante No realizarías ningún modelo

Recuerde que tanto ACF como PACF requieren series de tiempo estacionarias para el análisis.

Ahora, aprendemos sobre el Modelo auto-regresivo

Este es un modelo simple, que predice el desempeño futuro basado en el desempeño pasado. Se utiliza principalmente para la predicción, cuando existe alguna correlación entre los valores de una determinada serie de tiempo y los valores que preceden y tienen éxito (ida y vuelta).

Un modelo AR es un modelo de regresión lineal, que utiliza variables rezagadas como entrada. El modelo de regresión lineal se puede construir fácilmente usando la biblioteca scikit-learn indicando la entrada a usar. La biblioteca Statsmodels se utiliza para proporcionar funciones específicas del modelo de autorregresión en las que debe especificar un valor de retraso apropiado y entrenar el modelo. Se proporciona en la clase AutoTeg para obtener los resultados, siguiendo sencillos pasos

La ecuación para el modelo AR (Comparemos Y = mX + c)

Yt = C + b1 Yt-1+ B2 Yt-2+ …… + bp Ytp+ Eht

Parámetros clave

  • p = valores pasados
  • Yt= Función de diferentes valores pasados
  • Ert= errores en el tiempo
  • C = intersección

Comprobemos, dado que el conjunto de datos o la serie de tiempo es aleatorio o no

de matplotlib importar pyplot de pandas.plotting importar lag_plot lag_plot (df_temperature) pyplot.show ()
Diagrama de dispersión para comprobar la aleatoriedad de los datos.

Observación: Sí, parece aleatorio y disperso.

Implementación del modelo autorregresivo

# importar bibliotecas de matplotlib importar pyplot de statsmodels.tsa.ar_model importar AutoReg de sklearn.metrics importar mean_squared_error de matemáticas importar sqrt # cargar csv como conjunto de datos #series = read_csv ('daily-min-Temperature.csv', header = 0, index_col = 0, parse_dates = True, squeeze = True) # conjunto de datos dividido para prueba y entrenamiento X = df_temperature.values ​​train, test = X [1: len (X) -7], X [len (X) -7:] # train autoregresión model = AutoReg (train, lags = 20) model_fit = model.fit () print ('Coeficientes:% s'% model_fit.params) # Predicciones predictions = model_fit.predict (start = len (train), end = len (tren) + len (prueba) -1, dinámico = Falso) para i en el rango (len (predicciones)): print ('predicho =% f, esperado =% f'% (predicciones [i], prueba [i] )) rmse = sqrt (mean_squared_error (test, predictions)) print ('Test RMSE:% .3f'% rmse) # plot results pyplot.plot (test) pyplot.plot (predictions, color = 'red') pyplot.show ()

SALIDA

pronosticado = 15.893972, esperado = 16.275000 pronosticado = 15.917959, esperado = 16.600000 pronosticado = 15.812741, esperado = 16.475000 pronosticado = 15.787555, esperado = 16.375000 pronosticado = 16.023780, esperado = 16.283333 pronosticado = 15.940271, esperado = 16.525000 pronosticado = 15.831538 esperado Prueba = 16.758333 RMSE: 0.617
Valor esperado y predicho

Observación: Esperado (azul) contra pronosticado (rojo). El pronóstico parece bueno el día 4 y la desviación el día 6.

Implementación de la media móvil (PESOS - MEDIA MÓVIL SIMPLE)

import numpy as np alpha = 0.3 n = 10 w_sma = np.repeat (1 / n, n) colors = ['green', 'yellow'] # pesos - promedio móvil exponencial alfa = 0.3 ajuste = False w_ema = [(1 -ALPHA) ** i if i == N-1 else alpha * (1-alpha) ** i for i in range (n)] pd.DataFrame ({'w_sma': w_sma, 'w_ema': w_ema}) .plot (color = colores, kind = 'bar', figsize = (8,5)) plt.xticks ([]) plt.yticks (fontsize = 10) plt.legend (labels = ['Media móvil simple', ' Promedio móvil exponencial (α = 0.3) '], tamaño de fuente = 10) # título y etiquetas plt.title (' Promedio de pesos móviles ', tamaño de fuente = 10) plt.ylabel (' Pesos ', tamaño de fuente = 10)

Pesos medios móviles para el análisis de series de tiempo

Entendiendo ARMA y ARIMA 

ARMA Se trata de una combinación del modelo de media móvil y regresiva automática para la previsión. Este modelo proporciona un proceso estocástico débilmente estacionario en términos de dos polinomios, uno para el Auto-Regresivo y el segundo para el Promedio Móvil.

Ecuación del modelo Arima para el análisis de series de tiempo

ARMA es mejor para predecir series estacionarias. Entonces entró ARIMA ya que admite tanto estacionario como no estacionario.

Arima para análisis de series de tiempo

AR + I + MA = ARIMA

Comprender la firma de ARIMA

  • p ==> orden de registro => No de observaciones de rezago.
  • d ==> grado de diferenciación => No de veces que se diferencian las observaciones brutas.
  • q ==> orden de la media móvil => el tamaño de la ventana de la media móvil

Pasos de implementación para ARIMA

Paso 1: trazar un formato de serie temporal

Paso 2: Diferencia para hacer estacionario en la media eliminando la tendencia

Paso 3: hacer estacionario aplicando transformación de registro.

Paso 4: Transformación logarítmica de la diferencia para hacer estacionaria tanto en la media estadística como en la varianza

Paso 5: Grafique ACF y PACF e identifique el modelo potencial de AR y MA

Paso 6: Descubrimiento del modelo ARIMA que mejor se ajusta

Paso 7: pronosticar / predecir el valor, utilizando el modelo ARIMA que mejor se ajuste

Paso 8: Trace ACF y PACF para los residuos del modelo ARIMA y asegúrese de que no quede más información.

Implementación de ARIMA

Ya hemos discutido los pasos 1-5, centrémonos en el resto aquí.

from statsmodels.tsa.arima_model importar modelo ARIMA = ARIMA (df_temperature, order = (0, 1, 1)) results_ARIMA = model.fit ()
results_ARIMA.summary ()
Resultados del modelo Arima para el análisis de series de tiempo
results_ARIMA.forecast (3) [0]
Salida
matriz ([16.47648941, 16.48621826, 16.49594711])
results_ARIMA.plot_predict (inicio = 200) plt.show ()
Pronóstico y temperatura promedio real en el análisis de series de tiempo

(Re-brecha)

 

Proceso de análisis de series de tiempo
Aprendizaje profundo para el análisis de series de tiempo

Las redes neuronales recurrentes son las arquitectura más tradicional y aceptada, ajuste para problemas basados ​​en predicciones de series de tiempo.

RNN se organiza en capas sucesivas y se divide en

  • Entrada
  • Oculto
  • Salida

Cada capa tiene el mismo peso y cada neurona debe asignarse a pasos de tiempo fijos. Y recuerde que cada uno de ellos está completamente conectado con una capa oculta (Entrada y Salida) con los mismos pasos de tiempo y las capas ocultas se reenvían y dependen del tiempo en la dirección.

RNN para series temporales

Componentes de RNN

  • Entrada: El vector de función de x (t) es la entrada, en el paso de tiempo t.
  • Oculto:

    • El vector de función h (t) es el estado oculto en el tiempo t,
    • Es una especie de recuerdo de la red establecida;
    • Esto se ha calculado en función de la entrada actual x (t) y el estado oculto del paso del tiempo anterior h (t-1):
  • Salida: El vector de función y (t) es la salida, en el paso de tiempo t.
  • Pesos: Pesos: En los RNN, el vector de entrada conectado a las neuronas de la capa oculta en el tiempo t es por una matriz de peso de U (Consulte la imagen de arriba), 

Matriz de ponderación interna W está formado por las neuronas de la capa oculta del tiempo t-1 y t + 1. seguido de esto la capa oculta con al vector de salida y (t) del tiempo t por un V (matriz de peso); todas las matrices de peso U, W y V son constantes para cada paso de tiempo.

Ventajas  Desventajas 
Tiene la característica especial de que recordaría cada información, por lo que RNN es muy útil para la predicción de series de tiempo. El gran desafío es durante el período de entrenamiento.
Perfecto para crear patrones complejos a partir del conjunto de datos de series de tiempo de entrada. Costo de cálculo caro
Rápido en predicción / pronóstico
No se ve afectado por los valores perdidos, por lo que el proceso de limpieza puede ser limitado

Creo que esta guía los ayudaría a todos a comprender la serie temporal, el flujo y cómo funciona.


Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

Fuente: https://www.analyticsvidhya.com/blog/2021/10/a-comprehensive-guide-to-time-series-analysis/

Sello de tiempo:

Mas de Analítica Vidhya