Modelpassing kwantificeren

Introductie tot regressie in R

Richie Cotton

Data Evangelist at DataCamp

Modellen voor brasem en baars

Brasem

Het spreidingsdiagram van brasemgewicht tegenover lengte, met een trendlijn, zoals eerder getoond.

Baars

Het spreidingsdiagram van baarsgewicht tegenover lengte, met een trendlijn, zoals eerder getoond.

Introductie tot regressie in R

Determinatiecoëfficiënt

Ook wel “r-kwadraat” of “R-kwadraat” genoemd.

het aandeel van de variantie in de responsvariabele dat voorspelbaar is uit de verklarende variabele

  • 1 betekent perfecte fit
  • 0 betekent de slechtst mogelijke fit
Introductie tot regressie in R

summary()

Kijk naar de waarde “Multiple R-Squared”

mdl_bream <- lm(mass_g ~ length_cm, data = bream)
summary(mdl_bream)
# Some lines of output omitted

Residual standard error: 74.15 on 33 degrees of freedom
Multiple R-squared:  0.8781,    Adjusted R-squared:  0.8744 
F-statistic: 237.6 on 1 and 33 DF,  p-value: < 2.2e-16
Introductie tot regressie in R

glance()

library(broom)
library(dplyr)
mdl_bream %>% 
  glance()
# A tibble: 1 × 12
  r.squared adj.r.squared sigma statistic  p.value    df logLik   AIC   BIC
      <dbl>         <dbl> <dbl>     <dbl>    <dbl> <dbl>  <dbl> <dbl> <dbl>
1     0.878         0.874  74.2      238. 1.22e-16     1  -199.  405.  409.
# ... with 3 more variables: deviance <dbl>, df.residual <int>, nobs <int>
mdl_bream %>% 
  glance() %>% 
  pull(r.squared)
0.8780627
Introductie tot regressie in R

Het is gewoon correlatie in het kwadraat

bream %>% 
  summarize(
    coeff_determination = cor(length_cm, mass_g) ^ 2
  )
  coeff_determination
1           0.8780627
Introductie tot regressie in R

Residual standard error (RSE)

een “typisch” verschil tussen een voorspelling en de geobserveerde respons

Heeft dezelfde eenheid als de responsvariabele.

Introductie tot regressie in R

summary() opnieuw

Kijk naar de waarde “Residual standard error”

summary(mdl_bream)
# Some lines of output omitted

Residual standard error: 74.15 on 33 degrees of freedom
Multiple R-squared:  0.8781,    Adjusted R-squared:  0.8744 
F-statistic: 237.6 on 1 and 33 DF,  p-value: < 2.2e-16
Introductie tot regressie in R

glance() opnieuw

library(broom)
library(dplyr)
mdl_bream %>% 
  glance()
# A tibble: 1 x 11
  r.squared adj.r.squared sigma statistic  p.value    df logLik   AIC   BIC deviance df.residual
      <dbl>         <dbl> <dbl>     <dbl>    <dbl> <int>  <dbl> <dbl> <dbl>    <dbl>       <int>
1     0.878         0.874  74.2      238. 1.22e-16     2  -199.  405.  409.  181452.          33
mdl_bream %>% 
  glance() %>% 
  pull(sigma)
74.15224
Introductie tot regressie in R

RSE berekenen: residuen kwadrateren

bream %>% 
  mutate(
    residuals_sq = residuals(mdl_bream) ^ 2
  )
  species mass_g length_cm residuals_sq
1   Bream    242      23.2     138.9571
2   Bream    290      24.0     260.7586
3   Bream    340      23.9    5126.9926
4   Bream    363      26.3    1318.9197
5   Bream    430      26.5     390.9743
6   Bream    450      26.8     547.9380
...
Introductie tot regressie in R

RSE berekenen: som van gekwadrateerde residuen

bream %>% 
  mutate(
    residuals_sq = residuals(mdl_bream) ^ 2
  ) %>% 
  summarize(
    resid_sum_of_sq = sum(residuals_sq)
  )
  resid_sum_of_sq
1        181452.3
Introductie tot regressie in R

RSE berekenen: vrijheidsgraden

Vrijheidsgraden zijn het aantal observaties min het aantal modelcoëfficiënten.

bream %>% 
  mutate(
    residuals_sq = residuals(mdl_bream) ^ 2
  ) %>% 
  summarize(
    resid_sum_of_sq = sum(residuals_sq),
    deg_freedom = n() - 2
  )
  resid_sum_of_sq deg_freedom
1        181452.3          33
Introductie tot regressie in R

RSE berekenen: wortel van de verhouding

bream %>% 
  mutate(
    residuals_sq = residuals(mdl_bream) ^ 2
  ) %>% 
  summarize(
    resid_sum_of_sq = sum(residuals_sq),
    deg_freedom = n() - 2,
    rse = sqrt(resid_sum_of_sq / deg_freedom)
  )
  resid_sum_of_sq deg_freedom      rse
1        181452.3          33 74.15224
Introductie tot regressie in R

RSE interpreteren

mdl_bream heeft een RSE van 74.

Het verschil tussen voorspelde en geobserveerde brasemgewichten is typisch zo’n 74 g.

Introductie tot regressie in R

Root-mean-square error (RMSE)

Residual standard error

bream %>% 
  mutate(
    residuals_sq = residuals(mdl_bream) ^ 2
  ) %>% 
  summarize(
    resid_sum_of_sq = sum(residuals_sq),
    deg_freedom = n() - 2,
    rse = sqrt(resid_sum_of_sq / deg_freedom)
  )

Root-mean-square error

bream %>% 
  mutate(
    residuals_sq = residuals(mdl_bream) ^ 2
  ) %>% 
  summarize(
    resid_sum_of_sq = sum(residuals_sq),
    n_obs = n(),
    rmse = sqrt(resid_sum_of_sq / n_obs)
  )
Introductie tot regressie in R

Laten we oefenen!

Introductie tot regressie in R

Preparing Video For Download...