[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!