Ich arbeite an einem Alogorithmus in R, um eine monatliche Prognoseberechnung zu automatisieren. Ich benutze unter anderem die Funktion ets () aus dem Vorhersagepaket, um die Vorhersage zu berechnen. Es funktioniert sehr gut.
Leider ist das Ergebnis, das ich für einige bestimmte Zeitreihen erhalte, seltsam.
Bitte finden Sie unten den Code, den ich verwende:
train_ts<- ts(values, frequency=12)
fit2<-ets(train_ts, model="ZZZ", damped=TRUE, alpha=NULL, beta=NULL, gamma=NULL,
phi=NULL, additive.only=FALSE, lambda=TRUE,
lower=c(0.0001,0.0001,0.0001,0.8),upper=c(0.9999,0.9999,0.9999,0.98),
opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3,
bounds=c("both","usual","admissible"), ic=c("aicc","aic","bic"),
restrict=TRUE)
ets <- forecast(fit2,h=forecasthorizon,method ='ets')
Nachfolgend finden Sie den betroffenen Verlaufsdatensatz:
values <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21,
35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36,
29, 29, 24, 42, 15, 24, 21)
Hier in der Grafik sehen Sie die historischen Daten (schwarz), den angepassten Wert (grün) und die Prognose (blau). Die Prognose entspricht definitiv nicht dem angepassten Wert.
Haben Sie eine Idee, wie Sie den Forecat "binden" können, damit er mit den historischen Verkäufen "in Einklang" ist?
ets
. Der Mittelwert / Stand der historischen Daten liegt bei etwa 20 und der Mittelwert / Stand der Prognose bei etwa 50. Sie sind sich nicht sicher, warum dies passieren würde? Können Sie ein Basic ausführenets
und sehen, ob Sie die gleichen Ergebnisse erzielen ?Antworten:
Wie @forecaster hervorgehoben hat, wird dies durch Ausreißer am Ende der Serie verursacht. Sie können das Problem klar erkennen, wenn Sie die geschätzte Füllstandskomponente oben zeichnen:
Beachten Sie die Erhöhung des Pegels am Ende der Serie.
Eine Möglichkeit, das Modell für Ausreißer robuster zu machen, besteht darin, den Parameterraum zu verkleinern, sodass die Glättungsparameter kleinere Werte annehmen müssen:
quelle
Dies ist ein Lehrbuchfall, bei dem Ausreißer am Ende der Serie und deren unbeabsichtigte Folgen auftreten. Das Problem mit Ihren Daten besteht darin, dass die letzten beiden Punkte Ausreißer sind. Möglicherweise möchten Sie Ausreißer identifizieren und behandeln, bevor Sie die Prognosealgorithmen ausführen. Ich werde meine Antwort und Analyse im Laufe des Tages über einige Strategien zur Identifizierung von Ausreißern auf den neuesten Stand bringen. Unten ist das schnelle Update.
Wenn ich die letzten beiden Datenpunkte entfernt habe, erhalte ich eine vernünftige Prognose. Siehe unten:
quelle
@forecasterSie haben Recht, dass der letzte Wert ein Ausreißer ist, ABER Periood 38 (der vorletzte Wert) ist kein Ausreißer, wenn Sie Trends und saisonale Aktivitäten berücksichtigen. Dies ist ein definierender / lehrender Moment zum Testen / Bewerten alternativer robuster Ansätze. Wenn Sie Anomalien nicht identifizieren und nicht korrigieren, wird die Varianz erhöht, sodass andere Elemente nicht gefunden werden. Periode 32 ist auch ein Ausreißer. Die Perioden 3,32 und 1 sind ebenfalls Ausreißer. Es gibt einen statistisch signifikanten Trend in der Reihe für die ersten 17 Werte, der jedoch ab Periode 18 nachlässt. Es gibt also tatsächlich zwei Trends in den Daten. Die Lektion, die hier gelernt werden muss, ist, dass einfache Ansätze, die keinen Trend oder eine bestimmte Form eines Trends annehmen und / oder stillschweigend eine bestimmte Form des autoregressiven Prozesses annehmen, ernsthaft in Frage gestellt werden müssen. Zukünftig sollte eine gute Prognose die mögliche Fortsetzung der zum Endzeitpunkt festgestellten außergewöhnlichen Aktivität (Zeitraum 39) berücksichtigen. Es ist unmöglich, dies aus den Daten zu extrahieren.
Dies ist möglicherweise ein nützliches Modell:
Die endgültigen Modellstatistiken finden Sie hier. Das Diagramm "Ist / Fit und Vorhersage" ist interessant, da es die außergewöhnliche Aktivität hervorhebt.
quelle