การวัดความเหมาะสมของโมเดล

การถดถอยเบื้องต้นด้วย statsmodels ใน Python

Maarten Van den Broeck

Content Developer at DataCamp

โมเดลปลา bream และ perch

Bream กราฟการกระจายของมวลปลา bream เทียบกับความยาว พร้อมเส้นแนวโน้มที่แสดงไว้ก่อนหน้า

Perch กราฟการกระจายของมวลปลา perch เทียบกับความยาว พร้อมเส้นแนวโน้มที่แสดงไว้ก่อนหน้า

การถดถอยเบื้องต้นด้วย statsmodels ใน Python

สัมประสิทธิ์การตัดสินใจ

บางครั้งเรียกว่า "r-squared" หรือ "R-squared"

สัดส่วนของความแปรปรวนในตัวแปรตอบสนองที่สามารถพยากรณ์ได้จากตัวแปรอธิบาย

  • 1 หมายถึงความพอดีสมบูรณ์แบบ
  • 0 หมายถึงความพอดีที่แย่ที่สุด
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

.summary()

ดูค่าที่ระบุว่า "R-Squared"

mdl_bream = ols("mass_g ~ length_cm", data=bream).fit()
print(mdl_bream.summary())
# Some lines of output omitted                          

                            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
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

แอตทริบิวต์ .rsquared

print(mdl_bream.rsquared)
0.8780627095147174
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

คือค่าสหสัมพันธ์ยกกำลังสอง

coeff_determination = bream["length_cm"].corr(bream["mass_g"]) ** 2
print(coeff_determination)
0.8780627095147173
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

ค่าความคลาดเคลื่อนมาตรฐานของเศษเหลือ (RSE)

กราฟค่าเศษเหลือของมวลปลา bream เทียบกับความยาว ดังที่เคยแสดงไว้

  • ความแตกต่าง "โดยทั่วไป" ระหว่างค่าพยากรณ์กับค่าตอบสนองที่สังเกตได้
  • มีหน่วยเดียวกับตัวแปรตอบสนอง
  • MSE = RSE²
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

แอตทริบิวต์ .mse_resid

mse = mdl_bream.mse_resid
print('mse: ', mse)
mse:  5498.555084973521
rse = np.sqrt(mse)
print("rse: ", rse)
rse:  74.15224261594197
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

การคำนวณ RSE: ยกกำลังสองของเศษเหลือ

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
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

การคำนวณ RSE: ผลรวมของเศษเหลือยกกำลังสอง

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
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

การคำนวณ RSE: ดีกรีของความเสรี

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

print("deg freedom: ", deg_freedom)

ดีกรีของความเสรี เท่ากับจำนวนการสังเกตลบด้วยจำนวนสัมประสิทธิ์ของโมเดล

deg freedom:  33
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

การคำนวณ RSE: รากที่สองของอัตราส่วน

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
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

การตีความ RSE

mdl_bream มีค่า RSE เท่ากับ 74

ความแตกต่างระหว่างมวลปลา bream ที่พยากรณ์กับที่สังเกตได้โดยทั่วไปอยู่ที่ประมาณ 74 กรัม

การถดถอยเบื้องต้นด้วย statsmodels ใน Python

ค่าความคลาดเคลื่อนรากที่สองของค่าเฉลี่ย (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
การถดถอยเบื้องต้นด้วย statsmodels ใน Python

มาฝึกกันเถอะ!

การถดถอยเบื้องต้นด้วย statsmodels ใน Python

Preparing Video For Download...