Regresión lineal de pendientes paralelas

Regresión intermedia con statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

El curso previo

Este curso asume conocimientos de Introduction to Regression with statsmodels in Python

Regresión intermedia con statsmodels en Python

De regresión simple a múltiple

La regresión múltiple es un modelo con más de una variable explicativa.

Más variables explicativas dan más insight y mejores predicciones.

Regresión intermedia con statsmodels en Python

Contenido del curso

Capítulo 1

  • Regresión de «pendientes paralelas»

Capítulo 2

  • Interacciones
  • La paradoja de Simpson

Capítulo 3

  • Más variables explicativas
  • Cómo funciona la regresión lineal

Capítulo 4

  • Regresión logística múltiple
  • La distribución logística
  • Cómo funciona la regresión logística
Regresión intermedia con statsmodels en Python

El dataset de peces

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 fila es un pez
  • mass_g es la variable respuesta
  • 1 numérica y 1 categórica como explicativas
Regresión intermedia con statsmodels en Python

Una variable explicativa a la 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 pendiente
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 por categoría
Regresión intermedia con statsmodels en Python

Ambas variables a la vez

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 pendiente
  • 1 coeficiente de intercepto por categoría
Regresión intermedia con statsmodels en 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
Regresión intermedia con statsmodels en Python

Visualización: 1 variable 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()

Diagrama de dispersión de masa vs. longitud de peces, con línea de tendencia lineal

Regresión intermedia con statsmodels en Python

Visualización: 1 variable explicativa categórica

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

Diagrama de cajas de la masa por especie

Regresión intermedia con statsmodels en Python

Visualización: ambas variables 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")

Modelo de pendientes paralelas de masa vs. longitud, categorizado por especie

Regresión intermedia con statsmodels en Python

¡Vamos a practicar!

Regresión intermedia con statsmodels en Python

Preparing Video For Download...