Foto de Aron Visuals en UnsplashForecasting es un dominio amplio con muchos modelos disponibles para simular su serie temporal. En mis publicaciones anteriores, cubrimos algunos modelos de pronóstico básicos y exploramos la popular familia de modelos de suavizado exponencial. En esta publicación, comenzaremos nuestro viaje hacia otra familia de modelos de pronóstico que comienza con la autorregresión. Repasaremos la teoría y los antecedentes necesarios para pronosticar con este modelo y luego nos sumergiremos en un tutorial con Python.
La autorregresión es cuando pronostica una serie de tiempo utilizando alguna combinación ponderada lineal de los valores anteriores (retrasos) de esa serie de tiempo. Como estamos retrocediendo un valor objetivo contra sí mismo, se llama autorregresión. Matemáticamente, podemos escribir autorregresión como:Ecuación generada por el autor en LaTeX.Dónde y es la serie de tiempo que estamos pronosticando en varios pasos de tiempo, ϕ son los coeficientes ajustados de los rezagos para la serie de tiempo, ε es el término de error (típicamente Normalmente distribuido) y pag es el número de componentes rezagados incluidos en el modelo, esto también se conoce como el ordenar.Algunos modelos bien conocidos surgen de esta ecuación de autorregresión: si no tenemos coeficientes o todos son cero, entonces esto es solo ruido blancosi solo tenemos ϕ_1 = 1 y los otros coeficientes son cero, entonces este es un Caminata aleatoria.
Para construir un modelo autorregresivo, se recomienda tener un estacionario series de tiempo. La estacionariedad significa que la serie temporal no presenta ninguna tendencia a largo plazo ni estacionalidad obvia. La razón por la que necesitamos la estacionariedad es para garantizar que las propiedades estadísticas de la serie temporal sean consistentes a lo largo del tiempo, lo que facilita el modelado (se explica con más detalle más adelante). La estacionariedad se puede lograr estabilizando la tendencia a través de diferenciando y estabilizando la varianza a través de un Logaritmo o transformada de Box-Cox. Si desea obtener más información sobre la estacionariedad y estas transformaciones, consulte mis artículos anteriores sobre estos temas a continuación: También puede hacer una prueba estadística de estacionariedad. El más popular es el Dickey-Fuller aumentado (Alimentador automático de documentos) prueba, donde la hipótesis nula es que los datos son no estacionario.
La necesidad de estacionariedad se vuelve más clara cuando estamos entrenando el modelo. Los datos estacionarios tienen propiedades estadísticas constantes, como la media y la varianza. Por lo tanto, todos los puntos de datos pertenecen a la misma distribución de probabilidad estadística en la que podemos basar nuestro modelo. Además, los pronósticos se tratan como variables aleatorias y pertenecerán a la misma distribución que los datos de entrenamiento (lags). básicamente garantiza que los datos del futuro serán algo parecidos al pasado.
Consulte este hilo de intercambio de estadísticas por múltiples y exhaustivas razones para el requisito de estacionariedad para el modelado autorregresivo.
Como los datos estacionarios pertenecen a alguna distribución (típicamente la distribución normal), a menudo estimamos los coeficientes y parámetros del modelo autorregresivo usando Estimación de máxima verosimilitud (MLE). MLE deduce los valores óptimos de los parámetros y coeficientes que producen la mayor probabilidad de obtener nuestros datos de series temporales. El MLE para datos normalmente distribuidos, es el mismo resultado que llevar mínimos cuadrados ordinarios. Por lo tanto, los mínimos cuadrados también se usan con frecuencia.
Enlace aquí para una gran y completa explicación de MLE.
También existen otros métodos para seleccionar los mejores parámetros y coeficientes, como Criterio de información de Akaike (AIC), Criterio de información bayesiano y Criterio de información de Hannan-Quinn (HQIC).
Antes de ajustar y estimar el modelo, necesitamos saber cuántos rezagos (el orden), pag, para incluir. Una forma de hacerlo es trazando el función de autocorrelación parcial (PACF) de la serie temporal. Esto mide cuánto cierto retraso directamente correlacionar entre sí. Por lo tanto, podemos deducir qué retrasos son más Estadísticamente significante y eliminar los que no lo son al construir nuestro modelo. Veremos cómo llevar a cabo este proceso en el tutorial de Python más adelante en el artículo. Si desea obtener más información sobre el PACF, consulte mi artículo anterior aquí: Sin embargo, otra técnica más completa es simplemente iterar sobre todos los posibles combinaciones de componentes de rezago y elegir el modelo con la mejor puntuación en el AIC. Esto es análogo al ajuste regular de hiperparámetros y definitivamente el método más robusto, pero está sujeto a restricciones computacionales, por supuesto. ¡Ahora repasaremos un tutorial de modelado autorregresivo simple en Python utilizando el conjunto de datos de pasajeros de aerolíneas de EE. UU.!
Datos de Kaggle con licencia CC0.
Primero tracemos nuestra serie temporal: GitHub Gist por autor.Gráfico generado por el autor en Python. La serie temporal tiene una tendencia clara y una estacionalidad anual evidente. Por lo tanto, debemos hacerlo estacionario realizando la diferenciación y aplicando la transformación de Box-Cox: GitHub Gist por autor.Gráfica generada por el autor en Python. La serie temporal ahora parece estacionaria, sin embargo, podemos confirmarla de una manera más cuantitativa usando la prueba ADF que describimos anteriormente: GitHub Gist por el autor.Imagen generada por el autor en Python. El valor P está debajo 5%, por lo que hay razón para rechazar la hipótesis nula y podemos decir que la serie de tiempo es estacionaria satisfactoria. Para hacerlo aún más estacionario, podríamos haber llevado a cabo una diferenciación de segundo orden y una diferenciación estacional.
Comenzamos la fase de modelado trazando el PACF para ver qué retrasos son estadísticamente significativos: GitHub Gist por autor.Gráfica generada por el autor en Python. Los retrasos fuera de la región sombreada en azul se clasifican como significativamente significativos y deben incluirse como las características de nuestro modelo autorregresivo. De la gráfica anterior, parece que los retrasos 1, 2, 4, 7, 8, 9, 10, 11, 12 y 13 son significativos. Observe cómo el retraso 12 tiene el pico más grande. Esto se debe a que nuestra serie de tiempo está indexada por mes y tiene una estacionalidad anual, por lo que el desfase 12 es una diferencia de año exacta. Sin embargo, para construir nuestro modelo utilizaremos el enfoque recomendado de simplemente iterar sobre todas las posibles combinaciones de desfases y elegir la mejor modelo de ese análisis. Como nuestro conjunto de datos es bastante pequeño, esto es computacionalmente factible. En este caso, hemos configurado nuestro modelo para probar combinaciones hasta un retraso de 15. Luego, el modelo se ajusta con los resultados de ar_select_order usando la clase AutoReg de statsmodels.
Los pronósticos producidos a partir de este modelo ajustado son para las series de tiempo diferenciadas y transformadas de Box-Cox que producimos anteriormente. Por lo tanto, tenemos que desdiferenciar y aplicar la transformación inversa de Box-Cox a las predicciones para adquirir los volúmenes pronosticados reales de pasajeros de la aerolínea: GitHub Gist por autor.Gráfico generado por el autor en Python.
¡Las previsiones pintan genial!
Los pronósticos de nuestro modelo autorregresivo han capturado adecuadamente la tendencia y la estacionalidad en la serie de tiempo. Sin embargo, la estacionalidad se capturó como resultado de que el modelo tiene un orden (retrasos) de 13. Esto significa que incluye todos los retrasos del año pasado (uno para cada mes) para pronosticar, lo que permite detectar fácilmente la estacionalidad. debido a lo regular que es. En esta publicación, nos hemos sumergido en el modelo de pronóstico común de autorregresión. Esto es como una regresión lineal, pero las características son solo valores previos del objetivo en varios pasos de tiempo. Para usar la autorregresión, sus datos deben ser estacionarios, lo que significa que deben tener una media y una varianza constantes. Pronosticar con autorregresión es muy fácil y se puede hacer a través del paquete Python de statsmodels. El código completo utilizado en este artículo se puede encontrar en mi GitHub aquí:
(Todos los emojis diseñados por OpenMoji, el proyecto de íconos y emojis de código abierto. Licencia: CC BY-SA 4.0)
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…
David Imel / TecNoticias A medida que el hardware y el software de la cámara…