Paradoxo de Simpson

Regressão Intermediária com statsmodels em Python

Maarten Van den Broeck

Content Developer at DataCamp

Um paradoxo engenhoso!

O Paradoxo de Simpson ocorre quando a tendência de um modelo no conjunto de dados inteiro é bem diferente das tendências dos modelos nos subconjuntos.

tendência = coeficiente angular

Regressão Intermediária com statsmodels em Python

Dados sintéticos de Simpson

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 grupos de dados, rotulados de "A" a "E"
1 https://www.rdocumentation.org/packages/datasauRus/topics/simpsons_paradox
Regressão Intermediária com statsmodels em Python

Regressões lineares

Conjunto de dados inteiro

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

print(mdl_whole.params)
Intercept           -38.554  
x                     1.751  

Por grupo

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
Regressão Intermediária com statsmodels em Python

Plotando o conjunto inteiro

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

Dispersão do conjunto do Paradoxo de Simpson, todos os grupos juntos. A tendência é positiva.png

Regressão Intermediária com statsmodels em Python

Plotando por grupo

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

Dispersão do conjunto do Paradoxo de Simpson, colorido por grupo. A tendência agora é negativa em cada grupo.png

Regressão Intermediária com statsmodels em Python

Conciliando a diferença

Boas dicas

Se possível, tente plotar o conjunto de dados.

Dica comum

Você não escolhe o melhor modelo em geral – depende do conjunto e da pergunta que quer responder.

Mais uma boa dica

Defina a pergunta antes de começar a modelar.

Regressão Intermediária com statsmodels em Python

Exemplo de notas de teste

scatter-video-games-whole.png

scatter-video-games-by-group.png

Regressão Intermediária com statsmodels em Python

Exemplo de doença infecciosa

scatter-cities-whole.png

scatter-cities-by-group.png

Regressão Intermediária com statsmodels em Python

Conciliando a diferença

  • Geralmente (mas nem sempre) o modelo por grupo traz mais insight.
  • Estão faltando variáveis explicativas?
  • O contexto é importante.
Regressão Intermediária com statsmodels em Python

Paradoxo de Simpson em dados reais

  • O paradoxo costuma ser menos óbvio.
  • Você pode ver inclinação zero em vez de mudança total de direção.
  • Pode não aparecer em todos os grupos.
Regressão Intermediária com statsmodels em Python

Vamos praticar!

Regressão Intermediária com statsmodels em Python

Preparing Video For Download...