Simpsonův paradox

Intermediate Regression with statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Velmi záludný paradox!

Simpsonův paradox nastává, když se trend modelu na celém datasetu výrazně liší od trendů modelů na podmnožinách datasetu.

trend = koeficient sklonu

Intermediate Regression with statsmodels in Python

Syntetická data Simpsonova paradoxu

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 skupin dat, označených "A" až "E"
1 https://www.rdocumentation.org/packages/datasauRus/topics/simpsons_paradox
Intermediate Regression with statsmodels in Python

Lineární regrese

Celý dataset

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

print(mdl_whole.params)
Intercept           -38.554  
x                     1.751  

Podle skupin

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
Intermediate Regression with statsmodels in Python

Vizualizace celého datasetu

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

Bodový graf datasetu Simpsonova paradoxu, všechny skupiny dohromady. Trend je kladný.png

Intermediate Regression with statsmodels in Python

Vizualizace podle skupin

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

Bodový graf datasetu Simpsonova paradoxu, obarvený podle skupiny. Trend je nyní pro každou skupinu záporný.png

Intermediate Regression with statsmodels in Python

Jak sladit rozdíly

Dobrá rada

Pokud je to možné, zkuste dataset vizualizovat.

Obecná rada

Neexistuje univerzálně nejlepší model – záleží na datasetu a otázce, kterou chcete zodpovědět.

Další dobrá rada

Formulujte otázku dříve, než začnete modelovat.

Intermediate Regression with statsmodels in Python

Příklad: výsledky testů

scatter-video-games-whole.png

scatter-video-games-by-group.png

Intermediate Regression with statsmodels in Python

Příklad: infekční onemocnění

scatter-cities-whole.png

scatter-cities-by-group.png

Intermediate Regression with statsmodels in Python

Jak sladit rozdíly

  • Skupinový model obvykle (ne vždy) přináší více informací.
  • Nechybí vám některé vysvětlující proměnné?
  • Kontext je důležitý.
Intermediate Regression with statsmodels in Python

Simpsonův paradox v reálných datech

  • Paradox bývá méně zřejmý.
  • Může se projevit jako nulový sklon, nikoli jako úplná změna směru.
  • Nemusí se vyskytovat ve všech skupinách.
Intermediate Regression with statsmodels in Python

Pojďme si procvičit!

Intermediate Regression with statsmodels in Python

Preparing Video For Download...