Hồi quy về trung bình

Giới thiệu về Hồi quy với statsmodels trong Python

Maarten Van den Broeck

Content Developer at DataCamp

Khái niệm

  • Giá trị phản hồi = giá trị khớp + phần dư
  • "Phần đã giải thích" + "phần chưa giải thích"
  • Phần dư do cả vấn đề mô hình và tính ngẫu nhiên nội tại
  • Trường hợp cực trị thường do ngẫu nhiên
  • Hồi quy về trung bình nghĩa là các cực trị không kéo dài theo thời gian
Giới thiệu về Hồi quy với statsmodels trong Python

Bộ dữ liệu cha-con của Pearson

  • 1078 cặp cha/con trai
  • Cha cao thì con có cao không?
father_height_cm son_height_cm
165.2 151.8
160.7 160.6
165.0 160.9
167.0 159.5
155.3 163.3
... ...
1 Adapted from https://www.rdocumentation.org/packages/UsingR/topics/father.son
Giới thiệu về Hồi quy với statsmodels trong Python

Biểu đồ phân tán

fig = plt.figure()
sns.scatterplot(x="father_height_cm",
                y="son_height_cm",
                data=father_son)
plt.axline(xy1=(150, 150),
           slope=1,
           linewidth=2,
           color="green")
plt.axis("equal")
plt.show()

Biểu đồ phân tán chiều cao con trai theo chiều cao người cha, có đường mà cha và con bằng nhau. Cha càng cao, con càng cao.

Giới thiệu về Hồi quy với statsmodels trong Python

Thêm đường hồi quy

fig = plt.figure()

sns.regplot(x="father_height_cm",
            y="son_height_cm",
            data=father_son,
            ci = None, 
            line_kws={"color": "black"})

plt.axline(xy1 = (150, 150),
           slope=1,
           linewidth=2,
           color="green")

plt.axis("equal")
plt.show()

Biểu đồ phân tán chiều cao con trai theo chiều cao người cha, có đường xu hướng tuyến tính. Đường xu hướng thoải hơn đường mà cha và con có cùng chiều cao.

Giới thiệu về Hồi quy với statsmodels trong Python

Chạy hồi quy

mdl_son_vs_father = ols("son_height_cm ~ father_height_cm",
                        data = father_son).fit()
print(mdl_son_vs_father.params)
Intercept           86.071975
father_height_cm     0.514093
dtype: float64
Giới thiệu về Hồi quy với statsmodels trong Python

Dự báo

really_tall_father = pd.DataFrame(
  {"father_height_cm": [190]})

mdl_son_vs_father.predict(
  really_tall_father)
183.7
really_short_father = pd.DataFrame(
  {"father_height_cm": [150]})

mdl_son_vs_father.predict(
  really_short_father)
163.2
Giới thiệu về Hồi quy với statsmodels trong Python

Hãy thực hành!

Giới thiệu về Hồi quy với statsmodels trong Python

Preparing Video For Download...