Forecasting im Unternehmen: wie du vorhersagst, was du wirklich brauchst
Kurz gesagt
Niveau: Fortgeschritten
Forecasting heißt, die Methode zum Produkt passend zu wählen und dann ehrlich mit dem Fehler umzugehen.
- Zwei Familien: Zahlen (Zeitreihen, Regression, Machine Learning), wenn du eine stabile Historie hast, strukturiertes Urteil (Delphi, Szenarien), wenn nicht.
- Einfach anfangen: Jedes Modell muss die naive und die saisonal naive Prognose auf Daten schlagen, die es nicht gesehen hat.
- Saisonalität zuerst: Ein gleitender Durchschnitt auf saisonalen Daten kommt immer zu spät. Nimm saisonal naiv, Holt Winters, SARIMA oder Prophet.
- Gib eine Spanne an: Eine Prognose ohne Prognoseintervall nützt wenig.
- Prüf sie: MAE, RMSE, MAPE und den Bias mit seinem Vorzeichen.
Forecasting klingt einfach, bis du es ordentlich machen willst. Ich gehe durch die beiden Familien von Methoden, vom naiven Vergleichsmaßstab bis zu SARIMA, Prophet, Regression und der Delphi Methode, zeige an einem erfundenen Kölner Kaufhaus, welche zu welchem Produkt passt, und mache aus jeder Prognose eine Spanne, die du prüfen kannst, samt dem Python Code dafür.
Zwei Familien von Prognosen: Zahlen und Urteil
Jedes Prognoseverfahren gehört zu einer von zwei Familien.
Quantitative Prognosen nutzen historische Zahlen und ein mathematisches Modell, um künftige Werte vorherzusagen. Sie beruhen auf Daten, lassen sich wiederholen und funktionieren gut, wenn du eine verlässliche Historie hast und die Zukunft sich vermutlich halbwegs wie die Vergangenheit verhält.
Qualitative Prognosen, auch urteilsbasierte Prognosen genannt, stützen sich auf Expertenmeinungen, Marktforschung und menschliches Urteil. Sie sind von Natur aus subjektiv, aber oft die einzige Möglichkeit, wenn es gar keine Historie gibt: ein neues Produkt, ein neuer Wettbewerber, ein Markt, der noch nie so aussah wie jetzt.1
Keine der beiden ist besser. Der Kniff ist zu wissen, wann du welche nimmst, und sie oft zu kombinieren. Wo es Daten gibt, lautet der übliche Rat, mit einer statistischen Prognose zu beginnen und das Urteil sie anpassen zu lassen, nicht umgekehrt.1
Die Rechenbeispiele in diesem Leitfaden sind erfunden, ebenso die Unternehmen und jede Zahl darin. Die Methoden und ihre Formeln folgen Hyndman und Athanasopoulos, Forecasting: Principles and Practice, einem Lehrbuch, das online kostenlos zu lesen ist und das ich jedem in die Hand drücken würde, der gerade anfängt.2
Die vier Muster in einer Zeitreihe
Eine Zeitreihe ist einfach eine Zahl, die in regelmäßigen Abständen erfasst wird: Umsatz pro Monat, Besucher pro Tag, Bestellungen pro Woche. Die meisten quantitativen Verfahren weiter unten arbeiten mit Zeitreihen, und alle gehen von derselben Idee aus: Die Reihe besteht aus ein paar Mustern, die übereinander liegen.3
Der Trend ist die langfristige Richtung. Steigt der Umsatz über die Jahre im Großen und Ganzen, fällt er, oder bleibt er flach? Ein Trend muss keine gerade Linie sein, und er kann die Richtung wechseln.
Die Saisonalität ist ein Muster, das am Kalender hängt, mit einer festen und bekannten Periode: Weihnachten in jedem Dezember, eine Delle im Sommer, volle Wochenenden, der Andrang zur Mittagszeit.
Zyklen sind Anstiege und Rückgänge ohne feste Periode, meist von der Konjunktur getrieben und typischerweise zwei Jahre oder länger. Sie sehen aus wie Saisonalität, halten aber keinen Takt.
Das Rauschen ist der Rest: die unvorhersehbare Schwankung, die kein Modell erfassen kann.
Die Grundannahme lautet, dass sich frühere Muster fortsetzen. Wenn der Absatz von Regenschirmen jeden November steigt, steigt er wahrscheinlich auch im nächsten November.
Fang mit den einfachen Vergleichsmaßstäben an
Bevor es clever wird, sollte jede Prognose mit den einfachsten möglichen Prognosen verglichen werden. Schlägt ein ausgefeiltes Modell sie nicht, hat es seinen Platz nicht verdient. Hyndman und Athanasopoulos nennen vier.4 Die beiden, die für einen Laden am meisten zählen, sind die naive Methode und die saisonal naive Methode.
Die naive Methode sagt, dass jeder künftige Wert gleich dem letzten beobachteten ist:
Dabei ist die Prognose für Perioden im Voraus, erstellt mit Daten bis Periode , ist die letzte Periode, für die du Daten hast, die Zahl der Perioden, die du vorausschaust, und der letzte beobachtete Wert. Sie ist der Maßstab hinter jedem Vergleich in Grundlagen: Saisonalität.
Die saisonal naive Methode sagt, dass jeder künftige Wert gleich dem letzten Wert aus derselben Saison ist:
Dabei ist die Länge der Saison (12 bei Monatsdaten mit einem Jahresmuster), der ganzzahlige Teil von , der die vollen Jahre zwischen jetzt und dem Prognosezeitpunkt zählt, und die Beobachtung genau eine Saison vor der Periode, die du prognostizierst. Was eine Saison und ein Saisonindex sind, steht in Grundlagen: Saisonalität.
Rechenbeispiel: naiv und saisonal naiv für Sonnenbrillen
Ein erfundenes Kaufhaus in Köln, das ich Kaufhaus Wendel nenne, verkauft Designersonnenbrillen. Der monatliche Umsatz mit Sonnenbrillen in Tausend Euro lag bei:
| Monat | 2024 | 2025 |
|---|---|---|
| Jan | 12 | 13 |
| Feb | 14 | 15 |
| Mär | 22 | 24 |
| Apr | 35 | 38 |
| Mai | 52 | 56 |
| Jun | 68 | 73 |
| Jul | 74 | 80 |
| Aug | 66 | 71 |
| Sep | 38 | 41 |
| Okt | 20 | 21 |
| Nov | 15 | 16 |
| Dez | 24 | 26 |
| Summe | 440 | 474 |
Es ist jetzt Ende Dezember 2025, und die Einkäuferin will eine Prognose für Juli 2026.
Die naive Methode nimmt den letzten Wert, Dezember 2025, und sagt für Juli 2026 26.000 € voraus. Jeder Monat 2026 bekommt 26.000 €. Für ein Produkt, dessen Umsatz sich zwischen Frühjahr und Sommer verdreifacht, ist das offensichtlich falsch, und genau darum geht es: Es zeigt, was es kostet, die Saisonalität zu ignorieren.
Die saisonal naive Methode schaut eine Saison zurück. Juli 2026 liegt Monate voraus, also ist der ganzzahlige Teil von , und das ist 0. Die Formel zeigt auf , fünf Monate vor Dezember 2025, also Juli 2025. Die Prognose lautet 80.000 €.
Alles Ausgefeiltere muss das auf zurückgehaltenen Daten schlagen, um seine Existenz zu rechtfertigen.
Gleitende Durchschnitte glätten die Vergangenheit
Ein gleitender Durchschnitt ersetzt jeden Wert durch den Durchschnitt seiner Nachbarn, sodass sich kurzfristige Ausschläge aufheben und das zugrunde liegende Niveau sichtbar wird.5 Ein nachlaufender gleitender Durchschnitt über die letzten Perioden ist:
Dabei ist der gleitende Durchschnitt in Periode , die Zahl der Perioden im Fenster, heißt, dass die Terme für von 0 bis addiert werden, und ist der Wert Perioden vor , die Summe läuft also über die letzten Werte. Dieselbe Formel mit Rechenbeispiel steht in Grundlagen: Saisonalität, und der einfache Durchschnitt darunter in Grundlagen: der Mittelwert.
Ein gleitender Durchschnitt ist ein gutes Werkzeug, um das Niveau einer stabilen Reihe zu sehen. Für eine saisonale Reihe ist er eine schlechte Prognose, weil er immer nach hinten schaut. Bei stark saisonalen Daten liefert er Prognosen, die immer zu spät kommen und immer in dieselbe Richtung danebenliegen.
Bei Monatsdaten entfernt man das saisonale Muster nach Lehrbuch mit einem zentrierten gleitenden Durchschnitt über 12 Monate, der noch einmal über zwei gemittelt wird (ein gleitender Durchschnitt 2 mal 12), damit jeder Kalendermonat dasselbe Gewicht bekommt.5 Teilt man jeden Monat durch dieses glatte Niveau, erhält man seinen Saisonindex.
Rechenbeispiel: ein Dreimonatsdurchschnitt verpasst die Wende
Die Einkäuferin von Wendel probiert einen gleitenden Durchschnitt über drei Monate, um den Oktober 2025 aus den Zahlen von Juli, August und September zu prognostizieren:
Dabei sind , und die Umsätze von Juli, August und September in Tausend Euro und das Fenster, die Prognose lautet also 64.000 €. Tatsächlich kam der Oktober auf 21.000 €. Der Durchschnitt liegt dreimal zu hoch, weil er noch auf den Sommer schaut.
Jetzt dieselben Daten, richtig genutzt. Der durchschnittliche Monatsumsatz 2025 lag bei Tausend Euro. Das Verhältnis des Juli zu diesem Niveau ist , das des Januar . (Dieses einfache Verhältnis zum Jahresdurchschnitt steht hier für den gleitenden Durchschnitt 2 mal 12, der bei einer so glatten Reihe ein ähnliches Ergebnis liefert.) Der Juli verkauft etwa das Doppelte eines durchschnittlichen Monats, der Januar etwa ein Drittel. Das ist die Saisonalität, gemessen, und genau sie hat der Dreimonatsdurchschnitt ignoriert.
Exponentielle Glättung gewichtet die jüngste Vergangenheit stärker
Die einfache exponentielle Glättung ist ein gewichteter Durchschnitt aller früheren Werte, bei dem die Gewichte umso kleiner werden, je weiter du zurückgehst. Was letzten Monat passiert ist, zählt mehr als das, was vor drei Jahren passiert ist.6 In rekursiver Form:
Dabei ist das geglättete Niveau nach Periode , zugleich die Prognose für jede künftige Periode, der Glättungsparameter zwischen 0 und 1, der in Periode beobachtete Wert und das Niveau aus der Periode davor. Ein großes folgt den jüngsten Werten eng, ein kleines gibt älteren Werten mehr Gewicht, und ist die naive Methode. Die Idee des gewichteten Durchschnitts baut auf Grundlagen: der Mittelwert auf.
Die einfache exponentielle Glättung passt zu Daten ohne klaren Trend und ohne Saisonalität. Die Methode von Holt nimmt einen Trend hinzu, und die Methode von Holt Winters setzt noch eine saisonale Komponente obendrauf. Holt Winters gibt es in zwei Varianten: additiv, wenn der saisonale Ausschlag jedes Jahr ungefähr gleich groß ist, und multiplikativ, wenn der Ausschlag im Verhältnis zum Niveau wächst.7 Sonnenbrillenumsätze, die wachsen und in jedem Sommer stärker ausschlagen, sind ein multiplikativer Fall.
Rechenbeispiel: Uhrenverkäufe glätten
Wendel verkauft Luxusuhren, eine Kategorie mit wenig Saisonalität. In vier Monaten wurden 30, 34, 29 und 33 Stück verkauft. Starte das Niveau beim ersten Wert, , und nimm :
Jede Zeile gewichtet den neuen Monat mit und das vorherige Niveau mit , die Prognose für den nächsten Monat ist also , rund 31 Uhren (die Idee des gewichteten Durchschnitts steht in Grundlagen: der Mittelwert). Mit ergeben dieselben Schritte 30, 33,2, 29,84 und 32,37, eine Prognose von rund 32. Das höhere jagt dem letzten Monat hinterher, das niedrigere bleibt ruhig. Bei verrauschten Daten wie diesen ist ruhig meist die bessere Wette, und in der Praxis wählt die Software so, dass die früheren Prognosefehler möglichst klein werden.
ARIMA, SARIMA und Prophet
Die exponentielle Glättung beschreibt eine Reihe über ihren Trend und ihre Saisonalität. ARIMA Modelle (AutoRegressive Integrated Moving Average) gehen einen anderen Weg und beschreiben, wie jeder Wert mit den Werten davor zusammenhängt, die Autokorrelation.8 Saisonales ARIMA (SARIMA) fügt dieselbe Idee beim saisonalen Abstand hinzu, sodass dieser Juli mit dem letzten Juli zusammenhängt. In der Python Bibliothek statsmodels wird der saisonale Teil mit vier Zahlen festgelegt, wobei die Länge der Saison ist, 12 bei Monatsdaten.9 Wenn du mehrere Jahre eines starken, gleichmäßigen saisonalen Musters hast, ist SARIMA oft eine solide Wahl.
Prophet ist ein Open Source Werkzeug für Prognosen, das das Core Data Science Team von Facebook veröffentlicht hat. Es passt ein additives Modell mit Trend, jährlicher und wöchentlicher Saisonalität und Feiertagseffekten an und kommt mit fehlenden Daten und Trendbrüchen gut zurecht.10 Das macht es praktisch für Geschäftsdaten mit Feiertagen, Aktionen und der einen oder anderen Lücke, also genau die Daten, die die meisten Läden haben.
Über Bedarfsprognosen für eCommerce mit Prophet und SARIMA habe ich separat geschrieben, deshalb bekommen die beiden hier je einen Absatz und weiter unten ein Codebeispiel.
Regression prognostiziert aus Treibern, nicht aus dem Kalender
Zeitreihenverfahren fragen: "Wie hoch wird der Umsatz nächsten Monat sein, gegeben die Monate davor?" Die Regression stellt eine andere Frage: "Was treibt den Umsatz, und was sagen diese Treiber über den nächsten Monat?"11
Dabei ist der Wert, den du in Periode prognostizieren willst (etwa den Umsatz), der Treiber in dieser Periode (Temperatur, Besucherfrequenz, Werbeausgaben), der Achsenabschnitt, also der vorhergesagte Wert von , wenn null ist, die Steigung, also die durchschnittliche Veränderung von bei einer Einheit mehr , und der Fehler, alles andere außer , was bewegt. Die Methode samt und ihren Grenzen steht in Grundlagen: Regression.
Die multiple Regression nutzt mehrere Treiber zugleich: Temperatur, Wochentag, Zahltag, einen Bahnstreik. Polynomiale Terme bilden Zusammenhänge ab, die sich krümmen.
Der Haken wird leicht übersehen. Um den Umsatz aus der Temperatur der nächsten Woche zu prognostizieren, brauchst du zuerst die Temperatur der nächsten Woche, und die ist selbst eine Prognose. Eine echte Prognose kann nur Informationen nutzen, die zum Zeitpunkt ihrer Erstellung verfügbar sind.12 Und eine Regression zeigt, dass sich Treiber gemeinsam bewegen, nicht, dass der eine den anderen verursacht.
Rechenbeispiel: Sonnenbrillen und das Wetter
Angenommen, eine Regression auf Wochendaten aus zwei Sommern bei Wendel ergibt:
Dabei ist der wöchentliche Sonnenbrillenumsatz in Euro, der Achsenabschnitt, die Steigung in Euro pro Grad und die durchschnittliche Tageshöchsttemperatur der Woche in Grad Celsius. Angepasst wurde das Modell auf Wochen zwischen 12 °C und 28 °C.
Die Wettervorhersage sagt für nächste Woche 24 °C:
Also rund 12.800 €. Eine kühlere Vorhersage von 18 °C ergibt , rund 10.100 €. Jedes zusätzliche Grad ist etwa 450 € pro Woche wert, und zwar nur im Bereich von 12 °C bis 28 °C. Bei 35 °C würde das Modell 17.750 € sagen, aber es hat in Köln nie eine Woche mit 35 °C gesehen und hat deshalb dazu schlicht nichts zu sagen.
Machine Learning verdient seinen Platz bei großen Mengen
Bei vielen zusammenhängenden Reihen mit vielen Treibern können Machine Learning Modelle die klassischen statistischen Verfahren schlagen. Darüber, wo KI endet und Machine Learning beginnt, habe ich geschrieben, deshalb hier nur die Teile, die für Prognosen zählen.
Random Forests kombinieren viele Entscheidungsbäume und bilden Zusammenhänge ab, die keine geraden Linien sind. Gradient Boosted Trees (XGBoost, LightGBM) bauen Bäume nacheinander, und jeder korrigiert den vorherigen. Neuronale Netze wie LSTMs sind für lange Sequenzen gemacht, in denen etwas von vor Monaten noch zählt.
Die Befunde lohnen sich. Im Prognosewettbewerb M5, gebaut auf Zehntausenden von Umsatzreihen aus dem Einzelhandel, wurden die vorderen Plätze in beiden Wertungen von Einreichungen mit Gradient Boosted Trees dominiert, allen voran LightGBM, vor den Einreichungen mit Deep Learning.13 Das ist ein Ergebnis für große Mengen zusammenhängender Reihen mit vielen Merkmalen. Für eine einzelne Produktlinie mit drei Jahren Monatsdaten sagt es sehr wenig.
Der Preis ist die Erklärbarkeit. Eine lineare Regression sagt dir genau, wie jeder Treiber zur Prognose beiträgt. Ein Boosting Modell mit 200 Merkmalen ist vielleicht genauer, aber einer Einkäuferin zu erklären, warum es eine bestimmte Zahl vorhergesagt hat, ist viel schwerer.
Urteil, wenn die Zahlen nicht reichen
Wenn es keine Historie gibt oder die Historie nicht mehr gilt, muss die Prognose von Menschen kommen. Urteil lässt sich strukturieren, und die Struktur ist es, die es vom Raten unterscheidet.
Wie die Delphi Methode funktioniert
Delphi ist ein strukturierter Konsens von Fachleuten, entwickelt in den 1950er Jahren bei der RAND Corporation.14 Eine Moderatorin gibt einem Panel von Fachleuten die Prognoseaufgabe. Jede Person prognostiziert unabhängig, mit einer kurzen Begründung. Die Moderatorin fasst die Antworten zusammen und schickt sie zurück. Die Fachleute überarbeiten ihre Schätzung, und die Runde wiederholt sich, meist zwei oder drei Mal, bis sich die Streuung der Antworten weit genug verengt hat. Konsens heißt nicht, dass alle dieselbe Zahl nennen.14
Die Anonymität ist der Kern. Niemand weiß, wer was gesagt hat, also können Rang und laute Stimmen den Raum nicht plattwalzen, und niemand ankert an der ersten Zahl, die laut ausgesprochen wird.
Marktforschung und Umfragen
Manchmal ist der beste Weg vorherzusagen, was Kunden kaufen werden, sie zu fragen: Umfragen ("würdest du das zu diesem Preis kaufen?"), Fokusgruppen, strukturierte Studien zur Kaufabsicht.
Die Schwäche: Eine Umfrage hält fest, was Menschen sagen, dass sie tun werden, und die Kasse hält fest, was sie tun. Jemand sagt vielleicht, er würde auf jeden Fall die nachhaltige Variante kaufen, und greift an der Kasse dann zur günstigeren. Behandle geäußerte Absichten als Obergrenze, nicht als Prognose.
Die Schätzung des Verkaufsteams
Die Leute auf der Verkaufsfläche wissen, nach welchen Produkten Kunden fragen und welche verstauben. Ihre Schätzungen zusammenzuzählen, macht dieses Wissen nutzbar. Das Risiko ist Verzerrung: Optimismus oder Vorsicht, je nachdem, wie sie bezahlt werden, und zu viel Gewicht auf die letzte Woche.
Die Meinung der Führungsebene
Die Führungskräfte legen ihr Urteil zusammen. Das geht schnell und kostet wenig. Die Gefahr ist Gruppendenken und das HiPPO Problem, bei dem die Highest Paid Person's Opinion gewinnt, also die Meinung der am besten bezahlten Person im Raum. Hol unabhängige Schätzungen ein, bevor irgendjemand darüber diskutiert.
Szenarioplanung
Statt eine einzige Zukunft vorherzusagen, beschreibst du mehrere plausible und prognostizierst jede: "Wenn die Wirtschaft wächst, X. Wenn eine Rezession kommt, Y. Wenn ein neuer Wettbewerber in der Innenstadt eröffnet, Z." Das ist das Werkzeug für Strategie und Risiko, nicht für die Budgetzeile.
Eine statistische Prognose von Hand anpassen
Die häufigste Form von Urteil in der Praxis ist eine Anpassung an der Prognose eines Modells. Die Befunde sind eindeutig, wann das hilft: wenn du echte Informationen hast, die das Modell nicht hat, etwa eine geplante Aktion oder ein großes Ereignis. Kleine Anpassungen, weil sich eine Prognose "zu niedrig anfühlt", machen die Genauigkeit eher schlechter.15 Pass sparsam an und schreib jede Anpassung samt Grund auf.
Saisonal oder nicht: prüf, bevor du wählst
Saisonalität geht quer durch beide Familien. Sie tritt auf mehreren Ebenen auf: jährlich (Weihnachten, Sommer, Schulanfang), monatlich (Zahltag), wöchentlich (Wochenende) und täglich (der Mittagsandrang).
Wenn das Muster da ist, muss die Methode damit umgehen können: saisonal naiv, Holt Winters, SARIMA, Prophet oder saisonale Terme in einer Regression. Wenn es wirklich nicht da ist, etwa bei Industrieanlagen, die nach Investitionsbudget statt nach Jahreszeit gekauft werden, schlagen sich einfachere Verfahren gut: einfache exponentielle Glättung, ARIMA ohne saisonale Terme, eine Regression ohne solche Terme oder die Drift Methode, die die Linie von der ersten bis zur letzten Beobachtung verlängert.4
Die Gefahr ist, anzunehmen, eine Reihe habe keine Saisonalität, wenn du einfach nicht hingeschaut hast. Zeichne sie, zerleg sie, prüf sie. Für ein Jahresmuster will ich mindestens zwei, besser drei Jahre Historie, bevor ich dem traue, was die Daten zeigen.
Welche Methode, wann
Die Wahl läuft auf ein paar Fragen hinaus, in dieser Reihenfolge gestellt.
Das Diagramm liest sich von oben nach unten. Die eine Entscheidung betrifft die Historie: Genug stabile Daten schicken dich zu den Zahlen, zu wenige zum Urteil, und beide Wege enden am selben Ort, mit einer Prognose, die an dem gemessen wird, was tatsächlich passiert ist.
Kombinier beides, wenn du ein Modell mit Urteil anpassen, es gegen die Intuition prüfen oder mit Kategorien umgehen willst, die sich verschieden verhalten.
Rechenbeispiel: ein Kaufhaus, sechs Kategorien
Ich habe an Prognosen für ein großes Kaufhaus gearbeitet, und die Form dieses Beispiels stammt aus dieser Art von Arbeit. Das Kaufhaus hier, Wendel in Köln, ist erfunden, ebenso alle seine Zahlen und Gewichte. Der Punkt ist, dass ein einziges Unternehmen mehrere Methoden zugleich braucht.
Designersonnenbrillen: saisonal, quantitativ
Jahre an Historie und ein gleichmäßiger Sommergipfel machen Sonnenbrillen zu einem Fall für SARIMA. Ein Regressionsanteil auf Temperaturprognosen hilft, weil ein warmer April die Sommernachfrage nach vorn zieht und ein verregneter Juni sie zurückhält.
Luxusuhren: wenig Saisonalität, gemischte Methoden
Eine Uhr für 10.000 € kauft niemand, weil die Sonne scheint. Uhrenverkäufe bewegen sich stattdessen mit der Bonussaison in der Finanzbranche, der Entwicklung an der Börse, Besuchern aus dem Ausland, Wechselkursen und neuen Modellen. Wendel nutzt eine multiple Regression auf diese Treiber, kombiniert mit der Einschätzung der Uhreneinkäufer, die wissen, wann neue Modelle kommen und für welche Stücke es Wartelisten gibt.
Ein Beispiel für die Mischung: Das Kaufhaus gibt dem Modell 60 % Gewicht und den Einkäufern 40 % (die Annahme des Beispiels). Das Modell sagt 40 Uhren für den nächsten Monat, die Einkäufer sagen 50:
Dabei sind und die beiden Gewichte, die Prognose des Modells und die der Einkäufer, die Prognose lautet also 44 Uhren.
Eine neue Designerkollektion: reines Urteil
Eine neue exklusive Kollektion hat keine Historie, also kommt die Prognose von einem Panel nach Delphi Art aus Einkauf, Merchandising und Marketing, aus vergleichbaren Einführungen ("das sieht aus wie die Kollektion vor zwei Jahren, und die lief so"), aus dem Interesse in Presse und sozialen Medien und aus Vorbestellungen. Das Panel liefert drei Szenarien, vorsichtig, erwartet und optimistisch, und das Kaufhaus plant Ware und Personal darum herum.
Süßwaren in der Feinkostabteilung: saisonal, mit Ereignissen
Pralinen und Gebäck haben eine starke Saisonalität (Weihnachten ist riesig, Ostern deutlich, Valentinstag und Muttertag mittel) und Spitzen durch Ereignisse: Großereignisse, Aktionen im Haus, Kooperationen mit Marken. Dafür passt Prophet, weil es wöchentliche und jährliche Saisonalität, einen eigenen Kalender deutscher Feiertage, Trendänderungen und Lücken in den Daten abbildet, etwa die Monate, in denen die Geschäfte in der Pandemie geschlossen waren. Eine einmalige Kooperation bekommt eine Anpassung per Urteil obendrauf.
Kosmetik: gemischte Saisonalität, viele Aktionen
Manche Kosmetikprodukte sind saisonal (Sonnencreme im Sommer, reichhaltige Feuchtigkeitscremes im Winter), andere nicht, und Aktionen sorgen für große Ausschläge. Wendel nutzt eine Basislinie aus Prophet oder SARIMA, eine Regression, die den Effekt jeder Art von Aktion schätzt, und Urteil für Neueinführungen. Das Aktionsmodell zählt am meisten: Eine Zugabe beim Kauf kann den Umsatz eine Woche lang verdreifachen, und die Basislinie muss wissen, dass das eine Aktion war, sonst glaubt sie, die Nachfrage habe sich dauerhaft verdreifacht.
Traditionsreiche Handtaschen: knappes Angebot
Bei manchen Traditionsmarken übersteigt die Nachfrage das Angebot, und es gibt Wartelisten. Die Frage lautet nicht "wie viele wollen die Kunden?", sondern "wie viele teilt uns die Marke zu?" Das dreht das Problem um: eine Prognose des Angebots aus der Beziehung zur Marke, eine Schätzung der wahren Nachfrage, auch wenn der Umsatz durch den Bestand gedeckelt ist, und eine Prognose, wie viele Menschen auf der Warteliste tatsächlich kaufen. Größtenteils Urteil, und größtenteils Beziehungen.
Eine Prognose ist eine Spanne, keine Zahl
Eine einzelne Zahl liegt immer daneben. Die nützliche Frage ist, wie weit. Ein Prognoseintervall gibt die Spanne an, in die der tatsächliche Wert mit einer angegebenen Wahrscheinlichkeit fällt, und das Lehrbuch sagt es unverblümt: Punktprognosen können ohne ein solches Intervall nahezu wertlos sein.16
Dabei ist die Punktprognose für Perioden im Voraus, ein Faktor, der sich aus der gewünschten Abdeckung ergibt (1,28 für 80 %, 1,96 für 95 %), und die geschätzte Standardabweichung des Prognosefehlers beim Horizont . Für die saisonal naive Methode gilt , wobei die Standardabweichung der früheren Prognosefehler ist und wie vorher die vollen Jahre im Voraus zählt.16 Das Intervall beruht auf Grundlagen: Konfidenzintervalle, die Standardabweichung auf Grundlagen: Streuung. Die Formel setzt voraus, dass die Fehler ungefähr normalverteilt sind und im Schnitt null ergeben.
Rechenbeispiel: ein Intervall für die Sonnenbrillen im Juli
Zurück zur saisonal naiven Prognose für Juli 2026: 80.000 €. Um das Intervall zu bemessen, schau dir an, wie dieselbe Methode 2025 abgeschnitten hat, als sie jeden Monat aus demselben Monat 2024 prognostiziert hat. Die Fehler (2025 minus 2024) waren in Tausend Euro: 1, 1, 2, 3, 4, 5, 6, 5, 3, 1, 1, 2. Ihre Standardabweichung beträgt 1,80.
Juli 2026 liegt weniger als ein Jahr voraus, also ist und . Das 95 % Intervall ist:
Also 76.500 € bis 83.500 €. Das 80 % Intervall ist , also 77.700 € bis 82.300 €.
Aber schau dir diese Fehler noch einmal an. Jeder einzelne ist positiv, im Schnitt 2,83. Die Methode lag in jedem Monat zu niedrig, weil das Geschäft wächst, und die Intervallformel setzt Fehler voraus, die im Schnitt null ergeben. Die ehrliche Korrektur ist, das Wachstum hinzuzunehmen. 2025 lag mal so hoch wie 2024, eine um das Wachstum bereinigte Prognose für Juli 2026 ist also , rund 86.000 €. Das liegt außerhalb des gerade berechneten Intervalls, und genau das ist die Lehre: Ein Intervall ist nur so ehrlich wie die Fehler dahinter.
Die waagerechte Achse ist der Kalendermonat, die senkrechte der monatliche Sonnenbrillenumsatz in Tausend Euro. Die drei Linien haben dieselbe Form, einen Sommergipfel im Juli und eine kleine Erhebung im Dezember für Geschenke, und jedes Jahr liegt etwas über dem vorigen. Die Erkenntnis: Die saisonale Form ist sehr stabil, der schwierige Teil dieser Prognose ist also nicht die Form, sondern das Wachstum, und genau dort gehört die Unsicherheit hin.
Genauigkeit ehrlich messen
Prognosen ohne Prüfung sind Raten mit zusätzlichen Schritten. Der Fehler in jeder Periode ist der tatsächliche Wert minus die Prognose, und drei Zusammenfassungen davon sind Standard.17
Dabei ist der Prognosefehler in Periode (tatsächlich minus Prognose), die Zahl der geprüften Perioden, der Fehler ohne Vorzeichen und der quadrierte Fehler. Der MAE (Mean Absolute Error, mittlerer absoluter Fehler) ist die typische Abweichung in der Einheit der Daten selbst. Der RMSE (Root Mean Squared Error, Wurzel aus dem mittleren quadrierten Fehler) bestraft große Abweichungen stärker, weil das Quadrieren sie größer macht. Beide sind Maße der Streuung, erklärt in Grundlagen: Streuung.
Dabei ist der tatsächliche Wert in Periode , und sind wie vorher, und die 100 macht aus jedem Fehler einen Prozentsatz des tatsächlichen Werts. Mit dem MAPE (Mean Absolute Percentage Error, mittlerer absoluter prozentualer Fehler) kannst du eine Kategorie mit 15.000 € mit einer mit 180.000 € vergleichen. Er versagt, wenn die tatsächlichen Werte null sind oder nahe null liegen, und er bestraft zu hohe Prognosen stärker als zu niedrige.17 Prozentrechnung selbst steht in Grundlagen: Prozent.
Zwei weitere Gewohnheiten zählen. Erstens: Prüf den durchschnittlichen Fehler mit Vorzeichen, den Bias. Eine Prognose, die immer zu niedrig liegt, ist ein Problem, das der MAE allein verbirgt. Zweitens: Miss auf Daten, die das Modell nicht gesehen hat. Halte den jüngsten Abschnitt zurück, etwa ein Fünftel der Daten und mindestens so lang wie der Horizont, den du prognostizierst, pass das Modell auf dem Rest an und bewerte es auf dem zurückgehaltenen Teil.17 Die Kreuzvalidierung für Zeitreihen wiederholt das mit einem Schnittpunkt, der nach vorn wandert, sodass keine Prognose je die Zukunft nutzt.18
Rechenbeispiel: zwei Kategorien, zwei verschiedene Probleme
Wendel prüft die Prognosen aus zwei Monaten.
Sonnenbrillen: Im Januar tatsächlich 14.500 € gegen eine Prognose von 14.000 €, im Februar tatsächlich 15.400 € gegen 16.200 €. Die Fehler sind und .
Dabei sind und die beiden Abweichungen in Euro. Der MAPE teilt jede durch ihren eigenen tatsächlichen Wert:
Der Bias ist , leicht zu hoch prognostiziert, nichts Beunruhigendes.
Uhren: Im Januar tatsächlich 180.000 € gegen 175.000 €, im Februar 195.000 € gegen 190.000 €. Beide Fehler sind . MAE und RMSE liegen beide bei 5.000, der MAPE bei , und der Bias bei .
Nach dem MAPE sehen die Uhren nach der besseren Prognose aus. Aber jeder Uhrenfehler hat dasselbe Vorzeichen: Das Modell liegt durchgehend zu niedrig. Das ist der nützlichere Befund, und nur der Bias zeigt ihn.
Der Werkzeugkasten in Python
Diese Beispiele gehen von einer CSV Datei mit einer Datumsspalte und einer Umsatzspalte aus. Die Dateinamen sind Platzhalter.
Die Bibliotheken
# Grundlegende Datenverarbeitung
import pandas as pd
import numpy as np
# Diagramme
import matplotlib.pyplot as plt
# Statistische Prognosen
from statsmodels.tsa.holtwinters import ExponentialSmoothing
from statsmodels.tsa.statespace.sarimax import SARIMAX
from statsmodels.tsa.seasonal import seasonal_decompose
# Prophet (veröffentlicht von Facebook, heute Meta)
from prophet import Prophet
# Machine Learning
from sklearn.linear_model import Ridge
from sklearn.model_selection import TimeSeriesSplit
from sklearn.metrics import mean_absolute_error, mean_absolute_percentage_error
import xgboost as xgb
Erst zerlegen, dann prognostizieren
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose
df = pd.read_csv('sunglasses_sales.csv', parse_dates=['date'], index_col='date')
df = df.asfreq('MS') # monatlich, datiert auf den Monatsanfang
# Multiplikativ, weil der Sommerausschlag mit dem Niveau wächst
decomposition = seasonal_decompose(df['sales'], model='multiplicative', period=12)
fig, axes = plt.subplots(4, 1, figsize=(12, 10))
decomposition.observed.plot(ax=axes[0], title='Observed')
decomposition.trend.plot(ax=axes[1], title='Trend')
decomposition.seasonal.plot(ax=axes[2], title='Seasonal')
decomposition.resid.plot(ax=axes[3], title='Residual')
plt.tight_layout()
plt.show()
Die vier Felder beantworten die ersten drei Fragen: Gibt es einen Trend, wie stark ist die Saisonalität, und wie viel Rauschen bleibt übrig.
SARIMA für Sonnenbrillen
import pandas as pd
from statsmodels.tsa.statespace.sarimax import SARIMAX
from sklearn.metrics import mean_absolute_error, mean_absolute_percentage_error
df = pd.read_csv('sunglasses_sales.csv', parse_dates=['date'], index_col='date')
df = df.asfreq('MS')
# Das jüngste Jahr zurückhalten
train = df[:'2024']
test = df['2025':]
# order = (p, d, q), seasonal_order = (P, D, Q, s) mit s = 12 bei Monatsdaten
model = SARIMAX(
train['sales'],
order=(1, 1, 1),
seasonal_order=(1, 1, 1, 12),
enforce_stationarity=False,
enforce_invertibility=False,
)
results = model.fit(disp=False)
forecast = results.get_forecast(steps=len(test))
forecast_mean = forecast.predicted_mean
forecast_ci = forecast.conf_int(alpha=0.05) # 95 % Prognoseintervall
print(f"MAE: {mean_absolute_error(test['sales'], forecast_mean):,.0f}")
print(f"MAPE: {mean_absolute_percentage_error(test['sales'], forecast_mean):.1%}")
# Immer mit dem saisonal naiven Maßstab vergleichen: derselbe Monat im Vorjahr
naive = train['sales'].iloc[-12:].values[:len(test)]
print(f"Seasonal naive MAE: {mean_absolute_error(test['sales'], naive):,.0f}")
Schlägt SARIMA die saisonal naive Zeile ganz unten nicht, nimm die saisonal naive Prognose.
Prophet für Süßwaren
import pandas as pd
from prophet import Prophet
# Prophet erwartet zwei Spalten: ds (Datum) und y (Wert)
df = pd.read_csv('confectionery_sales.csv')
df.columns = ['ds', 'y']
df['ds'] = pd.to_datetime(df['ds'])
def event(name, dates, before, after):
return pd.DataFrame({
'holiday': name,
'ds': pd.to_datetime(dates),
'lower_window': before,
'upper_window': after,
})
holidays = pd.concat([
event('christmas', ['2022-12-25', '2023-12-25', '2024-12-25', '2025-12-25'], -30, 5),
event('easter', ['2022-04-17', '2023-04-09', '2024-03-31', '2025-04-20'], -14, 1),
event('valentines', ['2022-02-14', '2023-02-14', '2024-02-14', '2025-02-14'], -7, 0),
# Muttertag in Deutschland, der zweite Sonntag im Mai
event('mothers_day', ['2022-05-08', '2023-05-14', '2024-05-12', '2025-05-11'], -7, 0),
])
model = Prophet(
holidays=holidays,
yearly_seasonality=True,
weekly_seasonality=True,
daily_seasonality=False,
changepoint_prior_scale=0.05, # wie frei sich der Trend biegen darf
)
model.fit(df)
future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)
# yhat ist die Prognose, yhat_lower und yhat_upper das Intervall
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail())
model.plot_components(forecast)
Jeder Feiertag wird zu einer eigenen Spalte in der Prognose, du siehst also, was Weihnachten für sich allein wert ist.19
Regression auf Treiber für Uhren
import pandas as pd
import numpy as np
from sklearn.linear_model import Ridge
from sklearn.model_selection import TimeSeriesSplit
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.metrics import mean_absolute_error
df = pd.read_csv('watch_sales_with_drivers.csv', parse_dates=['date'])
# Der Monat als Punkt auf einem Kreis, damit der Dezember neben dem Januar liegt
df['month_sin'] = np.sin(2 * np.pi * df['date'].dt.month / 12)
df['month_cos'] = np.cos(2 * np.pi * df['date'].dt.month / 12)
features = [
'dax_change', # Börse
'visitors_abroad', # Besucher aus dem Ausland
'eur_usd', # Wechselkurs
'bonus_month', # 1 in Bonusmonaten, sonst 0
'new_model_release', # 1, wenn ein neues Modell erscheint, sonst 0
'month_sin', 'month_cos',
]
X, y = df[features], df['sales']
# Skalierung in der Pipeline, damit jede Falte auf ihren eigenen Trainingsdaten skaliert wird
model = make_pipeline(StandardScaler(), Ridge(alpha=1.0))
scores = []
for train_idx, test_idx in TimeSeriesSplit(n_splits=5).split(X):
model.fit(X.iloc[train_idx], y.iloc[train_idx])
scores.append(mean_absolute_error(y.iloc[test_idx], model.predict(X.iloc[test_idx])))
print(f'Average MAE: {np.mean(scores):,.0f}')
model.fit(X, y)
coefs = pd.Series(model[-1].coef_, index=features).sort_values(key=abs, ascending=False)
print(coefs) # standardisiert: größer heißt größerer Effekt pro Standardabweichung
Denk an den Haken von vorhin: Um den nächsten Monat zu prognostizieren, brauchst du die Treiber des nächsten Monats, und die sind ebenfalls Prognosen.
Gradient Boosting für Kosmetik
import pandas as pd
import numpy as np
import xgboost as xgb
from sklearn.model_selection import TimeSeriesSplit
from sklearn.metrics import mean_absolute_error
df = pd.read_csv('beauty_sales.csv', parse_dates=['date']).sort_values('date')
df['day_of_week'] = df['date'].dt.dayofweek
df['month'] = df['date'].dt.month
df['is_weekend'] = df['day_of_week'].isin([5, 6]).astype(int)
df['payday_week'] = df['date'].dt.day.isin(range(25, 32)).astype(int)
# Verzögerungen: Umsatz 7, 14 und 28 Tage früher
for lag in (7, 14, 28):
df[f'lag_{lag}'] = df['sales'].shift(lag)
# Rollende Werte um einen Tag verschoben, damit der heutige Umsatz nie in die heutige Prognose fließt
past = df['sales'].shift(1)
df['mean_7'] = past.rolling(7).mean()
df['std_7'] = past.rolling(7).std()
df['mean_28'] = past.rolling(28).mean()
df = df.dropna()
features = ['day_of_week', 'month', 'is_weekend', 'payday_week',
'lag_7', 'lag_14', 'lag_28', 'mean_7', 'std_7', 'mean_28']
X, y = df[features], df['sales']
scores = []
for train_idx, test_idx in TimeSeriesSplit(n_splits=5).split(X):
model = xgb.XGBRegressor(n_estimators=300, max_depth=6, learning_rate=0.05,
subsample=0.8, colsample_bytree=0.8, random_state=42)
model.fit(X.iloc[train_idx], y.iloc[train_idx])
scores.append(mean_absolute_error(y.iloc[test_idx], model.predict(X.iloc[test_idx])))
print(f'Average MAE: {np.mean(scores):,.0f}')
Die Verschiebung vor den rollenden Durchschnitten zählt. Ohne sie enthält der Durchschnitt jedes Tages den Umsatz dieses Tages selbst, das Modell sieht still und leise die Antwort, und das Testergebnis sieht viel besser aus, als es eine echte Prognose je sein wird.
Ein Modell mit dem Urteil von Fachleuten mischen
from scipy.stats import norm
def blend(model_value, expert_estimates, model_weight=0.5):
"""Gewichtete Mischung einer Modellprognose mit jedem Szenario der Fachleute."""
return {name: model_weight * model_value + (1 - model_weight) * value
for name, value in expert_estimates.items()}
def band(forecast, error_sd_pct, coverage=0.95):
"""Grobes Intervall aus der Standardabweichung früherer prozentualer Fehler."""
z = norm.ppf(0.5 + coverage / 2) # 1,96 für 95 %, 1,28 für 80 %
margin = forecast * error_sd_pct * z
return forecast - margin, forecast + margin
model_forecast = 125_000 # aus vergleichbaren früheren Einführungen
experts = {'cautious': 95_000, 'expected': 140_000, 'optimistic': 200_000}
scenarios = blend(model_forecast, experts, model_weight=0.5)
for name, value in scenarios.items():
print(f'{name}: {value:,.0f} €')
low, high = band(scenarios['expected'], error_sd_pct=0.30)
print(f'Expected, 95%: {low:,.0f} € to {high:,.0f} €')
Rechenbeispiel: die neue Kollektion in Zahlen
Das Modell von Wendel, gebaut auf vergleichbaren Einführungen, sagt 125.000 €. Das Panel der Einkäufer sagt 95.000 € vorsichtig, 140.000 € erwartet und 200.000 € optimistisch. Mit gleichen Gewichten, weil das Modell bei einer neuen Kollektion wenig in der Hand hat:
Dabei ist das Gewicht jeder Seite, das Modell und die zweite Zahl in jeder Zeile das Szenario des Panels, ein gewichteter Durchschnitt wie in Grundlagen: der Mittelwert.
Angenommen, frühere Prognosen für Einführungen lagen mit einer Standardabweichung von 30 % daneben (die Annahme des Beispiels). Das 95 % Band um die erwarteten 132.500 € ist:
Dabei ist die erwartete Prognose, die angenommene Standardabweichung des Fehlers und der Faktor für 95 %, das Band reicht also von 54.590 € bis 210.410 €. Das Band ist breit, und das soll es auch sein. Eine Einkäuferin mit einem Plan für beide Enden steht viel besser da als eine, der man eine einzige selbstsichere Zahl in die Hand drückt.
Genauigkeit nach Kategorie prüfen
import pandas as pd
import numpy as np
def metrics(actual, forecast):
e = actual - forecast
return pd.Series({
'mae': np.mean(np.abs(e)),
'rmse': np.sqrt(np.mean(e ** 2)),
'mape': np.mean(np.abs(e / actual)) * 100,
'bias': np.mean(e), # positiv heißt, die Prognose lag zu niedrig
})
results = pd.DataFrame({
'category': ['Sunglasses', 'Sunglasses', 'Watches', 'Watches'],
'month': ['Jan', 'Feb', 'Jan', 'Feb'],
'actual': [14_500, 15_400, 180_000, 195_000],
'forecast': [14_000, 16_200, 175_000, 190_000],
})
report = results.groupby('category').apply(lambda g: metrics(g['actual'], g['forecast']))
print(report.round(2))
Das gibt die Zahlen aus dem Genauigkeitsbeispiel oben aus. Lass es jeden Monat pro Kategorie laufen, und die Kategorien, die Aufmerksamkeit brauchen, melden sich von selbst.
Was du mitnehmen solltest
Bei Prognosen geht es nicht darum, die perfekte Methode zu finden. Es geht darum, die Methode zur Lage passend zu wählen: Zahlen, wo es eine stabile Historie gibt, strukturiertes Urteil, wo es keine gibt, und beides, wo du kannst.
Schau hin, bevor du modellierst, und schlag die Vergleichsmaßstäbe. Eine einfache Methode, die du erklären kannst, gewinnt oft, also nimm Komplexität nur dazu, wenn sie die saisonal naive Prognose auf ungesehenen Daten schlägt.
Verfolg die Genauigkeit mit Vorzeichen, pass nur mit echten Informationen an und gib Spannen statt einzelner Zahlen an. Das Intervall sagt dem Leser, wie weit er mit Abweichungen rechnen muss, egal ob es um Designersonnenbrillen geht oder um eine Schachtel Pralinen.
Footnotes
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Kapitel 6, Judgmental forecasts, OTexts, Melbourne, 2021, https://otexts.com/fpp3/judgmental.html
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, OTexts, Melbourne, 2021, https://otexts.com/fpp3/
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 2.3, Time series patterns, OTexts, 2021, https://otexts.com/fpp3/tspatterns.html
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 5.2, Some simple forecasting methods, OTexts, 2021, https://otexts.com/fpp3/simple-methods.html
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 3.3, Moving averages, OTexts, 2021, https://otexts.com/fpp3/moving-averages.html
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 8.1, Simple exponential smoothing, OTexts, 2021, https://otexts.com/fpp3/ses.html
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 8.3, Methods with seasonality, OTexts, 2021, https://otexts.com/fpp3/holt-winters.html
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Kapitel 9, ARIMA models, OTexts, 2021, https://otexts.com/fpp3/arima.html
-
statsmodels, statsmodels.tsa.statespace.sarimax.SARIMAX, Dokumentation, abgerufen im November 2026, https://www.statsmodels.org/stable/generated/statsmodels.tsa.statespace.sarimax.SARIMAX.html
-
Meta, Prophet: forecasting at scale, Projektdokumentation, abgerufen im November 2026, https://meta.github.io/prophet/
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 7.1, The linear model, OTexts, 2021, https://otexts.com/fpp3/regression-intro.html
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 7.6, Forecasting with regression, OTexts, 2021, https://otexts.com/fpp3/forecasting-regression.html
-
Tim Januschowski, Yuyang Wang, Kari Torkkola, Timo Erkkilä, Hilaf Hasson und Jan Gasthaus, Forecasting with trees, International Journal of Forecasting, Band 38, Heft 4, 2022 (frei zugänglich), https://cdn.amazon.science/17/31/0d99831d4add92e711a56abc75f8/forecasting-with-trees.pdf
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 6.3, The Delphi method, OTexts, 2021, https://otexts.com/fpp3/delphimethod.html
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 6.7, Judgmental adjustments, OTexts, 2021, https://otexts.com/fpp3/judgmental-adjustments.html
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 5.5, Distributional forecasts and prediction intervals, OTexts, 2021, https://otexts.com/fpp3/prediction-intervals.html
-
Rob J Hyndman und George Athanasopoulos, Forecasting: Principles and Practice, 3. Auflage, Abschnitt 5.8, Evaluating point forecast accuracy, OTexts, 2021, https://otexts.com/fpp3/accuracy.html
-
scikit-learn, sklearn.model_selection.TimeSeriesSplit, Dokumentation, abgerufen im November 2026, https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.TimeSeriesSplit.html
-
Meta, Seasonality, holiday effects and regressors, Prophet Dokumentation, abgerufen im November 2026, https://meta.github.io/prophet/docs/seasonality,_holiday_effects,_and_regressors.html