Zeitreihenprognose mit täglichen Daten: ARIMA mit Regressor

15

Ich verwende eine tägliche Zeitreihe von Verkaufsdaten, die etwa 2 Jahre tägliche Datenpunkte enthält. Anhand einiger Online-Tutorials / Beispiele habe ich versucht, die Saisonalität in den Daten zu identifizieren. Es scheint eine wöchentliche, monatliche und wahrscheinlich jährliche Periodizität / Saisonalität zu geben.

Beispielsweise gibt es Zahltage, insbesondere am ersten Zahltag des Monatseffekts, der einige Tage in der Woche anhält. Es gibt auch einige spezifische Feiertagseffekte, die anhand der Beobachtungen klar erkennbar sind.

Ausgestattet mit einigen dieser Beobachtungen habe ich Folgendes versucht:

  1. ARIMA (mit Arimaund auto.arimavon R-Forecast-Paket) mit Regressor (und anderen Standardwerten, die in der Funktion benötigt werden). Der von mir erstellte Regressor ist im Grunde eine Matrix mit 0/1 Werten:

    • 11 Monate (n-1) Variablen
    • 12 Urlaubsvariablen
    • Konnte den Zahltag-Teil nicht herausfinden ... da es wenig komplizierter ist als ich dachte. Der Zahltag-Effekt funktioniert je nach Wochentag des 1. Monats unterschiedlich.

    Ich habe 7 (dh wöchentliche Häufigkeit) verwendet, um die Zeitreihen zu modellieren. Ich habe den Test 7 Tage hintereinander ausprobiert. Die Ergebnisse sind angemessen: Die durchschnittliche Genauigkeit für eine Prognose von 11 Wochen liegt bei einem wöchentlichen durchschnittlichen RMSE-Wert von 5%.

  2. TBATS-Modell (aus dem R-Forecast-Paket) - mit multipler Saisonalität (7, 30.4375, 365.25) und offensichtlich ohne Regressor. Die Genauigkeit ist überraschend besser als beim ARIMA-Modell bei wöchentlich durchschnittlich 3,5% RMSE.

    In diesem Fall schneidet das Modell ohne ARMA-Fehler etwas besser ab. Wenn ich nun die Koeffizienten nur für die Urlaubseffekte aus dem in Nr. 1 beschriebenen ARIMA-Modell auf die Ergebnisse des TBATS-Modells anwende, verbessert sich der wöchentliche durchschnittliche RMSE auf 2,95%.

Ohne viel Hintergrundwissen über die zugrunde liegenden Theorien dieser Modelle zu haben, bin ich in einem Dilemma, ob dieser TBATS-Ansatz überhaupt gültig ist. Obwohl es den RMSE im elfwöchigen Test erheblich verbessert, frage ich mich, ob es diese Genauigkeit in Zukunft aufrechterhalten kann. Oder auch wenn die Anwendung von Urlaubseffekten von ARIMA auf das TBATS-Ergebnis gerechtfertigt ist. Alle Gedanken von jedem / allen Mitwirkenden werden sehr geschätzt.

Link für Testdaten

Hinweis: Wählen Sie "Verknüpfung speichern unter", um die Datei herunterzuladen.

CKI
quelle
1
Willkommen auf der Site, @CKI. Wenn Sie Ihre Daten an einen beliebigen Ort im Internet hochladen können, können Sie hier einen Link posten.
gung - Wiedereinsetzung von Monica
Ich bin interessiert, mehr darüber zu erfahren, wie die Regressoren eingerichtet wurden.
Umlaufbahn
Die 6-Tage-Dummies, 11 Monats-Dummies und Feiertage sind einfache 0/1-Regressoren. Der festgelegte Tag des Monats, Vorlauf und Nachlauf um die Feiertage, Zeittrend, Saisonpuls und Puls basieren auf einer heuristischen Suche.
Tom Reilly
Also CKI, wie haben Sie es gelöst?
Tom Reilly
Hallo CKI, können Sie teilen einige Ihrer R - Skript verwendet , um die Saisonalität Matrix zu erstellen
Ahmed

Antworten:

9

Sie sollten Modelle und Vorhersagen unterschiedlicher Herkunft über verschiedene Horizonte hinweg und nicht eine einzige Zahl bewerten, um einen Ansatz zu beurteilen.

Ich gehe davon aus, dass Ihre Daten aus den USA stammen. Ich bevorzuge mehr als drei Jahre täglicher Daten, da zwei Feiertage an einem Wochenende landen und kein Wochentag gelesen werden kann. Es sieht so aus, als ob Ihr Thanksgiving-Effekt einen freien Tag im Jahr 2012 hat oder ein Aufnahmefehler aufgetreten ist und das Modell den Thanksgiving-Tag-Effekt verpasst hat.

Januar sind in der Regel in der Datenmenge niedrig, wenn Sie als% des Jahres betrachten. Wochenenden sind hoch. Die Dummies spiegeln dieses Verhalten wider. MONTH_EFF01, FIXED_EFF_N10507, FIXED_EFF_N10607

Ich habe festgestellt, dass die Verwendung einer AR-Komponente mit täglichen Daten davon ausgeht, dass das Muster für die letzten zwei Wochen des Wochentags im Allgemeinen dem Muster entspricht, was eine große Annahme ist. Wir begannen mit 11 monatlichen und 6 täglichen Dummies. Einige schieden aus dem Modell aus. B ** 1 bedeutet, dass am Tag nach einem Feiertag eine Verzögerung auftritt. Es gab 6 Sondertage des Monats (Tage 2,3,5,21,29,30 ---- 21 könnten falsch sein?) Und 3 Zeittrends, 2 saisonale Impulse (an denen ein Wochentag abweichend von dem begann) Normalerweise eine 0 vor diesen Daten und eine 1 alle 7 Tage danach) und 2 Ausreißer (beachten Sie das Erntedankfest!). Die Ausführung dauerte knapp 7 Minuten. Laden Sie alle Ergebnisse hier herunter: www.autobox.com/se/dd/daily.zip

Es enthält ein schnelles und schmutziges XLS-Blatt, mit dem überprüft werden kann, ob das Modell sinnvoll ist. Natürlich sind die XLS% in der Tat schlecht, da sie grobe Benchmarks sind.

Versuchen Sie, dieses Modell zu schätzen:

Y(T) =  .53169E+06                                                                                        
       +[X1(T)][(+  .13482E+06B** 1)]                                       M_HALLOWEEN
       +[X2(T)][(+  .17378E+06B**-3)]                                       M_JULY4TH
       +[X3(T)][(-  .11556E+06)]                                            M_MEMORIALDAY
       +[X4(T)][(-  .16706E+06B**-4+  .13960E+06B**-3-  .15636E+06B**-2                                                 
       -  .19886E+06B**-1)]                                                 M_NEWYEARS
       +[X5(T)][(+  .17023E+06B**-2-  .26854E+06B**-1-  .14257E+06B** 1)]   M_THANKSGIVI
       +[X6(T)][(-  71726.    )]                                            MONTH_EFF01
       +[X7(T)][(+  55617.    )]                                            MONTH_EFF02
       +[X8(T)][(+  27827.    )]                                            MONTH_EFF03
       +[X9(T)][(-  37945.    )]                                            MONTH_EFF09
       +[X10(T)[(-  23652.    )]                                            MONTH_EFF10
       +[X11(T)[(-  33488.    )]                                            MONTH_EFF11
       +[X12(T)[(+  39389.    )]                                            FIXED_EFF_N10107
       +[X13(T)[(+  63399.    )]                                            FIXED_EFF_N10207
       +[X14(T)[(+  .13727E+06)]                                            FIXED_EFF_N10307
       +[X15(T)[(+  .25144E+06)]                                            FIXED_EFF_N10407
       +[X16(T)[(+  .32004E+06)]                                            FIXED_EFF_N10507
       +[X17(T)[(+  .29156E+06)]                                            FIXED_EFF_N10607
       +[X18(T)[(+  74960.    )]                                            FIXED_DAY02
       +[X19(T)[(+  39299.    )]                                            FIXED_DAY03
       +[X20(T)[(+  27660.    )]                                            FIXED_DAY05
       +[X21(T)[(-  33451.    )]                                            FIXED_DAY21
       +[X22(T)[(+  43602.    )]                                            FIXED_DAY29
       +[X23(T)[(+  68016.    )]                                            FIXED_DAY30
       +[X24(T)[(+  226.98    )]                                            :TIME TREND        1                   1/  1   1/ 3/2011   I~T00001__010311stack
       +[X25(T)[(-  133.25    )]                                            :TIME TREND      423                  61/  3   2/29/2012   I~T00423__010311stack
       +[X26(T)[(+  164.56    )]                                            :TIME TREND      631                  91/  1   9/24/2012   I~T00631__010311stack
       +[X27(T)[(-  .42528E+06)]                                            :SEASONAL PULSE  733                 105/  5   1/ 4/2013   I~S00733__010311stack
       +[X28(T)[(-  .33108E+06)]                                            :SEASONAL PULSE  370                  53/  6   1/ 7/2012   I~S00370__010311stack
       +[X29(T)[(-  .82083E+06)]                                            :PULSE           326                  47/  4  11/24/2011   I~P00326__010311stack
       +[X30(T)[(+  .17502E+06)]                                            :PULSE           394                  57/  2   1/31/2012   I~P00394__010311stack
      +                    +   [A(T)]
Tom Reilly
quelle