ETS () -Funktion, wie vermeide ich Prognosen, die nicht mit historischen Daten übereinstimmen?


16

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? Bildbeschreibung hier eingeben


Dies ist eine der seltsamsten Prognosen, die ich je verwendet habe 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ühren etsund sehen, ob Sie die gleichen Ergebnisse erzielen ?
Prognose

Vielen Dank für Ihre Zeit und Antwort! Ich stimme Ihnen der Tatsache zu, dass der letzte Punkt als "Ausreißer" angesehen werden kann (21 gegenüber 7 oder 6 oder 5 im Vorjahr). Er kann anhand des Konfidenzintervalls auf der Grundlage vergangener Daten als fehlerfrei erkannt werden und sollte vor der Berechnung einer fehlerfreien Zahl überprüft werden statistische Prognose. Aber wenn wir annehmen, dass es sich um einen "normalen" Verkauf handelt, gibt es eine Möglichkeit, dieses Verhalten zu vermeiden, indem Sie die Prognose einschränken, oder seien Sie zumindest gewarnt, dass die Prognose doppelt so groß ist wie der Verlauf? Die Begrenzung von Alpha, Beta und Gamma ist in diesem Fall nicht relevant. Nochmals vielen Dank für Ihre Hilfe in diesem Punkt!
MehdiK,

Ich habe für Ihre Antwort gestimmt, jetzt können Sie Kommentare hinterlassen. Bitte hinterlassen Sie den Kommentar in Zukunft direkt unter einer Antwort, damit die Personen, die geantwortet haben, dies bemerken. Vielen Dank
Prognostiker

ETS und alle univariaten Zeitreihenmodelle gehen davon aus, dass das vergangene Verhalten das zukünftige Verhalten vorhersagt. Wenn ungewöhnliche Datenpunkte vorliegen, müssen Sie dem Modell mitteilen, dass eine Anomalie vorliegt. Das Modell wird nicht wissen, dass der Wert normal ist, Sie müssen in dem Modell angeben, dass der Wert Ausreißer ist.
Prognose

Antworten:


10

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:

plot(forecast(fit2))
lines(fit2$states[,1],col='red')

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:

fit2 <- ets(train_ts, upper=c(0.3,0.2,0.2,0.98))  
plot(forecast(fit2))

Bildbeschreibung hier eingeben


Wie lautet die Prognose :: auto.arima für Ihren zweiten Vorschlag zur Behandlung von Ausreißern?
Dreistes Gleichgewicht

1
Mit ARIMA-Modellen können Sie Ausreißer mit Dummy-Variablen behandeln, die zu problematischen Zeiten auf 1 gesetzt sind. Verwenden Sie einfach das xreg-Argument in auto.arima oder Arima.
Rob Hyndman

6

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:

values.clean <- 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)## Last two points removed

train_ts.clean<- ts(values.clean, frequency=12)
fit2.clean<-ets(train_ts.clean)  
ets.f.clean <- forecast(fit2.clean,h=24)
plot(ets.f.clean)

Bildbeschreibung hier eingeben


5

@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:

Bildbeschreibung hier eingebenDie endgültigen Modellstatistiken finden Sie hier. Bildbeschreibung hier eingebenDas Diagramm "Ist / Fit und Vorhersage" ist interessant, da es die außergewöhnliche Aktivität hervorhebt.Bildbeschreibung hier eingeben


+1 Ihre Antworten sind immer lehrreich und aufschlussreich. Ich verstehe Puls und Zeit, sind feste Effekte ein rein deterministisches Modell?
Prognose

@forecaster Ja, feste Effekte / saisonale Impulse sind rein dterministisch ... genauso wie Impulse / Pegelverschiebungen und lokale Zeittrends. Außerdem war der Monat August (8) nicht von Bedeutung und befand sich nicht in der endgültigen Liste.
IrishStat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.