[Ich stellte zunächst diese Frage zu Stack Overflow hier aber nicht bekam keine Antworten, so dass ich dachte , ich würde hier versuchen , über. Entschuldigung, wenn Reposting nicht erlaubt ist.]
Ich habe versucht, diese Implementierung des Holt-Winters-Algorithmus für die Vorhersage von Zeitreihen in Python zu verwenden, bin aber auf eine Straßensperre gestoßen ... Grundsätzlich werden für einige Reihen von (positiven) Eingaben manchmal negative Zahlen vorhergesagt, was eindeutig sein sollte nicht der Fall sein. Selbst wenn die Prognosen nicht negativ sind, sind sie manchmal sehr ungenau - Größenordnungen höher / niedriger als sie sein sollten. Es scheint nicht hilfreich zu sein, dem Algorithmus mehr Datenperioden zur Verfügung zu stellen, mit denen er arbeiten kann, und verschlechtert die Prognose häufig.
Die von mir verwendeten Daten weisen die folgenden Merkmale auf, die Probleme verursachen können:
Sehr häufig abgetastet (ein Datenpunkt alle 15 Minuten im Gegensatz zu monatlichen Daten, wie im Beispiel verwendet) - aber nach dem, was ich gelesen habe, sollte der Holt-Winters-Algorithmus damit kein Problem haben. Vielleicht deutet das auf ein Problem mit der Implementierung hin?
Hat mehrere Periodizitäten - es gibt tägliche Spitzen (dh alle 96 Datenpunkte) sowie einen wöchentlichen Zyklus von Wochenenddaten, der deutlich unter den Wochentagsdaten liegt - zum Beispiel können Wochentage Spitzenwerte um 4000, Wochenenden Spitzenwerte bei 1000 erreichen - aber selbst wenn ich nur gebe Bei Wochentagsdaten stoße ich auf das Problem der negativen Zahlen.
Fehlt mir etwas bei der Implementierung oder der Verwendung des Holt-Winters-Algorithmus im Allgemeinen? Ich bin kein Statistiker und verwende daher die im obigen Link angegebenen Standardwerte für Alpha, Beta und Gamma. Ist dies wahrscheinlich das Problem? Was ist ein besserer Weg, um diese Werte zu berechnen?
Oder ... gibt es hier einen besseren Algorithmus als Holt-Winters? Letztendlich möchte ich hier nur sinnvolle Prognosen aus historischen Daten erstellen. Ich habe versucht, einfach und doppelt exponentiell zu glätten, aber (soweit ich weiß) unterstützt keine Periodizität in Daten.
Ich habe auch versucht , das R- Prognosepaket stattdessen über rpy2 zu verwenden - würde das mir bessere Ergebnisse bringen? Ich stelle mir vor, ich müsste noch die Parameter berechnen und so weiter, also wäre es nur eine gute Idee, wenn mein aktuelles Problem in der Implementierung des Algorithmus liegt ...?
Jede Hilfe / Eingabe wäre sehr dankbar!
quelle
Das Problem könnte sein, dass Holt-Winters eine bestimmte Modellform ist und möglicherweise nicht auf Ihre Daten anwendbar ist. Das HW-Modell geht unter anderem von Folgendem aus. a) ein und nur ein Trend b) keine Pegelverschiebungen in den Daten, dh keine Intercept-Änderungen 3) dass sich die saisonalen Parameter nicht über die Zeit ändern 4) keine Ausreißer 5) keine autoregressive Struktur oder adaptive Modellstruktur 6) Modellfehler mit konstanter Varianz Und natürlich 7) dass die Geschichte die Zukunft verursacht, dh keine Einbeziehung von Preis / Werbeaktionen, Ereignissen usw. als helfende Variablen
Aus Ihrer Beschreibung geht hervor, dass ein Ansatz mit gemischten Frequenzen erforderlich sein könnte. Ich habe Zeitreihenprobleme gesehen, bei denen die Tagesstundeneffekte und die Wochentagseffekte signifikante Interaktionsterme aufweisen. Sie versuchen, Ihre Daten in eine unzureichende, dh nicht verallgemeinerte Struktur zu zwingen. Das Schätzen von Parametern und das Auswählen aus einem kleinen Satz von Modellen ersetzt nicht die Modellidentifikation. Vielleicht möchten Sie unter www.autobox.com/pdfs/catchword.pdf einen Artikel über die verschiedenen Ansätze zur automatischen Modellierung lesen. In Bezug auf einen allgemeineren Ansatz würde ich vorschlagen, dass Sie ein ARMAX-Modell in Betracht ziehen, das auch als Übertragungsfunktion bekannt ist und die oben genannten Annahmen lockert.
quelle