Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library('mgcv')
- set.seed(1)
- dat <- gamSim(1, n = 400, scale = 2, verbose = FALSE) ## 4 term additive truth
- ## add a factor for the random effect and include it's effect in the simulated data
- fac <- as.factor(sample(1:10, 400, replace = TRUE))
- dat$X <- model.matrix(~ fac - 1)
- b <- rnorm(10) * 0.5
- dat <- transform(dat, y = y + X %*% b)
- ## fit the model
- m <- gam(y ~ s(fac, bs = "re") + s(x0), data = dat, method = "ML")
- > coef(m)
- (Intercept) s(fac).1 s(fac).2 s(fac).3 s(fac).4 s(fac).5
- 7.71917475 0.24762873 0.48122511 -0.17534482 0.03670067 -0.03800310
- s(fac).6 s(fac).7 s(fac).8 s(fac).9 s(fac).10 s(x0).1
- -0.52197990 0.53661911 -0.23833765 -0.26088376 -0.06762439 0.02740419
- s(x0).2 s(x0).3 s(x0).4 s(x0).5 s(x0).6 s(x0).7
- 0.15183166 -0.06347520 -0.15041864 -0.04918018 0.15609539 -0.03564953
- s(x0).8 s(x0).9
- 0.78256472 -0.26510925
- > head(model.matrix(m)[, 2:11])
- s(fac).1 s(fac).2 s(fac).3 s(fac).4 s(fac).5 s(fac).6 s(fac).7 s(fac).8
- 1 1 0 0 0 0 0 0 0
- 2 1 0 0 0 0 0 0 0
- 3 0 0 0 0 0 0 0 0
- 4 0 0 0 0 0 0 0 1
- 5 1 0 0 0 0 0 0 0
- 6 0 0 0 0 0 1 0 0
- s(fac).9 s(fac).10
- 1 0 0
- 2 0 0
- 3 0 1
- 4 0 0
- 5 0 0
- 6 0 0
- > m[['smooth']][[1L]][['S']]
- [[1]]
- [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
- [1,] 1 0 0 0 0 0 0 0 0 0
- [2,] 0 1 0 0 0 0 0 0 0 0
- [3,] 0 0 1 0 0 0 0 0 0 0
- [4,] 0 0 0 1 0 0 0 0 0 0
- [5,] 0 0 0 0 1 0 0 0 0 0
- [6,] 0 0 0 0 0 1 0 0 0 0
- [7,] 0 0 0 0 0 0 1 0 0 0
- [8,] 0 0 0 0 0 0 0 1 0 0
- [9,] 0 0 0 0 0 0 0 0 1 0
- [10,] 0 0 0 0 0 0 0 0 0 1
Add Comment
Please, Sign In to add comment