Korrelation und Ursache
Kurz gesagt: Korrelation zeigt, dass zwei Dinge sich gemeinsam bewegen, nicht dass das eine das andere verursacht; eine dritte Ursache oder das Simpson-Paradoxon kann die Schlussfolgerung umdrehen.
Problem
„Das Banner hebt die Bestellungen“
Das Marketing hat ein Banner „Kostenlose Lieferung“ aufgehängt. Es war kein Test: Das Banner wurde nach jemandes Ermessen gezeigt. Das Log hat 10.000 Besuche: das Gerät, ob das Banner gesehen wurde (saw_banner), ob es eine Bestellung gab:
Mit dem Banner bestellen 5,66 % der Besuche, ohne es 3,63 %. Das Marketing will es allen zeigen: Der Abstand beträgt 2 Punkte, und mit dem Banner gibt es 56 % mehr Bestellungen.
Aber verursacht das Banner das?
Die Idee
Wer hat das Banner gesehen?
Bevor du dem Abstand traust, schau, wer in jeder Gruppe ist:
Von 3.000 Besuchen von einem Desktop haben 2.400 das Banner gesehen. Von 7.000 vom Handy nur 1.400. Und Desktops bestellen ohnehin öfter: 7,70 % gegenüber 2,99 %.
Die Gruppe „mit Banner“ ist voller Desktops, die Gruppe „ohne Banner“ voller Handys. Du vergleichst also nicht Banner mit keinem Banner, sondern vor allem Desktop mit Handy. Das Gerät ist ein Störfaktor (Confounder): Es beeinflusst sowohl, wer das Banner sieht, als auch, wer bestellt.
Die Idee
Nach Gerät aufteilen
Vergleiche das Banner innerhalb jedes Geräts. Dann ist das Gerät auf beiden Seiten dasselbe:
Auf dem Desktop bestellen 7,50 % mit dem Banner, 8,50 % ohne. Auf dem Handy 2,50 % gegenüber 3,11 %. Das Banner schneidet auf beiden Geräten schlechter ab, während es insgesamt besser aussah. Das heißt Simpson-Paradoxon: Die Richtung für alle zusammen ist das Gegenteil der Richtung in jeder Gruppe.
Genauer, für Neugierige
Auf jedem Gerät für sich liegt der Unterschied im Rauschen: 600 Desktop-Besuche ohne das Banner sind wenige.
Die ehrliche Schlussfolgerung lautet also nicht „das Banner schadet“, sondern „es gibt keinen Beleg dafür, dass das Banner hilft“. Die entgegengesetzte Richtung insgesamt kommt ganz aus der Mischung der Geräte.
Probier es aus
Das Paradoxon berechnen
Speichere in gap die Differenz der Konversion mit Banner − ohne Banner für jedes Gerät, in Punkten, und in overall_gap dieselbe Differenz für alle Besuche zusammen.
Lösung
import pandas as pd
banner = pd.read_csv('banner_visits.csv')
rates = banner.pivot_table(index='device', columns='saw_banner', values='ordered', aggfunc='mean') * 100
gap = rates[1] - rates[0]
overall = banner.groupby('saw_banner')['ordered'].mean() * 100
overall_gap = overall[1] - overall[0]
print(gap.round(2))
print(round(overall_gap, 2))rates[1] - rates[0] aus der Tabelle Gerät × Banner gibt −1,00 Punkte auf dem Desktop und −0,61 auf dem Handy. Für alle Besuche zusammen ist die Differenz +2,03 Punkte. Beide Gerätezahlen sind negativ, die Gesamtzahl ist positiv. Teilst du nach Banner ohne das Gerät, siehst du nur +2,03.
Die Idee
Warum die Summe kippt
Die Gesamtkonversion einer Gruppe ist ein Durchschnitt der Geräte, gewichtet danach, wie viele Besuche von jedem Gerät in der Gruppe sind:
Mit dem Banner kommen 63 % der Besuche von einem Desktop, ohne es nur 10 %. Die Bannergruppe bekommt also viel von der hohen Konversion der Desktops: (180 + 35) Bestellungen aus 3.800 Besuchen sind 5,66 %. Die Gruppe ohne das Banner besteht fast nur aus Handys: (51 + 174) aus 6.200 sind 3,63 %.
Der Gesamtabstand kommt nicht vom Banner. Er kommt davon, wo das Banner gezeigt wurde: dort, wo die Leute ohnehin mehr bestellen.
Die Idee
Korrelation: corr
Derselbe Fehler lauert in den Zahlen für das Jahr. Hier sind die verkauften Stück pro Woche: Getränke (Mineralwasser und Orangensaft) und Gemüse (Tomaten und Gurken). Wie sehr gehen sie zusammen?
Die Korrelation ist eine Zahl von −1 bis 1. Nah an 1: Ist das eine groß, ist auch das andere groß, und die Punkte liegen um eine ansteigende Linie. Um 0: Es gibt keinen solchen Zusammenhang. Nah an −1: Das eine wächst, das andere fällt. a.corr(b) berechnet sie, und df.corr() gibt alle Spaltenpaare auf einmal.
Hier ist sie 0,46: In den Wochen mit mehr Gemüse werden auch mehr Getränke verkauft. Heißt das, Gemüse verkauft Getränke?
Die Idee
Das dritte Ding: die Jahreszeit
Teile die Wochen in Sommer (Juni bis August) und den Rest:
Im Sommer werden im Mittel 121,6 Getränke und 68,2 Gemüse pro Woche verkauft, in der übrigen Zeit 81,5 und 38,5. Der Sommer hebt beides. Innerhalb des Sommers ist die Korrelation aber −0,13, und in den anderen Wochen −0,15: etwa null. Der Zusammenhang kommt von der Jahreszeit, nicht vom Gemüse.
Die Idee
Warum der A/B-Test anders ist
In der vorigen Lektion war der neue Warenkorb besser, und das war eine Ursache, nicht nur ein Zusammenhang. Der Unterschied zum Banner ist eine Sache: wer entscheidet, wer was sieht.
- Im A/B-Test entscheidet der Zufall. In beiden Gruppen waren Desktops 35 %. Alles, was du nicht misst, ist ebenfalls gleichmäßig verteilt.
- Beim Banner entscheidet jemand. Er zeigt es vor allem auf dem Desktop, und die Gruppen unterscheiden sich im Gerät und vielleicht in anderen Dingen, die nicht in der Tabelle stehen.
Das Aufteilen nach Gerät behebt nur den Faktor, den du kennst und aufgezeichnet hast. Die zufällige Zuweisung behebt auch die, die du nicht kennst. Darum machst du einen Test, wenn du kannst.
Die Idee
Wie du es ehrlich sagst
Daten, die nur gesammelt wurden und nicht aus einem Test stammen, heißen Beobachtungsdaten. Aus ihnen kannst du sagen „sie gehen zusammen“, nicht „das eine führt zum anderen“. Vergleiche:
- „Das Banner hebt die Bestellungen um 2 Punkte.“ Das ist eine Behauptung über eine Ursache, die die Daten nicht hergeben.
- „Besuche mit dem Banner bestellen öfter, aber vor allem, weil sie von einem Desktop kommen. Auf jedem Gerät für sich hilft das Banner nicht. Um das zu beantworten, brauchen wir einen A/B-Test.“
Bevor du einem Unterschied in Beobachtungsdaten traust, frag:
- Wer landet in welcher Gruppe, und warum?
- Gibt es ein drittes Ding (Gerät, Jahreszeit, Kundentyp), das beides bewegt?
- Kippt der Unterschied, wenn du danach aufteilst?
Übung
Ein fairer Vergleich
Vergleiche das Banner fair: Wie hoch ist die Konversion mit und ohne Banner, wenn beide Gruppen die Gerätemischung aller Besuche hätten? Speichere in desktop_share den Anteil der Desktops an allen Besuchen und in with_banner und without_banner die gewichteten Konversionen in Prozent.
Lösung
import pandas as pd
banner = pd.read_csv('banner_visits.csv')
rates = banner.pivot_table(index='device', columns='saw_banner', values='ordered', aggfunc='mean') * 100
desktop_share = (banner['device'] == 'desktop').mean()
with_banner = desktop_share * rates.loc['desktop', 1] + (1 - desktop_share) * rates.loc['mobile', 1]
without_banner = desktop_share * rates.loc['desktop', 0] + (1 - desktop_share) * rates.loc['mobile', 0]
print(round(desktop_share, 2), round(with_banner, 2), round(without_banner, 2))Desktops sind 30 % aller Besuche. Mit dem Banner: 0,3 × 7,5 + 0,7 × 2,5 = 4,00 %. Ohne das Banner: 0,3 × 8,5 + 0,7 × 3,11 ≈ 4,72 %. Bei gleicher Mischung schneidet das Banner schlechter ab, nicht besser. Die Mittelwerte von groupby('saw_banner') geben 5,66 % und 3,63 %, weil jede Gruppe ihre eigene Mischung hat.
Die Geschenkkarte und die Pfanne verkaufen sich zusammen: Wochen mit vielen Karten haben auch viele Pfannen. Speichere in overall ihre Korrelation über alle Wochen und in outside die Korrelation ohne die Feiertagswochen (die Maske holidays: vom 1. Dezember bis 4. Januar).
Lösung
import pandas as pd
orders = pd.read_csv('year_orders.csv', parse_dates=['ordered_at'])
items = pd.read_csv('year_items.csv')
sold = orders[orders['status'] != 'cancelled']
items = items.merge(sold[['id', 'ordered_at']], left_on='order_id', right_on='id').set_index('ordered_at')
gift = items[items['product_id'] == 25]['quantity'].resample('W').sum()
pan = items[items['product_id'] == 22]['quantity'].resample('W').sum()
weekly = pd.DataFrame({'gift': gift, 'pan': pan}).fillna(0).iloc[1:-1]
holidays = (weekly.index >= '2025-12-01') & (weekly.index <= '2026-01-04')
overall = weekly['gift'].corr(weekly['pan'])
outside = weekly[~holidays]['gift'].corr(weekly[~holidays]['pan'])
print(round(overall, 2), round(outside, 2))Über alle Wochen ist die Korrelation 0,77. Ohne die fünf Feiertagswochen ist sie −0,02: nichts. Die Karte verkauft keine Pfannen, und die Pfanne verkauft keine Karten. Weihnachten hebt beides: In den Feiertagswochen werden im Mittel 21,6 Karten und 11,2 Pfannen pro Woche verkauft, in den anderen 1,7 und 2,7.
Test
Teste dich
Verwandte Lektionen
Abschnitt „Verwandte Lektionen“- Baut auf: Das erste Diagramm · Verteilungen · Eine Hypothese testen · A/B-Test
- Geht weiter in: Lineare Regression · Warum ist der Umsatz gefallen?
- Aufgaben zum Thema: Statistik für Entscheidungen