Định lượng độ khớp của mô hình

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

Maarten Van den Broeck

Content Developer at DataCamp

Mô hình cá tráp và cá rô

Cá tráp (Bream) Biểu đồ phân tán khối lượng so với chiều dài của cá tráp, có đường xu thế, như đã xem trước đó.

Cá rô (Perch) Biểu đồ phân tán khối lượng so với chiều dài của cá rô, có đường xu thế, như đã xem trước đó.

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

Hệ số xác định

Còn gọi là "r-bình phương" hoặc "R-bình phương".

Tỷ lệ phương sai của biến phản hồi được giải thích bởi biến giải thích

  • 1 nghĩa là khớp hoàn hảo
  • 0 nghĩa là khớp tệ nhất
Giới thiệu về Hồi quy với statsmodels trong Python

.summary()

Xem giá trị có tiêu đề "R-Squared"

mdl_bream = ols("mass_g ~ length_cm", data=bream).fit()
print(mdl_bream.summary())
# Bỏ bớt một số dòng                          

                            OLS Regression Results                         
Dep. Variable:                 mass_g   R-squared:                       0.878
Model:                            OLS   Adj. R-squared:                  0.874
Method:                 Least Squares   F-statistic:                     237.6
Giới thiệu về Hồi quy với statsmodels trong Python

Thuộc tính .rsquared

print(mdl_bream.rsquared)
0.8780627095147174
Giới thiệu về Hồi quy với statsmodels trong Python

Chỉ là bình phương của tương quan

coeff_determination = bream["length_cm"].corr(bream["mass_g"]) ** 2
print(coeff_determination)
0.8780627095147173
Giới thiệu về Hồi quy với statsmodels trong Python

Sai số chuẩn phần dư (RSE)

Phần dư của biểu đồ phân tán khối lượng so với chiều dài của cá tráp, như trước

  • Chênh lệch “điển hình” giữa dự đoán và giá trị quan sát
  • Cùng đơn vị với biến phản hồi
  • MSE = RSE²
Giới thiệu về Hồi quy với statsmodels trong Python

Thuộc tính .mse_resid

mse = mdl_bream.mse_resid
print('mse: ', mse)
mse:  5498.555084973521
rse = np.sqrt(mse)
print("rse: ", rse)
rse:  74.15224261594197
Giới thiệu về Hồi quy với statsmodels trong Python

Tính RSE: bình phương phần dư

residuals_sq = mdl_bream.resid ** 2

print("residuals sq: \n", residuals_sq)
residuals sq: 
0      138.957118
1      260.758635
2     5126.992578
3     1318.919660
4      390.974309
    ...
30    2125.047026
31    6576.923291
32     206.259713
33     889.335096
34    7665.302003
Length: 35, dtype: float64
Giới thiệu về Hồi quy với statsmodels trong Python

Tính RSE: tổng bình phương phần dư

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

print("resid sum of sq :",
      resid_sum_of_sq)
resid sum of sq : 181452.31780412616
Giới thiệu về Hồi quy với statsmodels trong Python

Tính RSE: bậc tự do

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

print("deg freedom: ", deg_freedom)

“Số bậc tự do” là số quan sát trừ số hệ số của mô hình.

deg freedom:  33
Giới thiệu về Hồi quy với statsmodels trong Python

Tính RSE: căn bậc hai của tỉ số

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

rse = np.sqrt(resid_sum_of_sq/deg_freedom)

print("rse :", rse)
rse : 74.15224261594197
Giới thiệu về Hồi quy với statsmodels trong Python

Diễn giải RSE

mdl_bream có RSE là 74.

Chênh lệch giữa khối lượng cá tráp dự đoán và quan sát thường khoảng 74g.

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

Sai số căn phương trung bình (RMSE)

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

rse = np.sqrt(resid_sum_of_sq/deg_freedom)

print("rse :", rse)
rse : 74.15224261594197
residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

n_obs = len(bream.index)

rmse = np.sqrt(resid_sum_of_sq/n_obs)

print("rmse :", rmse)
rmse : 72.00244396727619
Giới thiệu về Hồi quy với statsmodels trong Python

Ayo berlatih!

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

Preparing Video For Download...