Más de dos variables explicativas

Regresión intermedia con statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

De la clase anterior

sns.scatterplot(x="length_cm", 
                y="height_cm",
                data=fish,
                hue="mass_g")

Diagrama de dispersión 2D, con la masa en color para visualizar una tercera variable numérica.

Regresión intermedia con statsmodels en Python

Facetado por especie

grid = sns.FacetGrid(data=fish,

col="species",
hue="mass_g", col_wrap=2,
palette="plasma")
grid.map(sns.scatterplot,
         "length_cm",
         "height_cm")
plt.show()

Dispersión de altura, longitud y masa de peces, facetado por especie. Más brillante significa más pesado.

Regresión intermedia con statsmodels en Python

Facetado por especie

  • Se puede usar más de una variable categórica para facetar
  • Ojo con el uso excesivo del facetado
  • Graficar se complica al aumentar el número de variables

Dispersión de altura, longitud y masa de peces, facetado por especie. Más brillante significa más pesado.

Regresión intermedia con statsmodels en Python

Niveles de interacción

Sin interacciones

ols("mass_g ~ length_cm + height_cm + species + 0", data=fish).fit()

interacciones de dos vías entre pares de variables

ols(
  "mass_g ~ length_cm + height_cm + species +
  length_cm:height_cm + length_cm:species + height_cm:species + 0", data=fish).fit()

interacción de tres vías entre las tres variables

ols(
  "mass_g ~ length_cm + height_cm + species + 
  length_cm:height_cm + length_cm:species + height_cm:species + length_cm:height_cm:species + 0", data=fish).fit()
Regresión intermedia con statsmodels en Python

Todas las interacciones

ols(
  "mass_g ~ length_cm + height_cm + species + 
  length_cm:height_cm + length_cm:species + height_cm:species + length_cm:height_cm:species + 0", 
  data=fish).fit()

es lo mismo que

ols(
  "mass_g ~ length_cm * height_cm * species + 0", 
  data=fish).fit()
Regresión intermedia con statsmodels en Python

Solo interacciones de dos vías

ols(
  "mass_g ~ length_cm + height_cm + species + 
  length_cm:height_cm + length_cm:species + height_cm:species + 0", 
  data=fish).fit()

es lo mismo que

ols(
  "mass_g ~ (length_cm + height_cm + species) ** 2 + 0", 
  data=fish).fit()
Regresión intermedia con statsmodels en Python

Flujo de predicción

mdl_mass_vs_all = ols(
  "mass_g ~ length_cm * height_cm * species + 0",
  data=fish).fit()

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)
species = fish["species"].unique()

p = product(length_cm, height_cm, species)

explanatory_data = pd.DataFrame(p,
                                columns=["length_cm",
                                         "height_cm",
                                         "species"])

prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_all.predict(explanatory_data))

print(prediction_data)
     length_cm  height_cm species       mass_g
0            5          2   Bream  -570.656437
1            5          2   Roach    31.449145
2            5          2   Perch    43.789984
3            5          2    Pike   271.270093
4            5          4   Bream  -451.127405
..         ...        ...     ...          ...
475         60         18    Pike  2690.346384
476         60         20   Bream  1531.618475
477         60         20   Roach  2621.797668
478         60         20   Perch  3041.931709
479         60         20    Pike  2926.352397

[480 rows x 4 columns]
Regresión intermedia con statsmodels en Python

¡Vamos a practicar!

Regresión intermedia con statsmodels en Python

Preparing Video For Download...