Lineaire regressie met parallelle hellingen

Gemiddelde regressie met statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

De vorige cursus

Gemiddelde regressie met statsmodels in Python

Van simpele naar meervoudige regressie

Meervoudige regressie is een regressiemodel met meer dan één verklarende variabele.

Meer verklarende variabelen geven meer inzicht en betere voorspellingen.

Gemiddelde regressie met statsmodels in Python

Cursusinhoud

Hoofdstuk 1

  • Regressie met "parallelle hellingen"

Hoofdstuk 2

  • Interacties
  • Paradox van Simpson

Hoofdstuk 3

  • Meer verklarende variabelen
  • Hoe lineaire regressie werkt

Hoofdstuk 4

  • Meervoudige logistische regressie
  • De logistische verdeling
  • Hoe logistische regressie werkt
Gemiddelde regressie met statsmodels in Python

De fish-dataset

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
  • Elke rij is een vis
  • mass_g is de responsvariabele
  • 1 numerieke, 1 categorische verklarende variabele
Gemiddelde regressie met statsmodels in Python

Eén verklarende variabele per keer

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 interceptcoëfficiënt
  • 1 hellingscoëfficiënt
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 interceptcoëfficiënt per categorie
Gemiddelde regressie met statsmodels in Python

Beide variabelen tegelijk

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 hellingscoëfficiënt
  • 1 interceptcoëfficiënt per categorie
Gemiddelde regressie met statsmodels in Python

Coëfficiënten vergelijken

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
Gemiddelde regressie met statsmodels in Python

Visualisatie: 1 numerieke verklarende variabele

import matplotlib.pyplot as plt
import seaborn as sns

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

plt.show()

Een spreidingsdiagram van vismassa vs. lengte, met een lineaire trendlijn

Gemiddelde regressie met statsmodels in Python

Visualisatie: 1 categorische verklarende variabele

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

Een boxplot van vismassa per soort

Gemiddelde regressie met statsmodels in Python

Visualisatie: beide verklarende variabelen

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

Een model met parallelle hellingen van vismassa vs. lengte, per soort

Gemiddelde regressie met statsmodels in Python

Laten we oefenen!

Gemiddelde regressie met statsmodels in Python

Preparing Video For Download...