Paradox van Simpson

Gemiddelde regressie met statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Een zeer slimme paradox!

De paradox van Simpson treedt op wanneer de trend van een model op de hele dataset sterk verschilt van de trends van modellen op subsets van de data.

trend = hellingscoëfficiënt

Gemiddelde regressie met statsmodels in Python

Synthetische Simpson-data

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 datagroepen, gelabeld "A" t/m "E"
1 https://www.rdocumentation.org/packages/datasauRus/topics/simpsons_paradox
Gemiddelde regressie met statsmodels in Python

Lineaire regressies

Hele dataset

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

print(mdl_whole.params)
Intercept           -38.554  
x                     1.751  

Per groep

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
Gemiddelde regressie met statsmodels in Python

Hele dataset plotten

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

Spreidingsdiagram van de Simpson-dataset, alle groepen samen. De trend is positief.png

Gemiddelde regressie met statsmodels in Python

Plotten per groep

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

Spreidingsdiagram van de Simpson-dataset, gekleurd per groep. De trend is nu per groep negatief.png

Gemiddelde regressie met statsmodels in Python

Het verschil verklaren

Goede tip

Plot de dataset als het kan.

Veelgehoorde tip

Er is geen algemeen beste model – het hangt af van de dataset en je vraag.

Nog een goede tip

Formuleer je vraag vóór je modelleert.

Gemiddelde regressie met statsmodels in Python

Voorbeeld: toetscijfers

scatter-video-games-whole.png

scatter-video-games-by-group.png

Gemiddelde regressie met statsmodels in Python

Voorbeeld: infectieziekten

scatter-cities-whole.png

scatter-cities-by-group.png

Gemiddelde regressie met statsmodels in Python

Het verschil verklaren

  • Meestal (niet altijd) geeft het gegroepeerde model meer inzicht.
  • Mis je verklarende variabelen?
  • Context is belangrijk.
Gemiddelde regressie met statsmodels in Python

Paradox van Simpson in echte datasets

  • De paradox is meestal subtieler.
  • Je ziet soms een helling van nul i.p.v. een volledige omkering.
  • Hij verschijnt niet in elke groep.
Gemiddelde regressie met statsmodels in Python

Laten we oefenen!

Gemiddelde regressie met statsmodels in Python

Preparing Video For Download...