Simpsons paradox

Intermediär regression med statsmodels i Python

Maarten Van den Broeck

Content Developer at DataCamp

Ett högst fascinerande paradox!

Simpsons paradox uppstår när trenden för en modell på hela datamängden skiljer sig markant från trenderna i modeller på delmängder av data.

trend = lutningskoefficient

Intermediär regression med statsmodels i Python

Syntetiska Simpsondata

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 grupper, märkta "A" till "E"
1 https://www.rdocumentation.org/packages/datasauRus/topics/simpsons_paradox
Intermediär regression med statsmodels i Python

Linjära regressioner

Hela datamängden

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

print(mdl_whole.params)
Intercept           -38.554  
x                     1.751  

Per grupp

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
Intermediär regression med statsmodels i Python

Plotta hela datamängden

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

Spridningsdiagram över Simpsons paradox-datamängden, alla grupper samlade. Trenden är positiv.

Intermediär regression med statsmodels i Python

Plotta per grupp

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

Spridningsdiagram över Simpsons paradox-datamängden, färgkodad per grupp. Trenden är nu negativ för varje grupp.

Intermediär regression med statsmodels i Python

Att hantera skillnaden

Bra råd

Plotta datamängden om möjligt.

Allmänt råd

Det finns ingen generellt bästa modell – det beror på datamängden och frågan du försöker besvara.

Ytterligare ett bra råd

Formulera en fråga innan du börjar modellera.

Intermediär regression med statsmodels i Python

Exempel: testresultat

scatter-video-games-whole.png

scatter-video-games-by-group.png

Intermediär regression med statsmodels i Python

Exempel: smittsam sjukdom

scatter-cities-whole.png

scatter-cities-by-group.png

Intermediär regression med statsmodels i Python

Att hantera skillnaden

  • Vanligtvis (men inte alltid) ger den grupperade modellen mer insikt.
  • Saknar du förklarande variabler?
  • Kontexten spelar roll.
Intermediär regression med statsmodels i Python

Simpsons paradox i verkliga datamängder

  • Paradoxen är oftast mindre uppenbar.
  • Du kan se en nollutning snarare än en fullständig riktningsändring.
  • Den behöver inte uppträda i varje grupp.
Intermediär regression med statsmodels i Python

Nu kör vi en övning!

Intermediär regression med statsmodels i Python

Preparing Video For Download...