Paralel eğimli doğrusal regresyon

Python ile statsmodels'da Orta Düzey Regresyon

Maarten Van den Broeck

Content Developer at DataCamp

Önceki ders

Python ile statsmodels'da Orta Düzey Regresyon

Basit regresyondan çoklu regresyona

Çoklu regresyon, birden fazla açıklayıcı değişken içeren bir regresyon modelidir.

Daha fazla açıklayıcı değişken, daha çok içgörü ve daha iyi tahmin sağlar.

Python ile statsmodels'da Orta Düzey Regresyon

Ders içeriği

Bölüm 1

  • "Paralel eğimler" regresyonu

Bölüm 2

  • Etkileşimler
  • Simpson Paradoksu

Bölüm 3

  • Daha fazla açıklayıcı değişken
  • Doğrusal regresyon nasıl çalışır

Bölüm 4

  • Çoklu lojistik regresyon
  • Lojistik dağılım
  • Lojistik regresyon nasıl çalışır
Python ile statsmodels'da Orta Düzey Regresyon

Fish veri seti

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
  • Her satır bir balığı temsil eder
  • mass_g bağımlı değişkendir
  • 1 sayısal, 1 kategorik açıklayıcı değişken
Python ile statsmodels'da Orta Düzey Regresyon

Açıklayıcı değişkenler tek tek

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 kesişim katsayısı
  • 1 eğim katsayısı
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
  • Her kategori için 1 kesişim katsayısı
Python ile statsmodels'da Orta Düzey Regresyon

Her iki değişken birlikte

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 eğim katsayısı
  • Her kategori için 1 kesişim katsayısı
Python ile statsmodels'da Orta Düzey Regresyon

Katsayıları karşılaştırma

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
Python ile statsmodels'da Orta Düzey Regresyon

Görselleştirme: 1 sayısal açıklayıcı değişken

import matplotlib.pyplot as plt
import seaborn as sns

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

plt.show()

Balık kütlesi ve uzunluğunun saçılım grafiği, doğrusal eğilim çizgisiyle

Python ile statsmodels'da Orta Düzey Regresyon

Görselleştirme: 1 kategorik açıklayıcı değişken

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

Türlere göre balık kütlesi kutu grafiği

Python ile statsmodels'da Orta Düzey Regresyon

Görselleştirme: her iki açıklayıcı değişken

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

Balık kütlesi ve uzunluğu için, türe göre ayrılmış paralel eğim modeli

Python ile statsmodels'da Orta Düzey Regresyon

Hadi pratik yapalım!

Python ile statsmodels'da Orta Düzey Regresyon

Preparing Video For Download...