[J'ai d'abord posté cette question sur Stack Overflow ici mais je n'ai reçu aucune réponse, alors j'ai pensé essayer ici. Toutes mes excuses si la rediffusion n'est pas autorisée.]
J'ai essayé d'utiliser cette implémentation de l'algorithme Holt-Winters pour la prévision de séries chronologiques en Python, mais j'ai rencontré un barrage routier ... en gros, pour certaines séries d'entrées (positives), il prévoit parfois des nombres négatifs, ce qui devrait clairement pas le cas. Même si les prévisions ne sont pas négatives, elles sont parfois extrêmement imprécises - des ordres de grandeur supérieurs / inférieurs à ce qu'ils devraient être. Donner à l'algorithme plus de périodes de données avec lesquelles travailler ne semble pas aider et, en fait, aggrave souvent les prévisions.
Les données que j'utilise ont les caractéristiques suivantes, ce qui pourrait être un problème:
Très fréquemment échantillonné (un point de données toutes les 15 minutes, par opposition aux données mensuelles comme l'exemple utilise) - mais d'après ce que j'ai lu, l'algorithme Holt-Winters ne devrait pas avoir de problème avec cela. Peut-être que cela indique un problème avec la mise en œuvre?
A plusieurs périodicités - il y a des pics quotidiens (c'est-à-dire tous les 96 points de données) ainsi qu'un cycle hebdomadaire de données de week-end étant nettement inférieur aux données de semaine - par exemple, les jours de semaine peuvent culminer autour de 4000 mais les week-ends culminent à 1000 - mais même lorsque je ne donne que les données de la semaine, je rencontre le problème des nombres négatifs.
Y a-t-il quelque chose qui me manque avec l'implémentation ou mon utilisation de l'algorithme Holt-Winters en général? Je ne suis pas un statisticien, j'utilise donc les valeurs «par défaut» d'alpha, bêta et gamma indiquées dans le lien ci-dessus - est-ce susceptible d'être le problème? Quelle est la meilleure façon de calculer ces valeurs?
Ou ... y a-t-il un meilleur algorithme à utiliser ici que Holt-Winters? En fin de compte, je veux juste créer des prévisions raisonnables à partir de données historiques ici. J'ai essayé le lissage exponentiel simple et double mais (pour autant que je sache), ni l'un ni l'autre ne prend en charge la périodicité des données.
J'ai également envisagé d'utiliser le package de prévisions R à la place via rpy2 - cela me donnerait-il de meilleurs résultats? J'imagine que je devrais encore calculer les paramètres et ainsi de suite, donc ce ne serait une bonne idée que si mon problème actuel réside dans la mise en œuvre de l'algorithme ...?
Toute aide / entrée serait grandement appréciée!