Regressão à média

Introdução à Regressão com statsmodels em Python

Maarten Van den Broeck

Content Developer at DataCamp

O conceito

  • Valor de resposta = valor ajustado + resíduo
  • "O que você explicou" + "o que não conseguiu explicar"
  • Resíduos existem devido a problemas no modelo e aleatoriedade fundamental
  • Casos extremos são frequentemente devido à aleatoriedade
  • Regressão à média significa que casos extremos não persistem ao longo do tempo
Introdução à Regressão com statsmodels em Python

Conjunto de dados pai e filho de Pearson

  • 1078 pares de pai/filho
  • Pais altos têm filhos altos?
father_height_cm son_height_cm
165.2 151.8
160.7 160.6
165.0 160.9
167.0 159.5
155.3 163.3
... ...
1 Adaptado de https://www.rdocumentation.org/packages/UsingR/topics/father.son
Introdução à Regressão com statsmodels em Python

Gráfico de dispersão

fig = plt.figure()
sns.scatterplot(x="father_height_cm",
                y="son_height_cm",
                data=father_son)
plt.axline(xy1=(150, 150),
           slope=1,
           linewidth=2,
           color="green")
plt.axis("equal")
plt.show()

Um gráfico de dispersão das alturas dos filhos versus as alturas dos pais, com uma linha onde o pai e o filho teriam a mesma altura. À medida que os pais ficam mais altos, os filhos também.

Introdução à Regressão com statsmodels em Python

Adicionando uma linha de regressão

fig = plt.figure()

sns.regplot(x="father_height_cm",
            y="son_height_cm",
            data=father_son,
            ci = None, 
            line_kws={"color": "black"})

plt.axline(xy1 = (150, 150),
           slope=1,
           linewidth=2,
           color="green")

plt.axis("equal")
plt.show()

O gráfico de dispersão das alturas dos filhos versus as alturas dos pais, anotado com uma linha de tendência linear. A linha de tendência é menos inclinada do que a linha onde pais e filhos teriam a mesma altura.

Introdução à Regressão com statsmodels em Python

Executando uma regressão

mdl_son_vs_father = ols("son_height_cm ~ father_height_cm",
                        data = father_son).fit()
print(mdl_son_vs_father.params)
Intercept           86.071975
father_height_cm     0.514093
dtype: float64
Introdução à Regressão com statsmodels em Python

Fazendo previsões

really_tall_father = pd.DataFrame(
  {"father_height_cm": [190]})

mdl_son_vs_father.predict(
  really_tall_father)
183.7
really_short_father = pd.DataFrame(
  {"father_height_cm": [150]})

mdl_son_vs_father.predict(
  really_short_father)
163.2
Introdução à Regressão com statsmodels em Python

Vamos praticar!

Introdução à Regressão com statsmodels em Python

Preparing Video For Download...