Quantificare l’adattamento del modello

Introduzione alla regressione con statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Modelli di orata e persico

Orata Lo scatter plot delle masse delle orate rispetto alle lunghezze, con linea di tendenza, già mostrato.

Persico Lo scatter plot delle masse dei persici rispetto alle lunghezze, con linea di tendenza, già mostrato.

Introduzione alla regressione con statsmodels in Python

Coefficiente di determinazione

Detto anche “r-quadro” o “R-quadro”.

La quota di varianza della risposta spiegata dalla variabile esplicativa

  • 1 indica un adattamento perfetto
  • 0 indica il peggior adattamento possibile
Introduzione alla regressione con statsmodels in Python

.summary()

Guarda il valore “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
Introduzione alla regressione con statsmodels in Python

Attributo .rsquared

print(mdl_bream.rsquared)
0.8780627095147174
Introduzione alla regressione con statsmodels in Python

È solo la correlazione al quadrato

coeff_determination = bream["length_cm"].corr(bream["mass_g"]) ** 2
print(coeff_determination)
0.8780627095147173
Introduzione alla regressione con statsmodels in Python

Errore standard residuo (RSE)

Residui dello scatter plot massa vs lunghezza delle orate, come visto prima

  • Una differenza “tipica” tra previsione e valore osservato
  • Ha la stessa unità della variabile risposta.
  • MSE = RSE²
Introduzione alla regressione con statsmodels in Python

Attributo .mse_resid

mse = mdl_bream.mse_resid
print('mse: ', mse)
mse:  5498.555084973521
rse = np.sqrt(mse)
print("rse: ", rse)
rse:  74.15224261594197
Introduzione alla regressione con statsmodels in Python

Calcolo dell’RSE: residui al quadrato

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
Introduzione alla regressione con statsmodels in Python

Calcolo dell’RSE: somma dei residui al quadrato

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
Introduzione alla regressione con statsmodels in Python

Calcolo dell’RSE: gradi di libertà

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

print("deg freedom: ", deg_freedom)

I gradi di libertà sono il numero di osservazioni meno il numero di coefficienti del modello.

deg freedom:  33
Introduzione alla regressione con statsmodels in Python

Calcolo dell’RSE: radice della frazione

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
Introduzione alla regressione con statsmodels in Python

Interpretare l’RSE

mdl_bream ha un RSE di 74.

La differenza tra masse previste e osservate dell’orata è tipicamente di circa 74 g.

Introduzione alla regressione con statsmodels in Python

Errore quadratico medio (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
Introduzione alla regressione con statsmodels in Python

Passons à la pratique !

Introduzione alla regressione con statsmodels in Python

Preparing Video For Download...