Nachfrage prognostizieren: Autokorrelation, Saisonalität und ehrliche Fehlerbänder
Eine Prognose ist eine Regression mit dem Kalender auf der rechten Seite, und der Kalender ist der einfache Teil. Der schwierige Teil ist der Fehler: In einer Zeitreihe folgt auf eine gute Woche eine gute Woche, die üblichen Standardfehler lügen, und eine Punktprognose ohne Band ist nur ein verkleidetes Ziel. In diesem Kapitel nehme ich drei Jahre Wochenbestellungen meines Geschenkkorbshops The Gift Bow, baue ein saisonales Dummy Modell mit AR(1) Fehlern, lasse es auf einem Holdout, den es nie gesehen hat, gegen Seasonal Naive, Holt Winters und ARIMA antreten und mache aus dem Gewinner eine Prognose für Q4 2026 mit einem 80 Prozent Prognoseintervall. Dann zeige ich, wie aus diesem Band eine Lagerbestellung und ein Dienstplan werden, und warum das Marketingziel von 7.000 Bestellungen und die Prognose von 6.190 sich nicht widersprechen, sondern zwei verschiedene Dinge mit einer benannten Lücke dazwischen sind. Die Zahlen sind illustrativ, die Methode ist die, die ich verwende. Das ist Teil 10 von 21 der Marketing Analytics Serie.
Der Freitag, an dem das Schleifenband ausging
In Woche 51 des Jahres 2024 ging The Gift Bow das breite Satinband aus, das um jeden Weihnachtskorb gebunden wird. Nicht die Körbe, das Band. Jemand hatte "ein bisschen mehr als letztes Jahr" bestellt, und das waren am Ende rund ein Fünftel weniger, als die Woche tatsächlich brachte. Zwei Packerinnen verbrachten einen Freitagabend auf der Fahrt zu einem Kurzwarenladen in Kingston. Die Körbe gingen pünktlich raus, die Marge dieser Woche überlebte Benzin, Überstunden und Expresskurier nicht.
Nichts an dieser Woche war unvorhersehbar. Der Shop hatte drei Jahre Wochenbestellungen, Weihnachten fällt jedes Jahr auf denselben Tag, und der Muttertagsbuckel war schon zweimal dagewesen. Was fehlte, waren nicht Daten. Es fehlte eine Prognose mit einem ehrlichen Fehlerband, und jemand, der bereit war, gegen das obere Ende dieses Bandes zu planen statt gegen die Mitte. Genau darum geht es in diesem Kapitel: Nachfrage über die Zeit vorhersagen, mit eingebauten Saisonen und einer Unsicherheit, die in Bestellungen ausgedrückt ist statt in Adjektiven.
Wo das in der Serie steht
Das ist Kapitel 10, und es schliesst Teil zwei der Serie ab, die Techniken mit abhängiger Variable (Kapitel 4 bis 10), in denen ein Ergebnis durch eine Reihe von Treibern erklärt wird. Das vorige Kapitel, Panel Regression und Umsatz auf vergleichbarer Fläche, folgte vielen Einheiten durch die Zeit. Dieses folgt einem einzelnen Shop durch die Zeit und nimmt die Zeitdimension ernst. Das nächste Kapitel, Simultane Gleichungen: wenn Marketing Umsatz treibt und Umsatz Marketing, eröffnet Teil drei, die Techniken für Wechselbeziehungen, in denen der Pfeil zwischen den Variablen in beide Richtungen zeigt.
Eine Prognose ist eine Regression mit dem Kalender auf der rechten Seite
Der Grossteil des Mythos um Prognosen löst sich auf, sobald du sie als Regression siehst, deren erklärende Variablen aus dem Kalender gebaut sind. Statt Preis und Werbebudget stehen rechts ein Trend (ein Zähler, der 1, 2, 3 und so weiter läuft, ein Schritt pro Woche), Indikatoren für Saisonen und Feiertage und, wenn du sie hast, Ereignisse wie eine Firmenkampagne oder ein Lieferengpass. Die abhängige Variable sind Bestellungen pro Woche. Alles aus den früheren Kapiteln über Koeffizienten, Standardfehler und Residuen gilt weiter.
Was sich ändert, ist der Fehlerterm. Im Querschnitt sagt dir der 300. Kunde nichts über den 301., die Residuen sind unabhängig. In einer Zeitreihe folgt auf eine gute Woche meist eine gute Woche. Lag der Shop in Woche 20 um 40 Bestellungen über dem Modell, liegt er in Woche 21 wahrscheinlich auch darüber, weil das, was den Überschuss verursacht hat (eine Presseerwähnung, der Lieferengpass eines Mitbewerbers, ein warmes Wochenende), sich nicht um Mitternacht am Sonntag abschaltet. Das ist Autokorrelation, und sie bricht die gewöhnliche Regression leise, sobald Zeit im Spiel ist.
Die einfachste Beschreibung dafür ist der autoregressive Prozess erster Ordnung, kurz AR(1):
Hier ist der Fehler des Modells in Woche , (rho) der Autokorrelationskoeffizient, eine Zahl zwischen minus 1 und 1, der Fehler der Vorwoche und ein frischer, unabhängiger Schock. Mit bist du wieder in der gewöhnlichen Regression. Mit , ungefähr das, was die Residuen von The Gift Bow zeigen, trägt sich rund ein Drittel jeder Überraschung in die Folgewoche hinüber.
Warum ist das wichtig? Die Methode der kleinsten Quadrate liefert auch bei autokorrelierten Fehlern unverzerrte Koeffizienten, aber sie lügt über deren Präzision. Bei positivem fallen die Standardfehler zu klein aus, die t Werte zu gross, und ein Trend, der in Wahrheit Rauschen ist, bekommt drei Sterne. Für die Prognose noch schlimmer: Ignoriert wird, was der Fehler der Vorwoche über die nächste Woche sagt, kostenlose Information, die weggeworfen wird.
Zwei schnelle Diagnosen. Die erste ist Durbin Watson:
Dabei sind die geschätzten Residuen, die Anzahl der Wochen und die geschätzte Autokorrelation. Ein Wert nahe 2 heisst keine Autokorrelation. Unter etwa 1.5 heisst positive Autokorrelation, der Normalfall bei Verkaufsdaten. Über 2.5 heisst negative Autokorrelation, was meist bedeutet, dass jemand die Reihe zu oft differenziert hat. Das Dummy Modell von The Gift Bow liefert 1.31, passend zu .
Die zweite ist die Autokorrelationsfunktion, die ACF: ein Balken pro Lag, der zeigt, wie stark die Residuen mit sich selbst eine, zwei, drei Wochen zurück korrelieren. Ein hoher Balken bei Lag 52 heisst, du hast eine Saison übersehen. Ein hoher Lag 1, dessen Nachfolger schnell abklingen, heisst, AR(1) Fehler reichen aus.
Saisonen als Dummy Variablen
Eine Dummy Variable ist eine Spalte aus Nullen mit Einsen in den Wochen, die zu einer Saison gehören. Mehrere davon in einer Regression ergeben das saisonale Dummy Modell:
In Worten: sind die Bestellungen in Woche . ist das Niveau einer Basiswoche am Anfang der Stichprobe. ist der Trend, die Veränderung der Wochenbestellungen von einer Woche zur nächsten. ist 1, wenn Woche zur Saison gehört, sonst 0, bei insgesamt Saisonen. (gamma) sagt, wie viele Bestellungen Saison einer Basiswoche hinzufügt oder wegnimmt. ist der Fehler, der dem AR(1) Prozess von oben folgen darf.
Die Versuchung ist gross, jeder der 52 Wochen einen eigenen Dummy zu geben. Bei 156 Wochen Geschichte sind das 52 Koeffizienten aus je drei Beobachtungen: Du reproduzierst die Vergangenheit perfekt und prognostizierst die Zukunft schlecht, weil jedes zufällige Wackeln zur "Saison" wird. Fasse Wochen lieber zu Saisonen zusammen, die dem Geschäft etwas bedeuten. Für einen Geschenkkorbshop: November, früher Dezember, die letzte Bestellwoche vor Weihnachten, die tote Zeit um Neujahr, Jänner und die zwei Muttertage (Mothering Sunday in Grossbritannien im März, Muttertag in Österreich im Mai). Alles andere ist Basis, und die Basis ist das, was der Achsenabschnitt misst. Bewegliche Feiertage bekommen einen Dummy, der mitwandert: die zwei Wochen vor dem Mothering Sunday, wo immer die in einem Jahr landen.
Noch eine Entscheidung: linearer oder logarithmischer Trend. Ein linearer Trend addiert jede Woche eine feste Zahl an Bestellungen. Ein logarithmischer Trend, bei dem du den Logarithmus der Bestellungen regressierst, addiert einen festen Prozentsatz, und die Dummies werden ebenfalls zu Prozenteffekten, was richtig ist, wenn Weihnachten die Bestellungen verdreifacht statt fixe 500 draufzulegen. Bei The Gift Bow wuchs der Weihnachtsgipfel von Jahr zu Jahr, aber weniger als proportional zur Basis, und das lineare Modell gewann auf dem Holdout. Das ist eine testbare Entscheidung, keine philosophische.
The Gift Bow: 156 Wochen, ein Modell
Die Daten sind wöchentliche abgeschlossene Bestellungen von der ersten Woche 2023 bis zur letzten Woche 2025, 156 Wochen am Stück. Die Zahlen sind illustrativ, die Form ist aber die eines echten Geschenkshops. Ich habe auf den ersten 130 Wochen geschätzt und die letzten 26, die zweite Hälfte 2025 inklusive der ganzen Weihnachtsphase, als Holdout zurückgehalten, den das Modell nie gesehen hat. Dann habe ich auf allen 156 Wochen neu geschätzt, um 2026 zu prognostizieren. Hier die Koeffiziententabelle des neu geschätzten Modells mit AR(1) Fehlern.
| Term | Koeffizient (Bestellungen pro Woche) | Standardfehler | Lesart |
|---|---|---|---|
| Achsenabschnitt (Basiswoche, Anfang 2023) | 212 | 9 | eine gewöhnliche Woche am Anfang der Stichprobe |
| Trend pro Woche | 0.62 | 0.09 | rund 32 zusätzliche Wochenbestellungen pro Jahr |
| November (Wochen 45 bis 48) | plus 148 | 21 | Schenkende fangen früh an, Firmenanfragen kommen |
| Früher Dezember (Wochen 49 und 50) | plus 391 | 29 | die Rampe |
| Letzte Bestellwoche (Woche 51) | plus 523 | 41 | der Gipfel, die Schleifenbandwoche |
| Weihnachten bis Neujahr (Wochen 52 und 1) | minus 96 | 29 | am Stefanitag bestellt niemand einen Korb |
| Jänner (Wochen 2 bis 5) | minus 61 | 21 | die Wochen der guten Vorsätze |
| Mothering Sunday UK (zwei Wochen davor) | plus 117 | 29 | zweiter Gipfel des Jahres |
| Muttertag Österreich (zwei Wochen davor) | plus 64 | 29 | kleiner, der österreichische Shop ist jünger |
| Laufende Firmenkampagne (Ereignis) | plus 88 | 26 | die Wochen, in denen ein Firmenmailing lief |
Anpassungsstatistik: R² von 0.91, Residualstandardfehler 36 Bestellungen pro Woche, Durbin Watson 1.31, geschätztes von 0.34. Die gezeigten Standardfehler berücksichtigen die AR(1) Fehler. Die naiven waren rund ein Viertel kleiner und liessen den Muttertagseffekt viel sicherer aussehen, als er ist.
Zeile für Zeile gelesen. Eine gewöhnliche Woche Anfang 2023 brachte 212 Bestellungen, und jede Woche seither hat 0.62 dazugelegt, also liegt eine gewöhnliche Woche Ende 2025 bei rund 309. Der November hebt eine Woche um 148 an, oben auf das, was der Trend erreicht hat. Der frühe Dezember legt 391 drauf, Woche 51 legt 523 drauf, also liegt eine Woche 51 Ende 2025 bei rund 309 plus 523, etwa 830 Bestellungen, fast dreimal eine gewöhnliche Woche. Dann bricht der Boden weg: Die zwei Wochen um Neujahr laufen 96 unter Basis, der Jänner 61 darunter. Der Mothering Sunday ist in jeder der zwei Wochen davor 117 zusätzliche Bestellungen wert; der Muttertag 64 mit einem Standardfehler von 29, die ehrliche Aussage lautet also "irgendwo zwischen 20 und 110, wahrscheinlich um die 60". Der Kampagnendummy sagt, ein laufendes Mailing ist rund 88 Bestellungen pro Woche wert, das ist die Zahl, die der Vertrieb hören wollte, und die Zahl, die ich ohne den Standardfehler daneben nicht geglaubt hätte.
Saisonale Dummy Koeffizienten aus dem Modell für The Gift Bow. Negative Balken sind Wochen, die unter einer gewöhnlichen Woche liegen.
Einfache Modelle, die schwer zu schlagen sind
Bevor du dich in eine Regression verliebst, lerne die Vergleichsmodelle kennen. Seasonal Naive sagt: Nächste Woche wird, was dieselbe Woche letztes Jahr war, Punkt. Gib einen Wachstumsfaktor dazu (Vorjahr mal 1.12, sagen wir) und du hast ein Modell, das viele Unternehmen gut beraten wären, morgen einzuführen. Es weiss nichts, kostet nichts und ist beschämend schwer zu schlagen.
Exponentielle Glättung in der Holt Winters Variante führt drei laufende Zahlen, ein Niveau, einen Trend und ein Saisonmuster, und schiebt jede davon in Richtung dessen, was gerade passiert ist, mit mehr Gewicht auf jüngeren Wochen. Die Glättung passt sich an, wenn sich das Geschäft ändert, was das Dummy Modell nicht tut, und braucht kein Kalenderwissen, was zugleich ihre Schwäche ist: Dass der Mothering Sunday gewandert ist, kann sie nicht wissen.
ARIMA ist, in einfachen Worten, aus drei Ideen zusammengeschraubt. AR: Regressiere die Reihe auf ihre eigene Vergangenheit. I: Differenziere sie (diese Woche minus letzte Woche), um den Trend zu entfernen. MA: Regressiere auf vergangene Fehler. Saisonales ARIMA wiederholt den Trick bei Lag 52. Mein Dummy Modell mit AR(1) Fehlern ist im Kern ein kleines, von Hand gebautes ARIMA mit Kalenderregressoren, weshalb die beiden auf der Rangliste unten so nah beieinander landen.
Meine Regel: Das Modell, das in Produktion geht, muss Seasonal Naive mit Wachstum auf einem Holdout schlagen, und zwar um einen Abstand, der eine Entscheidung ändern würde. Kann es das nicht, hat es sich seine Komplexität nicht verdient, und das steht dann so im Memo.
Eine Prognose an Wochen messen, die sie nie gesehen hat
Anpassungsstatistiken handeln von der Vergangenheit. Eine Prognose wird am Holdout gemessen, den Wochen, die du vor dem Modell versteckt hast, mit zwei Kennzahlen:
ist der tatsächliche Wert in Holdout Woche , die Prognose dafür, die Anzahl der Holdout Wochen. MAE, der mittlere absolute Fehler, ist in Bestellungen und die Zahl, die das Lager versteht. MAPE, der mittlere absolute prozentuale Fehler, ist über Produkte und Shops vergleichbar, bestraft aber kleine Wochen: 28 Bestellungen daneben in der toten Woche nach Weihnachten sind 12 Prozent Fehler, dieselben 28 in Woche 51 wären 3 Prozent. Ich plane also mit MAE, vergleiche mit MAPE und lasse einen MAPE nie in die Nähe einer Woche mit fast keinen Verkäufen.
Hier die Rangliste auf dem 26 Wochen Holdout. Die letzte Spalte ist die Prognose für das gesamte Q4 2025 minus dem, was tatsächlich passiert ist, in Prozent.
| Modell | MAE (Bestellungen pro Woche) | MAPE | Q4 2025 gesamt, Prognose minus Ist |
|---|---|---|---|
| Seasonal Naive (dieselbe Woche im Vorjahr) | 41 | 14.2% | minus 7.8% |
| Seasonal Naive mal 1.12 Wachstum | 33 | 11.0% | plus 1.9% |
| Saisonale Dummy Regression, einfache OLS | 29 | 9.6% | minus 3.6% |
| Saisonale Dummy Regression mit AR(1) Fehlern | 26 | 8.7% | minus 3.1% |
| Holt Winters exponentielle Glättung | 30 | 9.9% | plus 3.4% |
| Saisonales ARIMA, automatisch gewählt | 31 | 10.3% | minus 4.1% |
Gelesen: Einfaches Seasonal Naive unterschätzt um fast 8 Prozent, weil es nicht weiss, dass der Shop wächst. Gib ihm einen Wachstumsfaktor und es ist plötzlich respektabel, im Quartal innerhalb von 2 Prozent und nur 7 Bestellungen pro Woche hinter dem Gewinner. Das Dummy Modell mit AR(1) Fehlern gewinnt beim MAE mit 26 Bestellungen pro Woche, und die AR(1) Korrektur allein bringt 3 Bestellungen pro Woche gegenüber einfacher OLS, 10 Prozent weniger Fehler für null zusätzliche Daten. Alle ernsthaften Modelle landen beim Quartalstotal innerhalb von 4 Prozent; die Unterschiede liegen in den Wochen, und dort wird das Schleifenband bestellt.
Balken sind die tatsächlichen Wochenbestellungen im Holdout Quartal, die Linie ist das saisonale Dummy Modell mit AR(1) Fehlern, geschätzt ohne diese Wochen zu sehen.
Die Prognose ist eine Treppe, weil Dummies genau das erzeugen: flach innerhalb einer Saison, eine Stufe dazwischen. Die Istwerte wackeln darum herum. Über diese 13 Wochen lag der MAE bei 26 Bestellungen und der MAPE bei 6.2 Prozent, niedriger als über 26 Wochen, weil die schwachen Sommerwochen den Prozentsatz nach oben gezogen haben. Der grösste relative Fehler ist Woche 52, 208 prognostiziert gegen 236 tatsächlich, 12 Prozent daneben in einer Woche, die operativ egal ist. Der Fehler, der gezählt hätte, Woche 51, lag bei 828 gegen 845, 2 Prozent. Das ist die Woche, in der das Band bei "ein bisschen mehr als letztes Jahr" ausging.
Das Fehlerband ist die Prognose
Eine Punktprognose ohne Band ist ein Ziel im Tabellenkalkulationskostüm. Das Band ist das Prognoseintervall:
ist die Punktprognose Wochen nach der letzten beobachteten Woche . ist 1.28, das Quantil der Normalverteilung, das 10 Prozent in jedem Schwanz lässt, das Band deckt also 80 Prozent ab. ist der Prognosestandardfehler am Horizont und hat zwei Teile. Der erste ist die aufgelaufene AR(1) Fehlervarianz: ist die Varianz der frischen Schocks, und der Bruch wächst mit und pendelt sich bei ein, der langfristigen Varianz der Fehler. Der zweite ist die Unsicherheit über die Koeffizienten: ist die Zeile der Regressoren für die Prognosewoche (der Trendwert und welche Dummies aktiv sind) und die Kovarianzmatrix der geschätzten Koeffizienten. Woche 51 bekommt ein breites Band auch deshalb, weil ihr Dummy auf drei Wochen Geschichte ruht und einen Standardfehler von 41 hat.
Zwei Dinge, die gern verwechselt werden. Ein Konfidenzintervall sagt, wo die durchschnittliche Woche 51 landen würde, könntest du die Geschichte viele Male wiederholen. Ein Prognoseintervall sagt, wo die tatsächliche Woche 51 landen wird, und es ist immer breiter, weil eine einzelne Woche ihr eigenes Rauschen mitbringt. Planung braucht das Prognoseintervall. Und 80 Prozent, nicht 95: Ein 95 Prozent Band bei einem jungen Shop ist zu breit, um noch etwas zu sagen, während 80 Prozent heisst, dass eine Woche von fünf ausserhalb landet, eine Rate, die Menschen spüren und einplanen können.
Hier die Prognose für Q4 2026 aus dem auf allen 156 Wochen neu geschätzten Modell. Wochen innerhalb einer Saison unterscheiden sich nur durch den Trend, deshalb zeige ich jede Saison einmal.
| Woche 2026 | Punktprognose | 80% unten | 80% oben | Aktive Saison |
|---|---|---|---|---|
| 40 bis 44 (je Woche) | 335 | 280 | 390 | Basis |
| 45 bis 48 (je Woche) | 486 | 415 | 555 | November |
| 49 und 50 (je Woche) | 730 | 630 | 830 | früher Dezember |
| 51 | 863 | 740 | 990 | letzte Bestellwoche |
| 52 | 245 | 180 | 310 | Weihnachten bis Neujahr |
| Q4 gesamt | 6.190 | 5.500 | 6.900 |
Das Band auf dem Quartalstotal, 5.500 bis 6.900, ist relativ gesehen enger als die Wochenbänder: plus oder minus 11 Prozent gegen plus oder minus 15 Prozent in Woche 51. Wochenfehler heben sich über ein Quartal teilweise auf, wegen der Autokorrelation aber weniger als unabhängige Fehler, und genau deshalb zählt das in der Formel: Ignorierst du es, kommt das Band auf dem Total rund ein Drittel zu eng heraus.
Prognose, Ziel, Entscheidung
Der Marketingplan für The Gift Bow sagt 7.000 Bestellungen in Q4 2026. Die Prognose sagt 6.190, mit einem 80 Prozent Band, das 7.000 nicht erreicht. Die beiden Zahlen widersprechen sich nicht, sie sind verschiedene Dinge. Die Prognose ist, was passiert, wenn der Shop weitermacht wie bisher. Das Ziel ist, was die Inhaberin will. Die Lücke, rund 810 Bestellungen, ist das, was das Marketing über den Trend hinaus verdienen muss, und jetzt hat sie eine Grösse, also kann sie ein Budget und einen Testplan haben. Das Schlimmste, was du tun kannst, ist das Ziel leise zur Prognose werden zu lassen, denn dann plant das Lager für 7.000, die Buchhaltung bucht den Umsatz, und im Jänner entdeckt jemand, dass Hoffnung keine Saison ist.
Die Entscheidungen im Memo. Verpackung kostet rund 1,80 Pfund pro Korb an Lagerhaltung und hält jahrelang, also wird sie auf das obere Band bestellt: 990 Kartons und Bandlängen für Woche 51, 830 für jede der zwei Wochen davor. Verderbliches wird auf die Punktprognose bestellt, mit einem Nachbestellauslöser Ende Woche 49. Eine Packerin schafft rund 140 Körbe pro Woche, Woche 51 braucht also bei der Punktprognose etwas über sechs Packerinnen und beim oberen Band sieben. Sechs stehen im Dienstplan, die siebte ist eine Leiharbeitsschicht, die bis Woche 49 bestätigt wird, wenn die Novemberwochen über 500 hereinkommen. Das Band geht nicht mehr aus, und niemand fährt nach Kingston.
Selber durchführen
Daten, die du brauchst: eine Zeile pro Woche mit abgeschlossenen Bestellungen, idealerweise auch Umsatz, mindestens zwei volle Jahre zurück und lieber drei, denn eine einmal gesehene Saison ist eine Anekdote, eine zweimal gesehene eine Hypothese. Aus einem Solidus Shop ist das eine Abfrage:
select date_trunc('week', completed_at)::date as week_start,
count(*) as orders,
sum(total) as revenue
from spree_orders
where state = 'complete'
and completed_at >= '2023-01-02'
group by 1
order by 1;
Dann die Saisonen, ein Holdout, einfache OLS für den Durbin Watson Check und eine Neuschätzung mit AR(1) Fehlern:
import pandas as pd, statsmodels.api as sm
df = pd.read_csv("weekly_orders.csv", parse_dates=["week_start"])
df["t"] = range(1, len(df) + 1)
df["iso_week"] = df.week_start.dt.isocalendar().week.astype(int)
df["nov"] = df.iso_week.between(45, 48).astype(int)
df["early_dec"] = df.iso_week.between(49, 50).astype(int)
df["w51"] = (df.iso_week == 51).astype(int) # eine Spalte pro Saison, Basiswochen bleiben null
X = sm.add_constant(df[["t", "nov", "early_dec", "w51"]])
train, test = df.index < 130, df.index >= 130
ols = sm.OLS(df.orders[train], X[train]).fit()
print("Durbin Watson:", sm.stats.durbin_watson(ols.resid))
ar1 = sm.GLSAR(df.orders[train], X[train], rho=1).iterative_fit(maxiter=5)
pred = ar1.predict(X[test])
print("Holdout MAE:", (pred - df.orders[test]).abs().mean())
Für das Vergleichsmodell verschiebst du die Reihe um 52 Wochen und multiplizierst mit dem Vorjahreswachstum. Schlägt deine Regression das auf dem Holdout nicht, halte an und denk nach, bevor du irgendetwas hinzufügst.
Wie lange es dauert: ein Tag für saubere Wochendaten und ein erstes Modell, eine Woche für Saisonen, Holdout und Bänder, ein paar Tage mehr für eine Tabelle, die Lager und Marketingleitung beide akzeptieren. Länger, wenn die Geschichte Lieferengpässe enthält, denn eine ausverkaufte Woche zeigt, was du liefern konntest, nicht, was die Leute wollten.
Prüfungen, bevor du ihr traust. Zeichne die Residuen gegen die Zeit und suche nach Läufen über und unter null. Sieh dir die Residuen ACF bei Lag 1 und 52 an. Schlag Seasonal Naive mit Wachstum auf demselben Holdout. Prüfe, ob die angepassten Quartalstotale mit dem übereinstimmen, was die Buchhaltung gemeldet hat. Dann zeig das Band den Leuten, die danach handeln werden, und frag, was passieren müsste, damit die Istwerte es verlassen. Ihre Antworten sind die Ereignisdummies für nächstes Jahr.
Fallstricke
Ein Dummy für jede Woche. 52 Dummies auf drei Jahren Daten sind Auswendiglernen, kein Modellieren. Fasse Wochen zu Saisonen zusammen, die das Geschäft wiedererkennt, und lass die ACF sagen, ob du eine übersehen hast.
Feiertage, die wandern. Der Mothering Sunday springt zwischen Woche 10 und 13, Ostern wandert durch März und April, der Black Friday kippt zwischen Woche 47 und 48, und manche Jahre haben 53 Wochen. Ein fester Wochendummy für einen wandernden Feiertag verschmiert den Effekt über zwei Wochen und halbiert ihn. Baue den Dummy aus dem Kalender, nicht aus der Wochennummer.
Nach der Anpassung benoten. Ein R² von 0.91 auf den Trainingsdaten sagt, das Modell hat die Vergangenheit gelernt. Nur der Holdout sagt, ob es irgendetwas über die Zukunft weiss, und wenn du die Saisonen mit Blick auf den Holdout Fehler nachjustierst, hast du ihn zu Trainingsdaten gemacht und brauchst einen frischen.
Die naiven Standardfehler berichten. Bei positiver Autokorrelation lässt einfache OLS jeden Koeffizienten schärfer aussehen, als er ist. Der Muttertagseffekt hatte vor der Korrektur einen t Wert von 3.1 und danach 2.2. Das eine ist ein Befund, das andere ein Vielleicht, und der Kunde hat ein Recht darauf zu wissen, welches.
Das Ziel zur Prognose werden lassen. Der Plan sagt 7.000, also wird die Prognose eine Annahme nach der anderen nachgeschoben, bis sie auch 7.000 sagt. Dann hat niemand mehr eine Prognose. Halte beide in getrennten Spalten, benenne die Lücke und lass das Marketing sie verdienen.
So mache ich das für Kunden
Das Ergebnis ist eine Prognose, gegen die das Unternehmen planen kann, kein Modell. Es kommt als Tabelle von Wochen mit Punktprognose, 80 Prozent Band und der Saison, zu der jede Woche gehört, plus ein einseitiges Entscheidungsmemo, das sagt, was zu bestellen ist, wer in den Dienstplan gehört und was passieren müsste, damit die Istwerte das Band verlassen. Dahinter steht das Modell, in einem Repository, das dir gehört, mit der Holdout Rangliste, damit du siehst, was es geschlagen hat und um wie viel.
Wir beginnen mit einem kostenlosen Workshop, in dem wir gemeinsam deine Geschichte ansehen und die Saisonen, die Ereignisse und die Entscheidungen festlegen, die die Prognose tragen muss. Dann arbeite ich zwei Wochen daran, bevor du dich zu irgendetwas verpflichtest: Wochenbestellungen aus deinem Shop oder ERP ziehen, die Kalenderdummies bauen, die Vergleichsmodelle und den Holdout rechnen, das Memo schreiben. Ist die Geschichte zu kurz oder zu kaputt für eine ehrliche Prognose, steht stattdessen genau das im Memo, mit dem, was du sammeln sollst und wie lange.
Die Daten, die ich brauche, sind unglamourös: eine Zeile pro Woche mit abgeschlossenen Bestellungen und Umsatz über mindestens zwei Jahre, die Daten jeder Kampagne, jedes Lieferengpasses und jeder Preisänderung, an die du dich erinnerst, und die letzten Bestelltermine, die du jedes Weihnachten veröffentlicht hast. Bei Solidus Shops hole ich das direkt aus der Datenbank, das ist Teil meiner Arbeit in der Solidus Entwicklung. Die Modellierung und die ehrlichen Bänder sind die Data Science Seite, und die Konditionen stehen in klaren Worten auf der Preisseite: Nach dem Workshop und den zwei Wochen entscheidest du, alles, was ich gebaut habe, gehört dir, und die Zahlen kommen mit Fehlermargen oder gar nicht. Für den breiteren Werkzeugkasten deckt mein Leitfaden zu Geschäftsprognosen die Methodenfamilien ab, und der Beitrag zur KI gestützten Bedarfsprognose für E Commerce zeigt, was sich ändert, wenn du tausende Produkte hast statt einen Shop.
Fragen an alle, die dir eine Prognose in die Hand drücken
- Wie breit ist das 80 Prozent Band auf dieser Zahl, in Stück, und welche Woche ist die breiteste?
- Welche Wochen wurden zurückgehalten, als das Modell bewertet wurde, und wie hoch war der MAE darauf?
- Hat es "dieselbe Woche im Vorjahr plus Wachstum" geschlagen? Um wie viel?
- Wie hoch war die Durbin Watson Statistik, und was habt ihr dagegen getan?
- Wie werden wandernde Feiertage behandelt, und was passiert in einem Jahr mit 53 Wochen?
- Wo steht das Ziel getrennt von der Prognose, und wie gross ist die Lücke?
- Was müsste passieren, damit die Istwerte aus dem Band fallen, und wer achtet darauf?
Diese Serie ist inspiriert von Mike Grigsbys Marketing Analytics (Kogan Page). Erklärungen, Beispiele und Zahlen hier sind meine eigenen.