Lineární regrese s rovnoběžnými přímkami

Intermediate Regression with statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Předchozí kurz

Intermediate Regression with statsmodels in Python

Od jednoduché k vícenásobné regresi

Vícenásobná regrese je regresní model s více než jednou vysvětlující proměnnou.

Více vysvětlujících proměnných přináší hlubší vhled a lepší predikce.

Intermediate Regression with statsmodels in Python

Obsah kurzu

Kapitola 1

  • Regrese s „rovnoběžnými přímkami"

Kapitola 2

  • Interakce
  • Simpsonův paradox

Kapitola 3

  • Více vysvětlujících proměnných
  • Jak funguje lineární regrese

Kapitola 4

  • Vícenásobná logistická regrese
  • Logistické rozdělení
  • Jak funguje logistická regrese
Intermediate Regression with statsmodels in Python

Dataset ryb

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
  • Každý řádek představuje jednu rybu
  • mass_g je závislá proměnná
  • 1 numerická, 1 kategorická vysvětlující proměnná
Intermediate Regression with statsmodels in Python

Jedna vysvětlující proměnná najednou

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 koeficient intercepce
  • 1 koeficient sklonu
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 koeficient intercepce pro každou kategorii
Intermediate Regression with statsmodels in Python

Obě proměnné najednou

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 koeficient sklonu
  • 1 koeficient intercepce pro každou kategorii
Intermediate Regression with statsmodels in Python

Porovnání koeficientů

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
Intermediate Regression with statsmodels in Python

Vizualizace: 1 numerická vysvětlující proměnná

import matplotlib.pyplot as plt
import seaborn as sns

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

plt.show()

Bodový graf hmotnosti ryb vs. délky s lineární trendovou přímkou

Intermediate Regression with statsmodels in Python

Vizualizace: 1 kategorická vysvětlující proměnná

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

Krabicový graf hmotnosti ryb pro každý druh

Intermediate Regression with statsmodels in Python

Vizualizace: obě vysvětlující proměnné

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

Model s rovnoběžnými přímkami pro hmotnost ryb vs. délku, rozlišený podle druhu

Intermediate Regression with statsmodels in Python

Pojďme procvičovat!

Intermediate Regression with statsmodels in Python

Preparing Video For Download...