Regresja liniowa z równoległymi prostymi

Regresja średnio zaawansowana ze statsmodels w Pythonie

Maarten Van den Broeck

Content Developer at DataCamp

Poprzedni kurs

Ten kurs wymaga znajomości materiału z Introduction to Regression with statsmodels in Python

Regresja średnio zaawansowana ze statsmodels w Pythonie

Od regresji prostej do wielokrotnej

Regresja wielokrotna to model regresji z więcej niż jedną zmienną objaśniającą.

Więcej zmiennych objaśniających może zapewnić więcej informacji i lepsze prognozy.

Regresja średnio zaawansowana ze statsmodels w Pythonie

Zawartość kursu

Rozdział 1

  • Regresja z równoległymi prostymi

Rozdział 2

  • Interakcje
  • Paradoks Simpsona

Rozdział 3

  • Więcej zmiennych objaśniających
  • Jak działa regresja liniowa

Rozdział 4

  • Wielokrotna regresja logistyczna
  • Rozkład logistyczny
  • Jak działa regresja logistyczna
Regresja średnio zaawansowana ze statsmodels w Pythonie

Zbiór danych o rybach

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żdy wiersz reprezentuje rybę
  • mass_g to zmienna odpowiedzi
  • 1 numeryczna i 1 kategoryczna zmienna objaśniająca
Regresja średnio zaawansowana ze statsmodels w Pythonie

Jedna zmienna objaśniająca naraz

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 współczynnik wyrazu wolnego
  • 1 współczynnik nachylenia
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 współczynnik wyrazu wolnego dla każdej kategorii
Regresja średnio zaawansowana ze statsmodels w Pythonie

Obie zmienne jednocześnie

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 współczynnik nachylenia
  • 1 współczynnik wyrazu wolnego dla każdej kategorii
Regresja średnio zaawansowana ze statsmodels w Pythonie

Porównanie współczynników

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
Regresja średnio zaawansowana ze statsmodels w Pythonie

Wizualizacja: 1 numeryczna zmienna objaśniająca

import matplotlib.pyplot as plt
import seaborn as sns

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

plt.show()

Wykres punktowy masy ryb w zależności od długości z linią trendu

Regresja średnio zaawansowana ze statsmodels w Pythonie

Wizualizacja: 1 kategoryczna zmienna objaśniająca

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

Wykres pudełkowy masy ryb dla każdego gatunku

Regresja średnio zaawansowana ze statsmodels w Pythonie

Wizualizacja: obie zmienne objaśniające

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 z równoległymi prostymi dla masy ryb w zależności od długości, z podziałem na gatunki

Regresja średnio zaawansowana ze statsmodels w Pythonie

Czas na ćwiczenia!

Regresja średnio zaawansowana ze statsmodels w Pythonie

Preparing Video For Download...