Cuantificarea ajustării modelului

Introducere în regresia cu statsmodels în Python

Maarten Van den Broeck

Content Developer at DataCamp

Modelele bream și perch

Bream Graficul de dispersie al maselor bream față de lungimile acestora, cu o linie de tendință, prezentat anterior.

Perch Graficul de dispersie al maselor perch față de lungimile acestora, cu o linie de tendință, prezentat anterior.

Introducere în regresia cu statsmodels în Python

Coeficientul de determinare

Uneori numit „r-pătrat" sau „R-pătrat".

Proporția varianței variabilei răspuns care poate fi prezisă din variabila explicativă

  • 1 înseamnă ajustare perfectă
  • 0 înseamnă cea mai slabă ajustare posibilă
Introducere în regresia cu statsmodels în Python

`.summary()`

Urmăriți valoarea denumită „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
Introducere în regresia cu statsmodels în Python

Atributul `.rsquared`

print(mdl_bream.rsquared)
0.8780627095147174
Introducere în regresia cu statsmodels în Python

Este corelația la pătrat

coeff_determination = bream["length_cm"].corr(bream["mass_g"]) ** 2
print(coeff_determination)
0.8780627095147173
Introducere în regresia cu statsmodels în Python

Eroarea standard reziduală (RSE)

Reziduurile graficului de dispersie masă vs. lungime pentru bream, prezentat anterior

  • O diferență „tipică" între o predicție și o valoare observată
  • Are aceeași unitate ca variabila răspuns.
  • MSE = RSE²
Introducere în regresia cu statsmodels în Python

Atributul `.mse_resid`

mse = mdl_bream.mse_resid
print('mse: ', mse)
mse:  5498.555084973521
rse = np.sqrt(mse)
print("rse: ", rse)
rse:  74.15224261594197
Introducere în regresia cu statsmodels în Python

Calculul RSE: reziduuri la pătrat

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
Introducere în regresia cu statsmodels în Python

Calculul RSE: suma pătratelor reziduurilor

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
Introducere în regresia cu statsmodels în Python

Calculul RSE: grade de libertate

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

print("deg freedom: ", deg_freedom)

Gradele de libertate reprezintă numărul de observații minus numărul de coeficienți ai modelului.

deg freedom:  33
Introducere în regresia cu statsmodels în Python

Calculul RSE: rădăcina pătrată a raportului

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
Introducere în regresia cu statsmodels în Python

Interpretarea RSE

mdl_bream are un RSE de 74.

Diferența dintre masele bream prezise și cele observate este tipic de aproximativ 74g.

Introducere în regresia cu statsmodels în Python

Eroarea pătratică medie (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
Introducere în regresia cu statsmodels în Python

Să exersăm!

Introducere în regresia cu statsmodels în Python

Preparing Video For Download...