¿Es posible automatizar el pronóstico de series de tiempo?

17

Me gustaría construir un algoritmo que pudiera analizar cualquier serie de tiempo y elegir "automáticamente" el mejor método de pronóstico tradicional / estadístico (y sus parámetros) para los datos de series de tiempo analizados.

¿Sería posible hacer algo como esto? En caso afirmativo, ¿puede darme algunos consejos sobre cómo abordar esto?

StatsNewbie123
fuente
3
No, esto no se puede lograr razonablemente. Con frecuencia, no hay suficientes datos para distinguir entre dos modelos razonables, no importa todos los modelos posibles. Lograr un mejor modelo requeriría que la física se conozca en términos absolutos, y con mucha frecuencia los supuestos de modelado ni siquiera se conocen, y / o no se han probado / comprobado.
Carl
3
No. No hay forma de determinar qué modelo es el mejor. Python no es relevante en esta discusión. Sin embargo, hay intentos con buenos resultados. Por ejemplo github.com/facebook/prophet project. También tiene enlace de Python.
Cagdas Ozgenc
3
Voto para dejarlo abierto porque creo que es una pregunta razonable, incluso si la respuesta es "no". Sugeriría eliminar Python del título, porque no es relevante o especialmente sobre el tema aquí.
mkt - Restablecer Mónica
1
He eliminado Python del título como se sugiere. Gracias por sus respuestas.
StatsNewbie123
2
Ver el teorema "no hay almuerzo gratis".
AdamO

Respuestas:

19

Primero debe tener en cuenta que el enfoque descrito por IrishStat es específico para los modelos ARIMA, no para cualquier conjunto genérico de modelos.

Para responder a su pregunta principal "¿Es posible automatizar el pronóstico de series de tiempo?":

Sí lo es. En mi campo de pronóstico de demanda, la mayoría de los paquetes de pronósticos comerciales lo hacen. Varios paquetes de código abierto también lo hacen, en particular las funciones auto.arima () (pronóstico automático de ARIMA) y ETS () (pronóstico de suavizado exponencial automatizado) de Rob Hyndman del paquete de pronóstico de código abierto en R ver aquí para obtener detalles sobre estas dos funciones . También hay una implementación de Python de auto.arima llamada Pyramid , aunque en mi experiencia no es tan madura como los paquetes R.

Tanto los productos comerciales que mencioné como los paquetes de código abierto que mencioné funcionan basados ​​en la idea de usar criterios de información para elegir el mejor pronóstico: se ajusta a un grupo de modelos y luego se selecciona el modelo con el AIC, BIC, AICc más bajo, etc .... (normalmente esto se realiza en lugar de la validación fuera de la muestra).

Sin embargo, existe una advertencia importante: todos estos métodos funcionan dentro de una sola familia de modelos. Eligen el mejor modelo posible entre un conjunto de modelos ARIMA, o el mejor modelo posible entre un conjunto de modelos de suavizado exponencial.

Es mucho más difícil hacerlo si desea elegir entre diferentes familias de modelos, por ejemplo, si desea elegir el mejor modelo de ARIMA, el suavizado exponencial y el método Theta. En teoría, puede hacerlo de la misma manera que lo hace dentro de una sola familia de modelos, es decir, utilizando criterios de información. Sin embargo, en la práctica, debe calcular el AIC o BIC exactamente de la misma manera para todos los modelos considerados, y eso es un desafío importante. Podría ser mejor usar la validación cruzada de series temporales o la fuera de la muestra en lugar de los criterios de información, pero será mucho más intensivo en cuanto a cómputo (y tedioso para el código).

El paquete Prophet de Facebook también automatiza la generación de pronósticos basados ​​en modelos aditivos generales Consulte aquí para más detalles . Sin embargo, Prophet se ajusta a un solo modelo, aunque es un modelo muy flexible con muchos parámetros. La suposición implícita de Prophet es que un GAM es "el único modelo para gobernarlos a todos", lo que podría no estar justificado teóricamente, pero es muy pragmático y útil para escenarios del mundo real.

Otra advertencia que se aplica a todos los métodos mencionados anteriormente: presumiblemente desea hacer pronósticos de series de tiempo automatizados porque desea pronosticar múltiples series de tiempo, demasiadas para analizarlas manualmente. De lo contrario, podría hacer sus propios experimentos y encontrar el mejor modelo por su cuenta. Debe tener en cuenta que un enfoque de pronóstico automatizado nunca va a encontrar el mejor modelo para todas y cada una de las series de tiempo: dará un modelo razonablemente bueno en promedio en todas las series de tiempo, pero aún es posible que algunos de esas series de tiempo tendrán mejores modelos que los seleccionados por el método automatizado. Ver esta publicaciónpor un ejemplo de esto. En pocas palabras, si va a optar por pronósticos automáticos, tendrá que tolerar pronósticos "suficientemente buenos" en lugar de los mejores pronósticos posibles para cada serie de tiempo.

Skander H. - Restablece a Monica
fuente
Gracias por una respuesta tan perspicaz. Honestamente, mi idea inicial al hacer esta pregunta era poder elegir entre diferentes familias de modelos.
StatsNewbie123
¿Qué pasaría si el algoritmo se aplicara a un dominio más específico, como el pronóstico comercial (por ejemplo, para la planificación de la producción y la gestión del inventario)? ¿Crees que podría lograr mejores resultados?
StatsNewbie123
2
@JoanaClaudino sí, eso sería más fácil: esa es la esencia de lo que hacen los paquetes de pronóstico de demanda comercial. Pero es más fácil porque, por lo general, cuando se limita a un dominio comercial específico, puede limitarse a una familia específica de modelos (las series de tiempo que provienen del mismo dominio comercial tendrán características similares en términos de estacionalidad, densidad de datos, etc. .de aquí es seguro asumir que una familia será adecuada para todos ellos)
Skander H. - Restablece a Monica el
Está bien, lo entiendo ahora. Gracias una vez más por tan gran ayuda.
StatsNewbie123
10

Mi enfoque sugerido abarca modelos que son mucho más generales que ARIMA, ya que incluyen el potencial de dummies estacionales que pueden cambiar con el tiempo, múltiples niveles, múltiples tendencias, parámetros que pueden cambiar con el tiempo e incluso variaciones de error que pueden cambiar con el tiempo. Esta familia se llama más precisamente modelos ARMAX, pero para una transparencia completa excluye una variante (rara) que tiene estructura multiplicativa.

Solicitó consejos y creo que este podría ser un buen comienzo.

Sugeriría que escriba código para seguir / emular este diagrama de flujo / flujo de trabajo. El "mejor modelo" podría encontrarse evaluando el criterio que especifique ... podría ser el MSE / AIC de los datos ajustados o podría ser el MAPE / SMAPE de los datos retenidos o cualquier criterio de su elección.

Tenga en cuenta que el detalle de cada uno de estos pasos puede ser bastante simple si desconoce algunos de los requisitos / objetivos / limitaciones específicos del análisis de series de tiempo, PERO puede ser (¡debería ser!) Más complejo si tiene una comprensión más profunda / Aprendizaje / apreciación de las complejidades / oportunidades presentes en el análisis exhaustivo de series de tiempo.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Se me ha pedido que brinde más instrucciones sobre cómo se debe automatizar el modelado de series temporales (o el modelado en general) /stats//search?q=peeling+an+onion contiene algunos de mis consejos sobre "pelar cebollas" y tareas relacionadas.

AUTOBOX en realidad detalla y muestra los pasos intermedios, ya que forma un modelo útil y podría ser un maestro útil a este respecto. La idea científica es "agregar lo que parece ser necesario" y "eliminar lo que parece ser menos que útil". Este es el proceso iterativo sugerido por Box y Bacon en épocas anteriores.

Los modelos deben ser lo suficientemente complejos (lo suficientemente sofisticados) pero no demasiado complejos (sofisticados). Asumir que los métodos simples funcionan con problemas complejos no es consistente con el método científico que sigue a Roger Bacon y toneladas de seguidores de Bacon. Como Roger Bacon dijo una vez y a menudo he parafraseado: Hacer ciencia es buscar patrones repetidos. Detectar anomalías es identificar valores que no siguen patrones repetidos. Quien conozca los caminos de la Naturaleza notará más fácilmente sus desviaciones y, por otro lado, quien conozca sus desviaciones describirá con mayor precisión sus caminos. Uno aprende las reglas observando cuándo fallan las reglas actuales. En el contexto de Bacon identificando cuándo el "mejor modelo / teoría" actualmente identificado es inadecuado, uno puede iterar para "una mejor representación"

En mis palabras "Tukey propuso el Análisis de Datos Exploratorios (EDA) que sugería esquemas de refinamiento del modelo basados ​​en la deficiencia del modelo evidenciada sugerida por los datos". Este es el corazón de AUTOBOX y de la ciencia. EDA es para ver lo que los datos nos pueden decir más allá de la tarea de modelado formal o prueba de hipótesis.

La prueba de fuego de un programa de modelado automático es bastante simple. ¿Separa la señal y el ruido sin un ajuste excesivo? La evidencia empírica sugiere que esto puede y ha sido hecho. Las precisiones de pronóstico a menudo son engañosas porque el futuro no es responsable del pasado y, dependiendo del origen que elija, los resultados pueden variar.

IrishStat
fuente
Muchas gracias. ¡Tu respuesta es extremadamente útil!
StatsNewbie123
Gracias, IrishStat. Esto es perspicaz. ¿Alguna vez estamos justificados para mantener un parámetro en lugar de "eliminar parámetro", a pesar de que el parámetro no es estadísticamente significativo?
ColorStatistics
1
Si. si te da una "respuesta más agradable". Un coeficiente de pendiente que no sea diferente de 0.0 puede proporcionar un pronóstico más realista (si no estadísticamente significativo). De lo contrario, llevar coeficientes en exceso es ilógico y causa una mayor incertidumbre en el pronóstico de varianza. Algunos autores que no pueden lidiar con las pruebas de necesidad y suficiencia ciega / ingenuamente suponen que la identificación del modelo es un proceso de 1 paso, mientras que Box y Jenkins (¡y todos los demás!) Se preocupan por hacer que el modelo sea tan complejo como sea necesario pero no demasiado complejo ... leer Albert E., JW Tukey et al para más información sobre esto.
IrishStat
3
"Este enfoque de pronóstico automatizado sugerido va a encontrar el mejor modelo para todas y cada una de las series de tiempo al adaptar la forma del modelo, es decir, personalizarlo como un traje personalizado". Esa es una afirmación bastante sólida: si es precisa, significa que este enfoque ganaría las competiciones M3, M4 sin dudas. Lo tiene?
Skander H. - Restablece a Monica el
1
@ joana-claudino Estoy particularmente interesada en su proyecto ISEG ya que también estoy interesado en desarrollar una versión de Python de mis procedimientos sugeridos. Esto, por supuesto, estaría fuera del sitio de SE.
IrishStat