Table of Contents

GAM

R: gam vs gamm vs bam

Knots

Random effects in GAM

«

>>
#In gamm4
gamm4::gamm4(myelin ~ s(age, k = 4, fx = F) + sex, 
             REML = TRUE,
             random=~(1|subject_id), #random intercept
             family = gaussian(link = "identity"), 
             data = df) 

#In mgcv:gamm
mgcv::gamm(myelin ~ s(age, k = 4, fx = F) + sex, 
           method = c("REML"),
           random = list(subject_id=~1), #random intercept
           family = gaussian(link = "identity"),
           data = df)

#In mgcv:gam
mgcv:gam(myelin ~ s(age, k = 4, fx = F) + sex + 
         method = c("REML"),
         s(subject_id, bs = 're'), #random intercept, subject_id *must* be a factor
         family = gaussian(link = "identity"),
         data = df)

#### Random intercept + slopes in GAM ####

#In mgcv:gamm 
mgcv::gamm(myelin ~ s(age, k = 4, fx = F) + sex, 
           method = c("REML"),
           random=list(subject_id=~1, subject_id=~0+age), #uncorrelated random intercepts and slopes
           family = gaussian(link = "identity"),
           data = df)

mgcv::gamm(myelin ~ s(age, k = 4, fx = F) + sex, 
           method = c("REML"),
           random=list(subject_id=~1+age), #correlated random intercepts and slopes
           family = gaussian(link = "identity"),
           data = df)

#In mgcv:gam 
mgcv:gam(myelin ~ s(age, k = 4, fx = F) + sex,
      s(subject_id, bs = 're') +
      s(subject_id, age, bs = 're'),
    data = myelin.glasser.7T$projfrac0.3, method = 'REML')
<<

»