Entwicklung eines geeigneten Zeitreihenmodells zur Vorhersage des Umsatzes basierend auf dem Rekord des letzten Monats

12

Ich betreibe jetzt seit zwei Jahren in Folge ein Online-Geschäft, daher habe ich meine monatlichen Verkaufsdaten seit ungefähr zwei Jahren. Mein Geschäft für jeden Monat wird sicherlich von saisonalen Schwankungen (bessere Ergebnisse zu Weihnachten usw.) und wahrscheinlich einigen anderen Faktoren beeinflusst, die mir nicht bekannt sind.

Um zukünftige Verkäufe besser vorhersagen zu können und um die Effektivität meiner Verkaufskampagne oder die Auswirkungen neuer Wettbewerber zu messen, möchte ich in der Lage sein, ein geeignetes Zeitreihenmodell zu entwickeln, um meine aktuellen Verkaufsdaten in die Zukunft zu extrapolieren. Auf diese Weise kann ich beim Vergleich des Ergebnisses meiner Vorhersage mit dem tatsächlichen Ergebnis die Wirksamkeit meiner Verkaufskampagne oder die Auswirkungen der Wettbewerber quantitativ testen.

Meine Frage ist, ob ich angesichts der Verkaufsdaten von 2 Jahren überhaupt ein prädiktives Zeitreihenmodell dafür formulieren kann.

Hinweis: Ich interessiere mich mehr für die Hintergrundkonzepte und -theorien als für die Black-Box-Tools. Apropos Tools, ich habe Mathematica, Matlab, R, Excel, Google Spreadsheet ... Sie nennen es.

Graviton
quelle
Welche Software verwenden Sie?
Dimitriy V. Masterov
1
@ DimitriyV.Masterov, ich habe Matlab / R / Excel / Mathematica ... Sie nennen es. Eigentlich interessiere ich mich mehr für die Konzepte, als den eigentlichen Code selbst zu schreiben
Graviton

Antworten:

14

Ja, dafür gibt es Möglichkeiten. Die Leute verdienen ihren Lebensunterhalt mit solchen Sachen ;-)

Sie suchen nach kausalen Prognosen . In diesem kostenlosen Online-Lehrbuch zur Prognose erfahren Sie mehr über die Prognosemethode.

Sie haben zwei Hauptprobleme in den Händen, mit denen Sie sich befassen müssen: Saisonalität (oder allgemeiner Zeitreihenstruktur, möglicherweise mit Autoregression) einerseits und kausale Effekte wie Werbeaktionen andererseits. Kapitel 8 im obigen Lehrbuch befasst sich mit Zeitreihen im Kontext von ARIMA, während Kapitel 5 sich mit kausalen Effekten befasst.

Glücklicherweise ist es möglich, beide Probleme zu lösen, indem entweder sogenannte ARIMAX-Modelle (das X steht für "externe Effekte", dh ARIMA mit externen Effekten) oder Regressionen mit ARIMA-Fehlern berechnet werden. Siehe Rob Hyndmans Blog-Beitrag über "The ARIMAX model muddle" für den Unterschied. Die auto.arima()Funktion im forecastR-Paket passt eine Regression mit ARIMA-Fehlern an. Lassen Sie uns ein Beispiel durchgehen, in dem ich einen Standarddatensatz mit starkem Trend und Saisonalität nehme und "Werbeaktionen" hinzufüge.

library(forecast)
AirPassengers # a built-in dataset
#      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
# 1949 112 118 132 129 121 135 148 148 136 119 104 118
# 1950 115 126 141 135 125 149 170 170 158 133 114 140
# 1951 145 150 178 163 172 178 199 199 184 162 146 166
# 1952 171 180 193 181 183 218 230 242 209 191 172 194
# 1953 196 196 236 235 229 243 264 272 237 211 180 201
# 1954 204 188 235 227 234 264 302 293 259 229 203 229
# 1955 242 233 267 269 270 315 364 347 312 274 237 278
# 1956 284 277 317 313 318 374 413 405 355 306 271 306
# 1957 315 301 356 348 355 422 465 467 404 347 305 336
# 1958 340 318 362 348 363 435 491 505 404 359 310 337
# 1959 360 342 406 396 420 472 548 559 463 407 362 405
# 1960 417 391 419 461 472 535 622 606 508 461 390 432

set.seed(1) # for reproducibility
promos <- rep(0,length(AirPassengers))
promos[sample(seq_along(AirPassengers),10)] <- 1
promos.future <- c(0,1,0,0,1,0,0,1,0,0,1,0)
AP.with.promos <- AirPassengers
AP.with.promos[promos==1] <- AP.with.promos[promos==1]+120

model <- auto.arima(AP.with.promos,xreg=promos)
summary(model) # examine the model - you'll see the estimated promo coefficient
# Series: AP.with.promos 
# ARIMA(0,1,1)(0,1,0)[12]                    

# Coefficients:
#           ma1    promos
#       -0.3099  122.2599
# s.e.   0.0947    2.2999

# sigma^2 estimated as 151.2:  log likelihood=-457.4
# AIC=920.79   AICc=920.98   BIC=929.42

# Training set error measures:
#                     ME     RMSE     MAE        MPE     MAPE      MASE         ACF1
# Training set 0.2682805 11.12974 8.24397 0.06139784 2.867274 0.1860814 0.0008326436

fcast <- forecast(model,xreg=promos.future,h=length(promos.future))
fcast
#          Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
# Jan 1961       447.1516 431.3951 462.9081 423.0542 471.2490
# Feb 1961       543.4115 524.2670 562.5559 514.1326 572.6904
# Mar 1961       449.1516 427.1345 471.1687 415.4793 482.8239
# Apr 1961       491.1516 466.5956 515.7076 453.5964 528.7068
# May 1961       624.4115 597.5556 651.2674 583.3389 665.4841
# Jun 1961       565.1516 536.1777 594.1255 520.8399 609.4633
# Jul 1961       652.1516 621.2044 683.0988 604.8220 699.4812
# Aug 1961       758.4115 725.6095 791.2135 708.2452 808.5778
# Sep 1961       538.1516 503.5942 572.7090 485.3006 591.0026
# Oct 1961       491.1516 454.9237 527.3795 435.7459 546.5573
# Nov 1961       542.4115 504.5869 580.2361 484.5637 600.2593
# Dec 1961       462.1516 422.7950 501.5082 401.9608 522.3424
promos.ts <- ts(c(AP.with.promos,fcast$mean),
                  start=start(AirPassengers),frequency=frequency(AirPassengers))
promos.ts[c(promos,promos.future)==0] <- NA

plot(fcast)
points(promos.ts,pch=19,col="red")

ARIMAX

Die roten Punkte sind die Aktionen. Standardmäßig werden Vorhersageintervalle grau dargestellt. Sie können über den xregParameter mehrere Regressoren in Ihr Modell einspeisen. Dies sollten Sie tun, wenn Sie verschiedene Arten von Werbeaktionen mit unterschiedlichen Effekten haben. Experimentiere ein wenig.

Ich würde empfehlen, feinkörnigere Daten als monatlich zu betrachten, wenn Sie diese haben, z. B. wöchentlich. Vor allem natürlich, wenn Ihre Werbeaktionen nicht für ganze Monate laufen. Sie können dies separat nach Produkten tun, insbesondere wenn Sie bestimmte Produkte oder ganze Kategorien bewerben.

Eine Alternative wäre, da Sie mehr an Konzepten als an Code interessiert sind, Exponential Smoothing zu betrachten und es an Ihre Bedürfnisse anzupassen, indem Sie Werbekomponenten zu den drei Standardkomponenten für Ebene, Saison und Trend hinzufügen. Mit Exponential Smoothing können Sie viel mehr selbst tun als mit dem Versuch, ein ARIMAX-Modell mit maximaler Wahrscheinlichkeit zu schätzen. Wenn Sie jedoch mehrere Promotion-Typen haben, kann Smoothing zu einem Alptraum für die Buchhaltung werden.

Stephan Kolassa
quelle
1
ARIMA-Modelle mit Kovariaten werden in Abschnitt 9 des Buches besprochen: www.otexts.org/fpp/9/1
Rob Hyndman
Danke, Rob. Ich muss das Buch wirklich öfter
durchgehen
Danke @StephanKolassa! eine Nebenfrage: Kann ich das Buch, das Sie im obigen Beitrag erwähnt haben, im Mobi- oder Epub-Format erhalten?
Graviton
1
@ Graviton: gute Frage. Fragen Sie am besten den / die Autor (en). Einer von ihnen ist Rob Hyndman, der oben kommentiert hat.
Stephan Kolassa
1
@ Graviton. Arbeiten daran. Siehe robjhyndman.com/hyndsight/fpp-amazon
Rob Hyndman
4

Erstens haben Sie nicht viele Daten zum Spielen, nur 24 Beobachtungen. In Ihrem Fall bedeutet dies, dass Sie kaum ein paar Parameter haben, die Sie zuverlässig schätzen können. Die systematischste Art der Prognose besteht darin, einen Datengenerierungsprozess (DGP) zu entwickeln. Sie gehen davon aus, was der wahre Prozess für Ihre Verkäufe ist, und versuchen dann, die Parameter zu schätzen.

xt=ϕxt- -1+c

(1- -L.)(1- -L.12)xt=c in Lag-Operator-Notation oder in erweiterter Form: xt=c+ϕ1xt- -1+ϕ12xt- -12- -ϕ1ϕ12xr- -13. Dadurch wird ein weiterer zu schätzender Parameter hinzugefügt, sodass Sie auf 6 Beobachtungen pro Parameter zurückgreifen können - eine echte Strecke.

In Matlab wird dieses Modell als angegeben arima('ARLags',1,'SARLags',12)

Dies setzt voraus, dass Ihre Verkäufe stabil sind, dh im Allgemeinen nicht wachsen.

Wenn Sie glauben, dass Ihr Umsatz wächst, haben Sie zwei Möglichkeiten: Random Walk (RW) und einen Zeittrend.

in Matlab wird RW mit angegeben arima('D',1,'SARLags',12)

Offensichtlich sind dies nur Beispiele für verschiedene DGPs. Was auch immer Sie tun, beachten Sie die Anzahl der zu schätzenden Parameter. Mit 24 Beobachtungen muss Ihr Modell sehr einfach sein, höchstens 4 Parameter (einschließlich Varianzen).

Aksakal
quelle
0

Folgendes sollten Sie tun: Erstellen Sie zwei Diagramme:

  • Umsatz vs. Zeit für die gesamten 24 Monate
  • Umsatz vs. Zeit mit dem zweiten Jahr über dem ersten Jahr

Schau sie an. Notieren Sie die Daten von Sonderaktionen oder bekannten Wettbewerbsaktivitäten. "Dezember" ist normalerweise ziemlich offensichtlich, aber fügen Sie eine Notiz hinzu, wenn dies hilfreich ist.

Passen Sie ein Zeitreihenmodell an - jedes Modell (es gibt Hunderte). Das Modell gibt Ihnen möglicherweise eine etwas bessere Prognose für den nächsten Zeitraum (t + 1) als Ihr Urteil. Zumindest wird es Ihr Urteilsvermögen in Frage stellen. Über den nächsten Zeitraum hinaus (t + n, n> 1) ist jedes Zeitreihenmodell Mist. † Vergessen Sie also, die Wirksamkeit von Verkaufskampagnen oder die Auswirkungen von Wettbewerbern quantitativ zu bewerten. Wenn Sie die tatsächlichen Verkäufe mit Vorhersagen vergleichen, werden Sie feststellen, dass die Vorhersagen Mist sind. Die Zukunft vorherzusagen ist schwierig, und keine Methode ändert diese grundlegende Tatsache.

Sie finden Ihre beiden Grafiken nützlicher. Studieren Sie diese für eine Weile und verbringen Sie dann den Rest Ihrer Zeit damit, Ideen zur Steigerung des Umsatzes zu entwickeln. Dies ist eine weitaus rentablere Nutzung Ihrer Zeit als der Versuch, ein Zeitreihenmodell anzupassen.

† Sie haben mehr Hoffnung, wenn Sie ein Vorhersagemodell erstellen können, das auf Frühindikatoren basiert. Das heißt, der Verkauf von Wohnimmobilien für den Vormonat kann hilfreich sein, um den Verkauf von Fensterläden im aktuellen Monat vorherzusagen.

schwärzt
quelle