Paradoks Simpsona

Regresja średnio zaawansowana ze statsmodels w Pythonie

Maarten Van den Broeck

Content Developer at DataCamp

Niezwykły paradoks!

Paradoks Simpsona zachodzi, gdy trend modelu na całym zbiorze danych różni się znacząco od trendów obserwowanych w podzbiorach.

trend = współczynnik nachylenia

Regresja średnio zaawansowana ze statsmodels w Pythonie

Syntetyczne dane Simpsona

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 grup danych, oznaczonych od „A" do „E"
1 https://www.rdocumentation.org/packages/datasauRus/topics/simpsons_paradox
Regresja średnio zaawansowana ze statsmodels w Pythonie

Regresje liniowe

Cały zbiór danych

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

print(mdl_whole.params)
Intercept           -38.554  
x                     1.751  

Według grup

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
Regresja średnio zaawansowana ze statsmodels w Pythonie

Wykres całego zbioru danych

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

Wykres punktowy zbioru danych paradoksu Simpsona, wszystkie grupy łącznie. Trend jest dodatni.png

Regresja średnio zaawansowana ze statsmodels w Pythonie

Wykres według grup

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

Wykres punktowy zbioru danych paradoksu Simpsona, z podziałem na grupy. Trend jest teraz ujemny dla każdej grupy.png

Regresja średnio zaawansowana ze statsmodels w Pythonie

Jak pogodzić różnice

Dobra rada

Jeśli to możliwe, należy zwizualizować zbiór danych.

Częsta rada

Nie ma jednego najlepszego modelu – wybór zależy od zbioru danych i pytania badawczego.

Jeszcze lepsza rada

Przed modelowaniem należy precyzyjnie sformułować pytanie.

Regresja średnio zaawansowana ze statsmodels w Pythonie

Przykład: wyniki testów

scatter-video-games-whole.png

scatter-video-games-by-group.png

Regresja średnio zaawansowana ze statsmodels w Pythonie

Przykład: choroba zakaźna

scatter-cities-whole.png

scatter-cities-by-group.png

Regresja średnio zaawansowana ze statsmodels w Pythonie

Jak pogodzić różnice

  • Zazwyczaj (choć nie zawsze) model grupowy dostarcza więcej informacji.
  • Czy brakuje zmiennych objaśniających?
  • Kontekst ma znaczenie.
Regresja średnio zaawansowana ze statsmodels w Pythonie

Paradoks Simpsona w rzeczywistych danych

  • Paradoks jest zazwyczaj mniej oczywisty.
  • Zamiast pełnej zmiany kierunku można zaobserwować zerowe nachylenie.
  • Może nie występować w każdej grupie.
Regresja średnio zaawansowana ze statsmodels w Pythonie

Czas na ćwiczenia!

Regresja średnio zaawansowana ze statsmodels w Pythonie

Preparing Video For Download...