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?
time-series
forecasting
python
StatsNewbie123
fuente
fuente
Respuestas:
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.
fuente
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.
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.
fuente