Übereinstimmung verständlich erklärt
Eine Prognose kann im Diagramm genau im Gleichschritt mit dem tatsächlichen Absatz laufen und trotzdem durchgehend zu hoch liegen: Das Lager läuft über, obwohl die Kurven zusammenpassen. Diese Seite zeigt, warum Gleichschritt und Übereinstimmung zwei verschiedene Fragen sind und woran man den Unterschied erkennt.
Zuletzt aktualisiert:
Ein Wort unbekannt? Das Begriffsverzeichnis erklärt es in wenigen Sätzen.
Die Kurven laufen gleich, und das Lager läuft über
Eine Disponentin legt jede Woche die Absatzprognose neben den tatsächlichen Absatz, in der Fachsprache das Ist. Im Diagramm laufen beide Kurven im Gleichschritt: Steigt die eine, steigt die andere; fällt die eine, fällt die andere. Das sieht nach einer guten Prognose aus, und eine Kennzahl bestätigt es. Sie sagt, wie genau zwei Kurven im Gleichschritt laufen, und steht fast auf dem höchsten Wert, den sie annehmen kann. Sie heißt Korrelation.
Und doch liegt die Prognose Woche für Woche zu hoch: Zu jeder Palettenmenge, die tatsächlich weggeht, plant sie knapp ein Drittel mehr ein. Das Lager füllt sich, Fläche und gebundenes Kapital wachsen, und die Korrelation schlägt nicht an, weil sie nur den Gleichschritt prüft.
Zwei Fragen, die man auseinanderhalten muss
Erste Frage: Laufen Prognose und Ist im Gleichschritt? Das beantwortet die Korrelation. Zweite Frage: Liegen beide bei denselben Werten? Das heißt Übereinstimmung.
Die Fragen sind verschieden, weil der Gleichschritt gleich bleibt, wenn man die ganze Prognose verändert, ohne ihren Verlauf zu ändern. Schiebt man sie nach oben, steht jede Woche dieselbe Menge zusätzlich im Plan. Streckt man sie, wird jede Woche die Menge um denselben Anteil größer; die Kurve sieht aus wie vorher, nur höher und mit größeren Ausschlägen. Die Korrelation bewertet die Prognose danach so gut wie vorher, obwohl sie jetzt an der Wirklichkeit vorbeiläuft.
Ein Programm zum Ausprobieren, die Demo, legt eine Prognose gegen das Ist. Man stellt ein, wie stark die Prognose verschoben, gestreckt und zufällig gestört wird, und sieht, welche Kennzahlen den Fehler bemerken. Das Programm ist am Ende dieses Teils verlinkt.
Zwei Arten von Kennzahlen bemerken ihn. Die einen messen Abstände in Paletten: wie weit die Prognose im Durchschnitt daneben liegt oder in wie vielen Wochen sie höchstens um einen selbst festgelegten Betrag daneben liegt. Die anderen, etwa die Übereinstimmungskorrelation, bewerten Gleichschritt und Höhe zugleich.
Was sich beheben lässt und was nicht
Liegt die Prognose durchgehend zu hoch, folgt dem Ist aber sonst gut, lässt sich das umrechnen: Man legt an vergangenen Wochen fest, wie viel abzuziehen oder mit welchem Faktor zu multiplizieren ist, und wendet das auf neue Wochen an. Das heißt Neukalibrieren. Es funktioniert, solange die Beziehung zwischen Prognose und Ist gleich bleibt. In der Demo erreicht die Übereinstimmung der zu hohen Prognose danach denselben Wert wie die Korrelation. Höher kann sie nicht steigen, weil die Umrechnung nur Höhe und Streckung korrigiert, nicht die zufälligen Abweichungen.
Zufällige Abweichungen ohne festes Muster, mal nach oben, mal nach unten, lassen sich nicht herausrechnen. In der Demo ändert die Umrechnung bei einer Prognose, die nur solche Abweichungen hat, die Übereinstimmung kaum.
Wenn die Rangfolge kippt
Zwei Prognosen für dieselben Wochen: Die erste läuft nahezu genau im Gleichschritt mit dem Ist, liegt aber durchgehend zu hoch, wie im Beispiel oben. Die zweite liegt im Schnitt richtig, schwankt aber unregelmäßig um das Ist. Nach der Korrelation gewinnt die erste, und wer danach auswählt, nimmt die Prognose, die das Lager füllt. Nach der Übereinstimmung und nach den Abständen in Paletten gewinnt die zweite. Mit den in der Demo gewählten Einstellungen fällt das in jedem der durchgespielten Läufe so aus.
Derselbe Fehler, ein anderes Urteil
Die Korrelation hängt auch davon ab, wie stark das Ist selbst schwankt. In der Demo ergibt derselbe Abstand zwischen Prognose und Ist bei einem Produkt mit stark schwankendem Absatz eine bessere Korrelation als bei einem Produkt mit gleichmäßigem Absatz, weil der Fehler an der Schwankung des Ist gemessen wird. Die Abstände in Paletten bleiben dagegen gleich, solange die Prognose nicht gestreckt ist und die zufälligen Abweichungen bei hohem und niedrigem Absatz gleich groß sind. Wer Produkte nach der Korrelation vergleicht, vergleicht deshalb auch, wie stark ihr Absatz schwankt.
Wie ernst ist das Modell zu nehmen?
Die Demo rechnet mit simulierten Wochen und einfachen, frei einstellbaren Fehlerarten. Sie zeigt, wie sich die Kennzahlen unter diesen Annahmen verhalten, nicht wie gut eine bestimmte echte Prognose ist.
Was Sie mitnehmen: Eine hohe Korrelation allein sagt nicht, dass die Prognose stimmt. Prüfen Sie zusätzlich, ob sie im Schnitt über oder unter dem Ist liegt und um wie viele Paletten sie danebenliegt. Woran Sie es im Betrieb merken: Die Kurven sehen gut aus, aber die Bestände wachsen oder Fehlmengen häufen sich Woche um Woche in dieselbe Richtung. Dann liegt der Fehler vermutlich in der Höhe, nicht im Verlauf. Ob eine Umrechnung hilft, zeigt sich nur an Wochen, die beim Anpassen nicht benutzt wurden.
Hinweis: Alle Demos rechnen mit synthetischen oder frei verfügbaren Beispieldaten und laufen auf einem externen Anbieter (Datenschutz). Bitte geben Sie darin keine vertraulichen oder personenbezogenen Daten ein. Die Ergebnisse gelten für die jeweilige Demo-Instanz und lassen sich nicht ungeprüft auf reale Fälle übertragen; für darauf gestützte Entscheidungen übernehme ich keine Gewähr.
Modell und Annahmen
Dieser Teil ist eigenständig lesbar. Er fasst die formale Beschreibung der Demo zusammen; die vollständige Fassung steht im Expander „📐 Mathematische Formulierung“ der Demo.
- Welt: Das Ist \(a\) ist normalverteilt mit Mittel \(\mu = 100\) und Streuung \(\sigma_a\). Die Prognose entsteht aus dem Ist durch Bias \(b\), Steigung \(s\) und Rauschen \(\varepsilon\), das additiv oder proportional zum Ist ist (Standardabweichung \(\sigma_e\) bzw. \(\sigma_e\, a/\mu\)). Die Prognose „1,3 · Ist“ hat daher Bias 30 und Steigung 1,3. Alle Daten sind simuliert, die Wochen unabhängig; die Welt ist eine Modellwahl, kein Befund über echte Prognosen.
- Maße: Pearson \(r\) und \(R^2\), Lins CCC \(\rho_c\), mittlere Abweichung, RMSE, MAE, Anteil der Wochen innerhalb \(\pm T\) (inklusive Grenze), das Bland–Altman-Diagramm und die CCC nach Neukalibrierung. ICC(A,1) (zweifaktoriell, absolute Übereinstimmung) steht nur als Gegenprobe.
- Zufall und Wiederholung: Der Zufall kommt aus SplitMix64 mit festen Zufalls-Seeds. Die Befunde sind Mittelwerte über alle Läufe einer Zelle des vorgerechneten Rasters; zu jedem Maß gibt es den exakt erwarteten Wert (Erwartung als Verhältnis der Erwartungswerte), um den der gemessene schwankt.
Das Modell der Prognose, mit dem Bias \(b\) und der Steigung \(s\):
\[f = \mu + b + s\,(a-\mu) + \varepsilon, \qquad \varepsilon \sim N(0,\sigma_e^2)\ \text{(additiv)} \ \text{oder}\ \varepsilon \sim N\big(0,\sigma_e^2 a^2/\mu^2\big)\ \text{(proportional)}\]
Die Formeln
Pearson \(r\) und Lins Übereinstimmungskorrelation (Varianzen durch \(n\)). \(r\) misst, wie eng die Punkte \((a, f)\) an einer Geraden liegen; \(\rho_c\) misst, wie eng sie an der Linie \(f = a\) liegen, denn der Nenner enthält zusätzlich den Abstand der Mittelwerte. Der Zähler ist derselbe, deshalb ist \(\rho_c\) höchstens \(|r|\). Verschiebt oder streckt man die Prognose, bleibt \(r\) gleich; \(\rho_c\) und RMSE ändern sich.
\[r = \frac{\sigma_{fa}}{\sigma_f\,\sigma_a}, \qquad \rho_c = \frac{2\,\sigma_{fa}}{\sigma_f^2 + \sigma_a^2 + (\bar f - \bar a)^2}\]
Erwartung der CCC. Bei additivem Rauschen gilt \(\sigma_f^2 = s^2\sigma_a^2 + \sigma_e^2\) und \(\sigma_{fa} = s\,\sigma_a^2\), also
\[\rho_c = \frac{2\,s\,\sigma_a^2}{s^2\sigma_a^2 + \sigma_e^2 + \sigma_a^2 + b^2}\]
Der Bias geht quadratisch in den Nenner ein, die Steigung steht im Zähler und im Nenner, das Rauschen nur im Nenner. Ohne Bias und Rauschen und mit \(s = 1\) ist \(\rho_c = 1\).
Fehlermaße. Mit \(\operatorname{Var}(d) = (s-1)^2\sigma_a^2 + \sigma_e^2\) und der Differenz \(d = f - a\) gilt
\[\mathrm{RMSE}^2 = b^2 + \operatorname{Var}(d), \qquad \Pr(|d|\le T) = \Phi\!\Big(\frac{T-b}{\sqrt{\operatorname{Var}(d)}}\Big) - \Phi\!\Big(\frac{-T-b}{\sqrt{\operatorname{Var}(d)}}\Big)\]
Bei \(s = 1\) und additivem Rauschen hängt der RMSE nicht an \(\sigma_a\); bei \(s \ne 1\) geht \(\sigma_a\) über \((s-1)^2\sigma_a^2\) ein. Bei proportionalem Rauschen rechnet die Demo den Toleranzanteil und das MAE durch Gauß–Hermite-Integration über das Ist.
Bland–Altman. Die Grenzen sind \(\bar d \pm 1{,}96\, s_d\) mit der Standardabweichung \(s_d\) der Differenzen (Teiler \(n-1\)); bei normalen Differenzen liegen 5 % außerhalb. Das gilt nur, wenn die Streuung der Differenzen nicht vom Niveau abhängt.
Neukalibrierung durch Regression des Ist auf die Prognose, \(\hat a = \alpha + \beta f\) mit \(\beta = \sigma_{fa}/\sigma_f^2\). In der Stichprobe gilt für die neukalibrierte Prognose
\[\rho_c = \frac{2\,r^2}{1 + r^2}\]
Danach hängt die CCC nur noch von \(r\) ab: Bias und Steigungsfehler sind herausgerechnet, übrig bleibt der Rauschanteil.
Befunde
Alle Zahlen stammen aus der README der Demo (jede steht in deren Tests, tests/test_claims.py). Wenn nicht anders genannt, gilt: Ist \(\sim N(100, 20^2)\), Rauschen 4, Mittelwerte über alle Läufe einer Zelle des vorgerechneten Rasters (feste Zufalls-Seeds), in Klammern der exakt erwartete Wert.
| Frage | Befund |
|---|---|
| Sieht \(r\) eine falsche Skala? | Nein (n = 2 000 Wochen, 400 Läufe). Die Prognose \(f = 1{,}3 \cdot a\) (Bias 30, Steigung 1,3) hat das beste \(r\) der Tabelle (0,988; \(R^2\) 0,977) und zugleich den schlechtesten RMSE (30,85); Lins CCC ist 0,522 (erwartet 0,522). Innerhalb \(\pm 5\) liegen 0,0 % der Wochen, innerhalb \(\pm 10\) 0,3 %. |
| Und ein konstanter Bias? | Bei Bias +10 (n = 2 000, 400 Läufe) bleibt \(r\) bei 0,981, die CCC fällt von 0,980 (perfekte Prognose mit Rauschen 4) auf 0,873 (erwartet 0,873); RMSE 10,77, mittlere Abweichung 10,00. Innerhalb \(\pm 5\) liegen noch 10,5 % der Wochen (erwartet 10,6 %), innerhalb \(\pm 10\) 50,0 %. |
| Wann ist \(r\) nicht blind? | Bei nur Rauschen (Rauschen 20, Bias 0, Steigung 1; n = 2 000, 400 Läufe) wirkt der Fehler auf \(r\) und CCC fast gleich: \(r\) 0,707 (\(R^2\) 0,500), CCC 0,666 (erwartet 0,667). |
| Wie sicher ist die Zahl bei wenigen Wochen? | Streuung über 4 · 250 Läufe je Zelle. Falsche Skala 1,3: Die Streuung der CCC ist bei n = 20 Wochen 0,079 gegen 0,005 bei \(r\), bei n = 1 000 noch 0,012; ihr Mittel liegt bei n = 20 mit 0,500 unter dem erwarteten 0,522. Bias +10 bei n = 30: Streuung der CCC 0,036 gegen 0,008 bei \(r\). ICC(A,1) liegt bis auf 0,0125 (n = 20), 0,0025 (n = 100) und 0,0002 (n = 1 000) bei der CCC. |
| Hängt das Urteil an der Streuung des Ist? | Ja, für \(r\) und CCC (n = 1 000, 400 Läufe, Bias 0 oder +4). Bei gleichem Fehler (RMSE 4,00; innerhalb \(\pm 5\) 78,8 %) ist \(R^2\) 0,611 bei einer Streuung des Ist von 5 und 0,990 bei 40; mit Bias +4 steigt die CCC von 0,610 auf 0,990, während RMSE (5,66) und Toleranzanteil (58,5 %) gleich bleiben. Das gilt bei Steigung 1 und additivem Rauschen; bei Steigung 1,3 hängt auch der RMSE daran (30,30, 30,85 und 32,56 bei einer Streuung des Ist von 5, 20 und 40). |
| Was behebt die Neukalibrierung? | n = 400, angepasst an der ersten, bewertet an der zweiten Hälfte, 800 Läufe. Falsche Skala: CCC 0,518 → 0,988 (\(r\) 0,988), RMSE 30,86 → 3,06. Bias +10: CCC 0,871 → 0,980, RMSE 10,77 → 3,95. Nur Rauschen 20: CCC 0,661 → 0,658; der RMSE fällt trotzdem von 20,02 auf 14,20, weil die Regression zur Mitte schrumpft. |
| Wie viele Wochen braucht die Kalibrierung? | Falsche Skala 1,3, Training an der ersten Hälfte, solange die Beziehung gleich bleibt: bei 30 Wochen insgesamt (15 zum Anpassen) steigt die CCC im Mittel von 0,488 auf 0,983 (\(r\) 0,987), bei 60 Wochen von 0,508 auf 0,986, bei 400 Wochen von 0,518 auf 0,988. |
| Kehrt sich die Rangfolge zweier Prognosen um? | Ja, je nach Maß (n = 200, 1000 Läufe, dieselben Ist-Werte). A: Skala 1,3 mit Rauschen 4; B: unverzerrt mit Rauschen 10. \(r\): A 0,988, B 0,894, A besser in 100 % der Läufe. CCC: A 0,520, B 0,888, A besser in 0 %. RMSE: A 30,86, B 9,99; MAE: A 30,01, B 7,98 (jeweils A besser in 0 %). CCC, RMSE und MAE wählen also in 100 % der Läufe B, \(r\) wählt in 100 % A. |
| Wann passen Bland–Altman-Grenzen? | Nur bei gleichbleibendem Fehler (n = 2 000, 400 Läufe). Additives Rauschen 8: 5,0 % der Wochen außerhalb, im unteren wie im oberen Drittel des Ist je 5,0 %. Proportionaler Fehler (8 % des Ist): 5,4 % insgesamt, aber 1,3 % im unteren und 10,1 % im oberen Drittel. Steigung 1,3 mit additivem Rauschen 4: 7,4 % im unteren und im oberen Drittel, Steigung der Differenzen gegen das Mittel 0,274 gegen 0,078 bei additivem Rauschen 8. Ob ein Fehler tolerierbar ist, sagt das Diagramm nicht; das tut der Anteil innerhalb \(\pm T\). |
Die Rechnung ist mehrfach gegengeprüft: Pearson gegen numpy.corrcoef und scipy.stats.pearsonr, die CCC gegen die Schleifenfassung der Definition, die Neukalibrierung gegen numpy.polyfit, die exakten Formeln gegen Simulationen mit zwei Millionen Paaren und gegen numerische Integration. Die Mutationsprüfung des Kerns umfasst 125 Stellen; 117 fängt ein eigener Test, 5 sind als gleichwertig festgehalten.
Grenzen
- Normalverteiltes Ist und lineare Fehlerstruktur: Die exakten Formeln gelten für diese Welt. Echte Reihen haben Schiefe, Ausreißer und Stufen; ob die Richtung der Effekte bleibt, zeigt die Demo nicht. Alle Daten sind simuliert.
- Unabhängige Wochen: Reihen mit Trend und Gedächtnis machen \(r\) und CCC trügerisch hoch (Scheinkorrelation).
- Die Toleranz ist eine Setzung: Ob \(\pm 5\) genügt, hängt am Zweck der Prognose, nicht an den Daten.
- Punktprognosen: Intervall- und Wahrscheinlichkeitsprognosen und ihre Kalibrierung sind ein anderes Thema.
- Zwei Reihen, eine Messung je Woche: Mehrfachmessungen und Zufallseffekte-Modelle der Intraklassenkorrelation fehlen; ICC(A,1) steht nur als Gegenprobe.
- Lineare Neukalibrierung: Nichtlineare Fehler (Sättigung, Stufen) lassen sich so nicht beheben; Deming- und Passing–Bablok-Regression sind nicht gebaut. Die Kalibrierung trägt nur, solange die Beziehung zwischen Prognose und Ist gleich bleibt.
- Kein Konfidenzintervall der CCC: Die Streuung stammt aus dem Raster, nicht aus einer Formel.
- Prognose-Verfahren: Wie man eine bessere Prognose baut und Verfahren vergleicht, ist nicht Gegenstand der Demo.
Quellen
- Quelltext, Messreihen und Tests der Demo: github.com/sebastian-hanisch/uebereinstimmung-demo.
Die README und die Demo nennen keine Literaturangaben; die Formeln sind durch unabhängige Rechenwege (Tests gegen scipy, numpy, Schleifenfassungen und Simulationen) und die Messungen der Experimente gestützt. Lins Übereinstimmungskorrelation, das Bland–Altman-Diagramm und ICC(A,1) sind hier nur beim Namen genannt; Literatur dazu wurde für diese Seite nicht nachgeschlagen und deshalb nicht angegeben.