Simulatie-gebaseerde inferentie

Inferentie voor lineaire regressie in R

Jo Hardin

Professor, Pomona College

Inferentie voor lineaire regressie in R

Een spreidingsdiagram van IQ's van tweelingen.

Inferentie voor lineaire regressie in R

Tweelingdata

Een tabel met IQ's van tweelingen. Elke rij is een tweelingpaar. De eerste kolom bevat het IQ van de twin opgevoed door pleegouders, de tweede kolom het IQ van de twin opgevoed door biologische ouders.

Inferentie voor lineaire regressie in R

Gepermuteerde tweelingdata

De tabel met IQ's van tweelingen is per kolom gepermuteerd, waardoor tweelingen niet langer samen op dezelfde rij staan.

Inferentie voor lineaire regressie in R

Gepermuteerde data (1) geplot

Originele data

Gepermuteerde data (1)

Inferentie voor lineaire regressie in R

Gepermuteerde data (2) geplot

Originele data

Gepermuteerde data (2)

Inferentie voor lineaire regressie in R

Gepermuteerde data (1) en (2)

Gepermuteerde data (1)

Gepermuteerde data (2)

Inferentie voor lineaire regressie in R
twins %>%
   specify(Foster ~ Biological) %>%
   hypothesize(null = "independence") %>%
   generate(reps = 10, type = "permute") %>%
   calculate(stat = "slope")
A tibble: 10 x 2
   replicate          stat
       <int>         <dbl>
 1         1  0.0007709302
 2         2 -0.0353592305
 3         3 -0.0278627974
 4         4 -0.0072547982
 5         5 -0.1252761541
 6         6 -0.1669869287
 7         7 -0.2610519170
 8         8 -0.0157695494
 9         9  0.0581361900
10        10  0.1598471947
Inferentie voor lineaire regressie in R

Veel gepermuteerde hellingen

perm_slope <- twins %>%
   specify(Foster ~ Biological) %>%
   hypothesize(
     null = "independence"
     ) %>%
   generate(reps = 1000, 
            type = "permute") %>%
   calculate(stat = "slope") 

ggplot(data = perm_slope, aes(x = stat)) + 
   geom_histogram() +
   xlim(-1,1)

Inferentie voor lineaire regressie in R

Gepermuteerde hellingen met waargenomen helling in rood

obs_slope <- lm(Foster ~ Biological,
                data = twins) %>%
   tidy() %>%   
   filter(term == "Biological") %>%
   select(estimate) %>%   
   pull()
obs_slope
0.901436
ggplot(data = perm_slope, aes(x = stat)) + 
   geom_histogram() +
   geom_vline(xintercept = obs_slope, color = "red") 
   + xlim(-1,1)

Inferentie voor lineaire regressie in R

Laten we oefenen!

Inferentie voor lineaire regressie in R

Preparing Video For Download...