Simuleringsbaserad inferens

Inferens för linjär regression i R

Jo Hardin

Professor, Pomona College

Inferens för linjär regression i R

Ett spridningsdiagram över tvillingars IQ.

Inferens för linjär regression i R

Tvillingdata

En tabell med tvillingars IQ. Varje rad motsvarar ett tvillingpar. Den första kolumnen innehåller IQ för tvillingen som växte upp hos fosterföräldrar, och den andra kolumnen innehåller IQ för tvillingen som växte upp hos biologiska föräldrar.

Inferens för linjär regression i R

Permuterad tvillingdata

Tabellen med tvillingars IQ har fått varje kolumn permuterad, så att tvillingpar inte längre visas på samma rad.

Inferens för linjär regression i R

Permuterad data (1) plottad

Originaldata

Permuterad data (1)

Inferens för linjär regression i R

Permuterad data (2) plottad

Originaldata

Permuterad data (2)

Inferens för linjär regression i R

Permuterad data (1) och (2)

Permuterad data (1)

Permuterad data (2)

Inferens för linjär regression i 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
Inferens för linjär regression i R

Många permuterade lutningar

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)

Inferens för linjär regression i R

Permuterade lutningar med observerad lutning i rött

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)

Inferens för linjär regression i R

Nu kör vi en övning!

Inferens för linjär regression i R

Preparing Video For Download...