Hồi quy tuyến tính dốc song song

Hồi quy trung cấp với statsmodels trong Python

Maarten Van den Broeck

Content Developer at DataCamp

Khóa học trước

Khóa học này giả định kiến thức từ Introduction to Regression with statsmodels in Python

Hồi quy trung cấp với statsmodels trong Python

Từ hồi quy đơn đến hồi quy bội

Hồi quy bội là mô hình hồi quy có hơn một biến giải thích.

Nhiều biến giải thích có thể mang lại thêm hiểu biết và dự đoán tốt hơn.

Hồi quy trung cấp với statsmodels trong Python

Nội dung khóa học

Chương 1

  • Hồi quy “dốc song song”

Chương 2

  • Tương tác
  • Nghịch lý Simpson

Chương 3

  • Thêm biến giải thích
  • Cách hoạt động của hồi quy tuyến tính

Chương 4

  • Hồi quy logistic bội
  • Phân phối logistic
  • Cách hoạt động của hồi quy logistic
Hồi quy trung cấp với statsmodels trong Python

Bộ dữ liệu cá

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
  • Mỗi hàng là một con cá
  • mass_g là biến phản hồi
  • 1 biến giải thích số, 1 biến giải thích phân loại
Hồi quy trung cấp với statsmodels trong Python

Xét từng biến giải thích

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 hệ số chặn
  • 1 hệ số dốc
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 hệ số chặn cho mỗi hạng mục
Hồi quy trung cấp với statsmodels trong Python

Cả hai biến cùng lúc

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 hệ số dốc
  • 1 hệ số chặn cho mỗi hạng mục
Hồi quy trung cấp với statsmodels trong Python

So sánh hệ số

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
Hồi quy trung cấp với statsmodels trong Python

Trực quan: 1 biến giải thích số

import matplotlib.pyplot as plt
import seaborn as sns

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

plt.show()

Biểu đồ phân tán khối lượng cá theo chiều dài, kèm đường xu hướng tuyến tính

Hồi quy trung cấp với statsmodels trong Python

Trực quan: 1 biến giải thích phân loại

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

Biểu đồ hộp khối lượng cá theo từng loài

Hồi quy trung cấp với statsmodels trong Python

Trực quan: cả hai biến giải thích

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

Mô hình dốc song song: khối lượng theo chiều dài, phân theo loài

Hồi quy trung cấp với statsmodels trong Python

Ayo berlatih!

Hồi quy trung cấp với statsmodels trong Python

Preparing Video For Download...