Mai mult de două variabile explicative

Regresie intermediară cu statsmodels în Python

Maarten Van den Broeck

Content Developer at DataCamp

Recapitulare

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

Diagramă de dispersie 2D, cu masa colorată pentru a vizualiza o a treia variabilă numerică.

Regresie intermediară cu statsmodels în Python

Facetare pe specii

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()

Diagramă de dispersie cu înălțimea, lungimea și masa peștilor, facetată pe specii. Culoarea mai deschisă indică pești mai grei.

Regresie intermediară cu statsmodels în Python

Facetare pe specii

  • Este posibilă utilizarea mai multor variabile categoriale pentru facetare
  • Evitați utilizarea excesivă a facetării
  • Vizualizarea devine mai dificilă pe măsură ce crește numărul de variabile

Diagramă de dispersie cu înălțimea, lungimea și masa peștilor, facetată pe specii. Culoarea mai deschisă indică pești mai grei.

Regresie intermediară cu statsmodels în Python

Niveluri diferite de interacțiune

Fără interacțiuni

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

interacțiuni de ordinul doi între perechi de variabile

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

interacțiune de ordinul trei între toate trei variabilele

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()
Regresie intermediară cu statsmodels în Python

Toate interacțiunile

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()

echivalent cu

ols(
  "mass_g ~ length_cm * height_cm * species + 0", 
  data=fish).fit()
Regresie intermediară cu statsmodels în Python

Doar interacțiuni de ordinul doi

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

echivalent cu

ols(
  "mass_g ~ (length_cm + height_cm + species) ** 2 + 0", 
  data=fish).fit()
Regresie intermediară cu statsmodels în Python

Fluxul de predicție

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]
Regresie intermediară cu statsmodels în Python

Să exersăm!

Regresie intermediară cu statsmodels în Python

Preparing Video For Download...