Simpsons Paradox

Fortgeschrittene Regression mit statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

A most ingenious paradox!

Simpsons Paradox tritt auf, wenn der Trend eines Modells auf dem gesamten Datensatz stark von den Trends der Modelle auf Teilmengen abweicht.

trend = Steigungskoeffizient

Fortgeschrittene Regression mit statsmodels in Python

Synthetische Simpson-Daten

x y group
62.24344 70.60840 D
52.33499 14.70577 B
56.36795 46.39554 C
66.80395 66.17487 D
66.53605 89.24658 E
62.38129 91.45260 E
  • 5 Datengruppen, beschriftet „A" bis „E"
1 https://www.rdocumentation.org/packages/datasauRus/topics/simpsons_paradox
Fortgeschrittene Regression mit statsmodels in Python

Lineare Regressionen

Gesamter Datensatz

mdl_whole = ols("y ~ x", 
                 data=simpsons_paradox).fit()

print(mdl_whole.params)
Intercept           -38.554  
x                     1.751  

Nach Gruppe

mdl_by_group = ols("y ~ group + group:x + 0",
                   data = simpsons_paradox).fit()

print(mdl_by_group.params)
  groupA    groupB    groupC    groupD    groupE  
 32.5051   67.3886   99.6333  132.3932  123.8242  
groupA:x  groupB:x  groupC:x  groupD:x  groupE:x  
 -0.6266   -1.0105   -0.9940   -0.9908   -0.5364
Fortgeschrittene Regression mit statsmodels in Python

Gesamten Datensatz plotten

sns.regplot(x="x",
            y="y",
            data=simpsons_paradox,
            ci=None)

Streudiagramm des Simpson-Paradox-Datensatzes, alle Gruppen kombiniert. Der Trend ist positiv.png

Fortgeschrittene Regression mit statsmodels in Python

Nach Gruppe plotten

sns.lmplot(x="x",
           y="y",
           data=simpsons_paradox,
           hue="group",
           ci=None)

Streudiagramm des Simpson-Paradox-Datensatzes, nach Gruppe eingefärbt. Der Trend ist nun in jeder Gruppe negativ.png

Fortgeschrittene Regression mit statsmodels in Python

Den Unterschied auflösen

Guter Rat

Wenn möglich, plote den Datensatz.

Allgemeiner Rat

Du kannst nicht generell das beste Modell wählen – es hängt vom Datensatz und der Frage ab, die du beantworten willst.

Noch ein guter Rat

Formuliere eine Frage, bevor du mit dem Modellieren startest.

Fortgeschrittene Regression mit statsmodels in Python

Beispiel Testergebnisse

scatter-video-games-whole.png

scatter-video-games-by-group.png

Fortgeschrittene Regression mit statsmodels in Python

Beispiel Infektionskrankheiten

scatter-cities-whole.png

scatter-cities-by-group.png

Fortgeschrittene Regression mit statsmodels in Python

Den Unterschied auflösen

  • Meist (aber nicht immer) liefert das gruppierte Modell mehr Einsicht.
  • Fehlen dir erklärende Variablen?
  • Kontext ist wichtig.
Fortgeschrittene Regression mit statsmodels in Python

Simpsons Paradox in realen Datensätzen

  • Das Paradox ist meist weniger offensichtlich.
  • Du siehst eher eine Nulllinie als einen kompletten Richtungswechsel.
  • Es zeigt sich nicht in jeder Gruppe.
Fortgeschrittene Regression mit statsmodels in Python

Lass uns üben!

Fortgeschrittene Regression mit statsmodels in Python

Preparing Video For Download...