Dos variables explicativas numéricas

Regresión intermedia con statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Visualizar tres variables numéricas

  • Diagrama de dispersión 3D
  • Dispersión 2D con respuesta como color
Regresión intermedia con statsmodels en Python

Otra columna para el conjunto de peces

species mass_g length_cm height_cm
Bream 1000 33.5 18.96
Bream 925 36.2 18.75
Roach 290 24.0 8.88
Roach 390 29.5 9.48
Perch 1100 39.0 12.80
Perch 1000 40.2 12.60
Pike 1250 52.0 10.69
Pike 1650 59.0 10.81
Regresión intermedia con statsmodels en Python

Diagrama de dispersión 3D

Diagrama de dispersión 3D de todas las especies, con longitud, masa y altura en los ejes. Es difícil interpretarlo en 2D.

Regresión intermedia con statsmodels en Python

Dispersión 2D, color para la respuesta

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

Modelado con dos variables explicativas numéricas

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

print(mdl_mass_vs_both.params)
Intercept   -622.150234
length_cm     28.968405
height_cm     26.334804
Regresión intermedia con statsmodels en Python

Flujo de predicción

from itertools import product

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)

p = product(length_cm, height_cm)

explanatory_data = pd.DataFrame(p,
                                columns=["length_cm",
                                         "height_cm"])
prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_both.predict(explanatory_data))
print(prediction_data)
     length_cm  height_cm       mass_g
0            5          2  -424.638603
1            5          4  -371.968995
2            5          6  -319.299387
3            5          8  -266.629780
4            5         10  -213.960172
..         ...        ...          ...
115         60         12  1431.971694
116         60         14  1484.641302
117         60         16  1537.310909
118         60         18  1589.980517
119         60         20  1642.650125

[120 rows x 3 columns]
Regresión intermedia con statsmodels en Python

Graficar las predicciones

sns.scatterplot(x="length_cm",
                y="height_cm",
                data=fish,
                hue="mass_g")
sns.scatterplot(x="length_cm",
                y="height_cm",
                data=prediction_data,
                hue="mass_g",
                legend=False,
                marker="s")
plt.show()

diagrama de dispersión de longitud, altura y masa de peces, con una cuadrícula de predicción.

Regresión intermedia con statsmodels en Python

Incluir una interacción

mdl_mass_vs_both_inter = ols("mass_g ~ length_cm * height_cm",
                             data=fish).fit()
print(mdl_mass_vs_both_inter.params)
Intercept              159.107480
length_cm                0.301426
height_cm              -78.125178
length_cm:height_cm      3.545435
Regresión intermedia con statsmodels en Python

Flujo de predicción con interacción

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)

p = product(length_cm, height_cm)

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

prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_both_inter.predict(explanatory_data))
Regresión intermedia con statsmodels en Python

Graficar las predicciones

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

sns.scatterplot(x="length_cm",
                y="height_cm",
                data=prediction_data,
                hue="mass_g",
                legend=False,
                marker="s")
plt.show()

diagrama de dispersión de longitud, altura y masa de peces, con un término de interacción en una cuadrícula de predicción.

Regresión intermedia con statsmodels en Python

¡Vamos a practicar!

Regresión intermedia con statsmodels en Python

Preparing Video For Download...