Modelpassing kwantificeren

Introductie tot regressie in R

Richie Cotton

Data Evangelist at DataCamp

Modellen voor brasem en baars

Brasem

Het spreidingsdiagram van brasemmassa's versus hun lengtes, met een trendlijn, dat eerder is getoond.

Baars

Het spreidingsdiagram van baarzenmassa's versus hun lengtes, met een trendlijn, dat eerder is getoond.

Introductie tot regressie in R

Determinatiecoëfficiënt

Ook wel "r-kwadraat" of "R-kwadraat" genoemd.

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

  • 1 betekent een 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 een geobserveerde respons

Het 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 in het kwadraat

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 residuen in het kwadraat

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 gelijk aan het aantal observaties minus 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 brasemmassa's 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...