Skip to contents
library(INLAvaan)

mod <- "
  # intercept with coefficients fixed to 1
  i =~  1*Day0 + 1*Day1 + 1*Day2 + 1*Day3 + 1*Day4 +
        1*Day5 + 1*Day6 + 1*Day7 + 1*Day8 + 1*Day9

  # slope with coefficients fixed to 0:9 (number of days)
  s =~  0*Day0 + 1*Day1 + 2*Day2 + 3*Day3 + 4*Day4 +
        5*Day5 + 6*Day6 + 7*Day7 + 8*Day8 + 9*Day9

  i ~~ i
  i ~ 1

  s ~~ s
  s ~ 1

  i ~~ s

  # fix intercepts
  Day0 ~ 0*1
  Day1 ~ 0*1
  Day2 ~ 0*1
  Day3 ~ 0*1
  Day4 ~ 0*1
  Day5 ~ 0*1
  Day6 ~ 0*1
  Day7 ~ 0*1
  Day8 ~ 0*1
  Day9 ~ 0*1

  # apply equality constraints
  Day0 ~~ v*Day0
  Day1 ~~ v*Day1
  Day2 ~~ v*Day2
  Day3 ~~ v*Day3
  Day4 ~~ v*Day4
  Day5 ~~ v*Day5
  Day6 ~~ v*Day6
  Day7 ~~ v*Day7
  Day8 ~~ v*Day8
  Day9 ~~ v*Day9
  "
dat <- reshape(
  lme4::sleepstudy,
  timevar = "Days",
  idvar = "Subject",
  direction = "wide"
)
names(dat) <- sub("^Reaction\\.(.*)$", "Day\\1", names(dat))
fit <- agrowth(mod, dat)
#> ℹ Using MVN log-likelihood.
#> ℹ Finding posterior mode.
#> ✔ Finding posterior mode. [93ms]
#> 
#> ℹ Computing the Hessian.
#> ✔ Computing the Hessian. [77ms]
#> 
#> ℹ Performing VB correction.
#> ✔ Performing VB correction. [245ms]
#> 
#> ℹ Using skew normal approximation.
#> ⠙ Fitting skew normal to 0/6 marginals.
#> ✔ Fitting skew normal to 6/6 marginals. [252ms]
#> 
#> ℹ Sampling posterior covariances.
#> ✔ Sampling posterior covariances. [162ms]
#> 
#> ⠙ Computing ppp and DIC.
#> ⠹ Computing ppp and DIC.
#> ✔ Computing ppp and DIC. [1.5s]
#> 
coef(fit)
#>      i~~i       i~1      s~~s       s~1      i~~s         v         v         v 
#> 12220.309    33.139    36.048     8.786     0.104   621.538   621.538   621.538 
#>         v         v         v         v         v         v         v 
#>   621.538   621.538   621.538   621.538   621.538   621.538   621.538