[Primero publiqué esta pregunta en Stack Overflow aquí, pero no recibí ninguna respuesta, así que pensé en intentarlo aquí. Disculpas si no se permite volver a publicar.]
He estado tratando de usar esta implementación del algoritmo Holt-Winters para pronosticar series temporales en Python, pero me he encontrado con un obstáculo ... básicamente, para algunas series de entradas (positivas), a veces pronostica números negativos, lo que claramente debería No será el caso. Incluso si las predicciones no son negativas, a veces son extremadamente inexactas: órdenes de magnitud más altas / bajas de lo que deberían ser. Darle al algoritmo más períodos de datos para trabajar no parece ayudar, y de hecho a menudo empeora el pronóstico.
Los datos que estoy usando tienen las siguientes características, que pueden ser problemas:
Muy frecuentemente muestreado (un punto de datos cada 15 minutos, en oposición a los datos mensuales como se usa en el ejemplo), pero por lo que he leído, el algoritmo Holt-Winters no debería tener un problema con eso. ¿Quizás eso indica un problema con la implementación?
Tiene múltiples periodicidades: hay picos diarios (es decir, cada 96 puntos de datos), así como un ciclo semanal de datos de fin de semana que es significativamente menor que los datos de los días de la semana, por ejemplo, los días de la semana pueden alcanzar un máximo de 4000 pero los fines de semana alcanzan un máximo de 1000, pero incluso cuando solo doy En los datos del día de la semana, me encuentro con el problema del número negativo.
¿Hay algo que me falta con la implementación o mi uso del algoritmo Holt-Winters en general? No soy un estadístico, así que estoy usando los valores 'predeterminados' de alfa, beta y gamma indicados en el enlace anterior. ¿Es probable que ese sea el problema? ¿Cuál es una mejor manera de calcular estos valores?
O ... ¿hay un algoritmo mejor para usar aquí que Holt-Winters? En última instancia, solo quiero crear pronósticos razonables a partir de datos históricos aquí. He intentado el suavizado exponencial simple y doble pero (por lo que yo entiendo) tampoco admite la periodicidad en los datos.
También he buscado usar el paquete de pronóstico R en su lugar a través de rpy2, ¿eso me daría mejores resultados? Me imagino que todavía tendría que calcular los parámetros, etc., por lo que sería una buena idea si mi problema actual radica en la implementación del algoritmo ...
Cualquier ayuda / aportación sería muy apreciada!
fuente
El problema podría ser que Holt-Winters es un formulario de modelo específico y puede no ser aplicable a sus datos. El modelo HW asume, entre otras cosas, lo siguiente. a) una y solo una tendencia b) sin cambios de nivel en los datos, es decir, sin cambios de intercepción 3) que los parámetros estacionales no varían con el tiempo 4) sin valores atípicos 5) sin estructura autorregresiva o estructura de modelo adaptativo 6) errores de modelo que tienen una variación constante Y, por supuesto, 7) que la historia causa el futuro, es decir, no hay incorporación de precios / promociones, eventos, etc. como variables de ayuda
Según su descripción, me parece que podría ser necesario un enfoque de frecuencia mixta. He visto problemas de series de tiempo en los que los efectos de la hora del día y los efectos del día de la semana tienen términos de interacción significativos. Está tratando de forzar sus datos en una estructura inadecuada, es decir, no lo suficientemente generalizada. La estimación de parámetros y la elección de un pequeño conjunto de modelos no reemplaza la identificación del modelo. Es posible que desee leer un artículo sobre los diferentes enfoques del modelado automático en www.autobox.com/pdfs/catchword.pdf. En términos de un enfoque más general, sugeriría que considere un modelo ARMAX, también conocido como Función de Transferencia, que relaja los supuestos antes mencionados.
fuente