Le paradoxe de Simpson

Régression intermédiaire avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Un paradoxe des plus ingénieux !

Le paradoxe de Simpson survient quand la tendance d'un modèle sur l'ensemble des données diffère fortement de celles des modèles appliqués à des sous-ensembles.

tendance = coefficient de pente

Régression intermédiaire avec statsmodels en Python

Données synthétiques de Simpson

x y groupe
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 groupes de données, étiquetés « A » à « E »
1 https://www.rdocumentation.org/packages/datasauRus/topics/simpsons_paradox
Régression intermédiaire avec statsmodels en Python

Régressions linéaires

Ensemble complet

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

print(mdl_whole.params)
Intercept           -38.554  
x                     1.751  

Par groupe

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
Régression intermédiaire avec statsmodels en Python

Tracer l'ensemble des données

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

Nuage de points du jeu de données sur le paradoxe de Simpson, tous groupes confondus. La tendance est positive.png

Régression intermédiaire avec statsmodels en Python

Tracer par groupe

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

Nuage de points du jeu de données sur le paradoxe de Simpson, coloré par groupe. La tendance est maintenant négative pour chaque groupe.png

Régression intermédiaire avec statsmodels en Python

Réconcilier la différence

Bon conseil

Si possible, tracez le jeu de données.

Conseil général

On ne peut pas choisir un « meilleur » modèle en soi : cela dépend des données et de la question que vous voulez traiter.

Autre bon conseil

Formulez la question avant de modéliser.

Régression intermédiaire avec statsmodels en Python

Exemple de notes de test

scatter-video-games-whole.png

scatter-video-games-by-group.png

Régression intermédiaire avec statsmodels en Python

Exemple de maladie infectieuse

scatter-cities-whole.png

scatter-cities-by-group.png

Régression intermédiaire avec statsmodels en Python

Réconcilier la différence

  • Le modèle par groupes est généralement (mais pas toujours) plus informatif.
  • Manquez-vous de variables explicatives ?
  • Le contexte compte.
Régression intermédiaire avec statsmodels en Python

Paradoxe de Simpson sur des données réelles

  • Le paradoxe est souvent moins évident.
  • Vous pouvez observer une pente nulle plutôt qu'un renversement complet.
  • Il peut ne pas apparaître dans chaque groupe.
Régression intermédiaire avec statsmodels en Python

Passons à la pratique !

Régression intermédiaire avec statsmodels en Python

Preparing Video For Download...