Regressão linear com inclinações paralelas

Regressão Intermediária com statsmodels em Python

Maarten Van den Broeck

Content Developer at DataCamp

O curso anterior

Este curso pressupõe conhecimento de Introdução à Regressão com statsmodels em Python

Regressão Intermediária com statsmodels em Python

Da regressão simples à múltipla

Regressão múltipla é um modelo de regressão com mais de uma variável explicativa.

Mais variáveis explicativas geram mais insight e melhores previsões.

Regressão Intermediária com statsmodels em Python

Conteúdo do curso

Capítulo 1

  • Regressão de "inclinações paralelas"

Capítulo 2

  • Interações
  • Paradoxo de Simpson

Capítulo 3

  • Mais variáveis explicativas
  • Como a regressão linear funciona

Capítulo 4

  • Regressão logística múltipla
  • A distribuição logística
  • Como a regressão logística funciona
Regressão Intermediária com statsmodels em Python

O conjunto de dados de peixes

mass_g length_cm species
242.0 23.2 Bream
5.9 7.5 Perch
200.0 30.0 Pike
40.0 12.9 Roach
  • Cada linha representa um peixe
  • mass_g é a variável resposta
  • 1 variável explicativa numérica e 1 categórica
Regressão Intermediária com statsmodels em Python

Uma variável explicativa por vez

from statsmodels.formula.api import ols

mdl_mass_vs_length = ols("mass_g ~ length_cm",
                         data=fish).fit()
print(mdl_mass_vs_length.params)
Intercept   -536.223947
length_cm     34.899245
dtype: float64
  • 1 coeficiente de intercepto
  • 1 coeficiente de inclinação
mdl_mass_vs_species = ols("mass_g ~ species + 0",
                          data=fish).fit()

print(mdl_mass_vs_species.params)
species[Bream]    617.828571
species[Perch]    382.239286
species[Pike]     718.705882
species[Roach]    152.050000
dtype: float64
  • 1 coeficiente de intercepto para cada categoria
Regressão Intermediária com statsmodels em Python

Ambas as variáveis ao mesmo tempo

mdl_mass_vs_both = ols("mass_g ~ length_cm + species + 0",
                       data=fish).fit()
print(mdl_mass_vs_both.params)
species[Bream]    -672.241866
species[Perch]    -713.292859
species[Pike]    -1089.456053
species[Roach]    -726.777799
length_cm           42.568554
dtype: float64
  • 1 coeficiente de inclinação
  • 1 coeficiente de intercepto para cada categoria
Regressão Intermediária com statsmodels em Python

Comparando coeficientes

print(mdl_mass_vs_length.params)
Intercept   -536.223947
length_cm     34.899245
print(mdl_mass_vs_both.params)
species[Bream]    -672.241866
species[Perch]    -713.292859
species[Pike]    -1089.456053
species[Roach]    -726.777799
length_cm           42.568554
print(mdl_mass_vs_species.params)
species[Bream]    617.828571
species[Perch]    382.239286
species[Pike]     718.705882
species[Roach]    152.050000
Regressão Intermediária com statsmodels em Python

Visualização: 1 variável explicativa numérica

import matplotlib.pyplot as plt
import seaborn as sns

sns.regplot(x="length_cm",
            y="mass_g",
            data=fish,
            ci=None)

plt.show()

Um diagrama de dispersão de massa vs. comprimento dos peixes, com linha de tendência linear

Regressão Intermediária com statsmodels em Python

Visualização: 1 variável explicativa categórica

sns.boxplot(x="species",
            y="mass_g",
            data=fish,
            showmeans=True)

Um boxplot da massa dos peixes por espécie

Regressão Intermediária com statsmodels em Python

Visualização: ambas as variáveis explicativas

coeffs = mdl_mass_vs_both.params
print(coeffs)
species[Bream]    -672.241866
species[Perch]    -713.292859
species[Pike]    -1089.456053
species[Roach]    -726.777799
length_cm           42.568554
ic_bream, ic_perch, ic_pike, ic_roach, sl = coeffs
sns.scatterplot(x="length_cm",
                y="mass_g",
                hue="species",
                data=fish)
plt.axline(xy1=(0, ic_bream), slope=sl, color="blue")
plt.axline(xy1=(0, ic_perch), slope=sl, color="green")
plt.axline(xy1=(0, ic_pike), slope=sl, color="red")
plt.axline(xy1=(0, ic_roach), slope=sl, color="orange")

Um modelo de inclinações paralelas de massa vs. comprimento dos peixes, categorizado por espécie

Regressão Intermediária com statsmodels em Python

Vamos praticar!

Regressão Intermediária com statsmodels em Python

Preparing Video For Download...