Kvantifiera modellens passning

Introduktion till regression med statsmodels i Python

Maarten Van den Broeck

Content Developer at DataCamp

Modeller för braxen och abborre

Braxen Spridningsdiagrammet över braxenmassors förhållande till längd, med en trendlinje, som visats tidigare.

Abborre Spridningsdiagrammet över abborrmassornas förhållande till längd, med en trendlinje, som visats tidigare.

Introduktion till regression med statsmodels i Python

Determinationskoefficienten

Kallas ibland "r-kvadrat" eller "R-kvadrat".

Den andel av variansen i responsvariabeln som kan förutsägas från förklaringsvariabeln

  • 1 innebär en perfekt passning
  • 0 innebär sämsta möjliga passning
Introduktion till regression med statsmodels i Python

.summary()

Titta på värdet med rubriken "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
Introduktion till regression med statsmodels i Python

Attributet .rsquared

print(mdl_bream.rsquared)
0.8780627095147174
Introduktion till regression med statsmodels i Python

Det är bara korrelationen i kvadrat

coeff_determination = bream["length_cm"].corr(bream["mass_g"]) ** 2
print(coeff_determination)
0.8780627095147173
Introduktion till regression med statsmodels i Python

Residualstandardfel (RSE)

Residualer från spridningsdiagrammet över braxenmassa kontra längd, som visats tidigare

  • En "typisk" skillnad mellan en prediktion och ett observerat utfall
  • Har samma enhet som responsvariabeln.
  • MSE = RSE²
Introduktion till regression med statsmodels i Python

Attributet .mse_resid

mse = mdl_bream.mse_resid
print('mse: ', mse)
mse:  5498.555084973521
rse = np.sqrt(mse)
print("rse: ", rse)
rse:  74.15224261594197
Introduktion till regression med statsmodels i Python

Beräkna RSE: residualer i kvadrat

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
Introduktion till regression med statsmodels i Python

Beräkna RSE: summan av residualer i kvadrat

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
Introduktion till regression med statsmodels i Python

Beräkna RSE: frihetsgrader

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

print("deg freedom: ", deg_freedom)

Frihetsgrader är antalet observationer minus antalet modellkoefficienter.

deg freedom:  33
Introduktion till regression med statsmodels i Python

Beräkna RSE: kvadratroten av kvoten

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
Introduktion till regression med statsmodels i Python

Tolka RSE

mdl_bream har ett RSE på 74.

Skillnaden mellan predikterade braxenmassor och observerade braxenmassor är typiskt sett ungefär 74 g.

Introduktion till regression med statsmodels i Python

Rotvärdet av medelkvadratfelet (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
Introduktion till regression med statsmodels i Python

Nu kör vi en övning!

Introduktion till regression med statsmodels i Python

Preparing Video For Download...