Кількісна оцінка якості моделі

Вступ до Regression зі statsmodels у Python

Maarten Van den Broeck

Content Developer at DataCamp

Моделі для ляща та окуня

Лящ Точкова діаграма мас лящів проти їхніх довжин із трендовою лінією, показана раніше.

Окунь Точкова діаграма мас окунів проти їхніх довжин із трендовою лінією, показана раніше.

Вступ до Regression зі statsmodels у Python

Коефіцієнт детермінації

Також називають «r‑квадрат» або «R‑квадрат».

Частка дисперсії залежної змінної, яку можна передбачити за пояснювальною змінною

  • 1 означає ідеальне припасування
  • 0 означає найгірше припасування
Вступ до Regression зі 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
Вступ до Regression зі statsmodels у Python

Атрибут .rsquared

print(mdl_bream.rsquared)
0.8780627095147174
Вступ до Regression зі statsmodels у Python

Це просто кореляція у квадраті

coeff_determination = bream["length_cm"].corr(bream["mass_g"]) ** 2
print(coeff_determination)
0.8780627095147173
Вступ до Regression зі statsmodels у Python

Стандартна помилка залишків (RSE)

Залишки для діаграми «маса ляща vs довжина», як і раніше

  • «Типова» різниця між прогнозом і спостереженим значенням
  • Має ту саму одиницю, що й залежна змінна.
  • MSE = RSE²
Вступ до Regression зі 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
Вступ до Regression зі 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
Вступ до Regression зі 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
Вступ до Regression зі 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
Вступ до Regression зі 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
Вступ до Regression зі statsmodels у Python

Інтерпретація RSE

mdl_bream має RSE 74.

Різниця між передбаченими та спостереженими масами лящів зазвичай близько 74 г.

Вступ до Regression зі 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
Вступ до Regression зі statsmodels у Python

Давайте потренуємось!

Вступ до Regression зі statsmodels у Python

Preparing Video For Download...