Ocena jakości dopasowania modelu

Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Maarten Van den Broeck

Content Developer at DataCamp

Modele leszcza i okonia

Leszcz Wykres punktowy masy leszcza w zależności od długości z linią trendu, pokazany wcześniej.

Okoń Wykres punktowy masy okonia w zależności od długości z linią trendu, pokazany wcześniej.

Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Współczynnik determinacji

Nazywany też „r-kwadrat" lub „R-kwadrat".

Część wariancji zmiennej odpowiedzi, którą można przewidzieć na podstawie zmiennej objaśniającej

  • 1 oznacza idealne dopasowanie
  • 0 oznacza najgorsze możliwe dopasowanie
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

`.summary()`

Znajdź wartość zatytułowaną „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
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Atrybut `.rsquared`

print(mdl_bream.rsquared)
0.8780627095147174
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

To po prostu korelacja do kwadratu

coeff_determination = bream["length_cm"].corr(bream["mass_g"]) ** 2
print(coeff_determination)
0.8780627095147173
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Resztowy błąd standardowy (RSE)

Wykres punktowy reszt dla masy leszcza w zależności od długości, jak poprzednio

  • „Typowa" różnica między prognozą a obserwowaną odpowiedzią
  • Ma tę samą jednostkę co zmienna odpowiedzi.
  • MSE = RSE²
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Atrybut `.mse_resid`

mse = mdl_bream.mse_resid
print('mse: ', mse)
mse:  5498.555084973521
rse = np.sqrt(mse)
print("rse: ", rse)
rse:  74.15224261594197
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Obliczanie RSE: kwadraty reszt

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
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Obliczanie RSE: suma kwadratów reszt

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
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Obliczanie RSE: stopnie swobody

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

print("deg freedom: ", deg_freedom)

Stopnie swobody to liczba obserwacji minus liczba współczynników modelu.

deg freedom:  33
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Obliczanie RSE: pierwiastek ze stosunku

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
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Interpretacja RSE

mdl_bream ma RSE równe 74.

Różnica między prognozowaną a obserwowaną masą leszcza wynosi typowo około 74 g.

Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Pierwiastek średniokwadratowy błędu (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
Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Czas na ćwiczenia!

Wprowadzenie do regresji z użyciem statsmodels w Pythonie

Preparing Video For Download...