Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----cs-fit-------------------------------------------------------------------
library(lme4)
fm1.cs <- lmer(Reaction ~ Days + cs(1 + Days | Subject), sleepstudy)
## ----getReCovs----------------------------------------------------------------
print(fm1.cs_cov <- getReCovs(fm1.cs))
## ----getInfo------------------------------------------------------------------
getME(fm1.cs, "par")
getME(fm1.cs, "theta")
## ----lambda-mat---------------------------------------------------------------
library(Matrix)
image(getME(fm1.cs, "Lambda"))
## ----varcorr------------------------------------------------------------------
vc_mat <- VarCorr(fm1.cs)
vc_mat$Subject
## ----comparison-setup---------------------------------------------------------
if (!requireNamespace("glmmTMB", quietly = TRUE)) {
knitr::opts_chunk$set(eval = FALSE)
} else {
library(glmmTMB)
}
## Often want to ignore attributes and class.
## Set a fairly large tolerance for convenience.
all.equal.nocheck <- function(x, y, tolerance = 3e-5, ..., check.attributes = FALSE, check.class = FALSE) {
require("Matrix", quietly = TRUE)
## working around mode-matching headaches
if (is(x, "Matrix")) x <- matrix(x)
if (is(y, "Matrix")) y <- matrix(y)
all.equal(x, y, ..., tolerance = tolerance, check.attributes = check.attributes, check.class = check.class)
}
get.cor1 <- function(x) {
v <- VarCorr(x)
vv <- if (inherits(x, "merMod")) v$group else v$cond$group
attr(vv, "correlation")[1,2]
}
## ----unstruc-sim--------------------------------------------------------------
n_groups <- 20
n_per_group <- 20
n <- n_groups * n_per_group
set.seed(1)
dat.us <- data.frame(
group = rep(1:n_groups, each = n_per_group),
x1 = rnorm(n),
x2 = rnorm(n)
)
## Constructing a similar dataset for the other examples
gdat.us <- dat.diag <- gdat.diag <- dat.us
form <- y ~ 1 + x1 * x2 + us(1 + x1|group)
dat.us$y <- simulate(form[-2],
newdata = dat.us,
family = gaussian,
newparams = list(beta = c(-7, 5, -100, 20),
theta = c(2.5, 1.4, 6.3),
sigma = 2))[[1]]
form2 <- y ~ 1 + x1 + us(1 + x1|group)
gdat.us$y <- simulate(
form2[-2],
newdata = gdat.us,
family = binomial,
newparams = list(
beta = c(-1.5, 0.5),
theta = c(0.3, 0.1, 0.3)
))[[1]]
## ----compare-lmm--------------------------------------------------------------
lme4.us <- lmer(form, data = dat.us, REML = "FALSE")
glmmTMB.us <- glmmTMB(form, dat = dat.us)
## Fixed effects
fixef(lme4.us); fixef(glmmTMB.us)$cond
all.equal.nocheck(fixef(lme4.us), fixef(glmmTMB.us)$cond)
## Sigma
sigma(lme4.us); sigma(glmmTMB.us)
all.equal.nocheck(sigma(lme4.us), sigma(glmmTMB.us))
## Log likelihoods
logLik(lme4.us); logLik(glmmTMB.us)
all.equal.nocheck(logLik(lme4.us), logLik(glmmTMB.us))
## ----compare-cov--------------------------------------------------------------
## Variance-Covariance Matrix
vcov(lme4.us); vcov(glmmTMB.us)$cond
all.equal.nocheck(vcov(lme4.us), vcov(glmmTMB.us)$cond)
## Variance and Covariance Components
all.equal.nocheck(VarCorr(lme4.us)$group,
VarCorr(glmmTMB.us)$cond$group)
## Conditional Modes of the Random Effects
all.equal.nocheck(ranef(lme4.us)$group, ranef(glmmTMB.us)$cond$group)
## ----compare-glmm-------------------------------------------------------------
glme4.us <- glmer(form2, data = gdat.us, family = binomial)
gglmmTMB.us <- glmmTMB(form2, dat = gdat.us, family = binomial)
## Fixed effects
fixef(glme4.us); fixef(gglmmTMB.us)$cond
all.equal.nocheck(fixef(glme4.us), fixef(gglmmTMB.us)$cond)
## Sigma
all.equal.nocheck(sigma(glme4.us), sigma(gglmmTMB.us))
## Log likelihoods
logLik(glme4.us); logLik(gglmmTMB.us)
all.equal.nocheck(logLik(glme4.us), logLik(gglmmTMB.us))
## ----compare-glmm-cov---------------------------------------------------------
## Variance-Covariance Matrix
vcov(glme4.us); vcov(gglmmTMB.us)$cond
all.equal.nocheck(vcov(glme4.us), vcov(gglmmTMB.us)$cond)
## Variance and Covariance Components
all.equal.nocheck(VarCorr(glme4.us)$group,
VarCorr(gglmmTMB.us)$cond$group)
## Conditional Modes of the Random Effects
all.equal.nocheck(ranef(glme4.us)$group, ranef(gglmmTMB.us)$cond$group)
## ----fit-homog-diag, eval = FALSE---------------------------------------------
# lme4.us <- lmer(Reaction ~ Days + diag(Days | Subject, hom = TRUE), sleepstudy)
# glmmTMB.us <- glmmTMB(Reaction ~ Days + homdiag(Days | Subject), sleepstudy)
## ----sim-het-diag-------------------------------------------------------------
form <- y ~ 1 + x1 * x2 + diag(1|group)
dat.diag$y <- simulate(form[-2],
newdata = dat.diag,
family = gaussian,
newparams = list(beta = c(-7, 5, -100, 20),
theta = c(2.5),
sigma = 2))[[1]]
## ----fit-het-diag-------------------------------------------------------------
lme4.diag <- lmer(form, data = dat.diag, REML = "FALSE")
glmmTMB.diag <- glmmTMB(form, dat = dat.diag)
## Fixed effects
fixef(lme4.diag); fixef(glmmTMB.diag)$cond
all.equal.nocheck(fixef(lme4.diag), fixef(glmmTMB.diag)$cond)
## Sigma
sigma(lme4.diag); sigma(glmmTMB.diag)
all.equal.nocheck(sigma(lme4.diag), sigma(glmmTMB.diag))
## Log likelihoods
logLik(lme4.diag); logLik(glmmTMB.diag)
all.equal.nocheck(logLik(lme4.diag), logLik(glmmTMB.diag))
## Variance-Covariance Matrix
vcov(lme4.diag); vcov(glmmTMB.diag)$cond
all.equal.nocheck(vcov(lme4.diag), vcov(glmmTMB.diag)$cond)
## Variance and Covariance Components
all.equal.nocheck(VarCorr(lme4.diag)[[1]],
VarCorr(glmmTMB.diag)$cond$group)
## Conditional Modes of the Random Effects
all.equal.nocheck(ranef(lme4.diag)$group, ranef(glmmTMB.diag)$cond$group)
## ----cs-fit-2, eval = FALSE---------------------------------------------------
# lme4.us <- lmer(Reaction ~ Days + cs(Days | Subject, hom = TRUE), sleepstudy)
# glmmTMB.us <- glmmTMB(Reaction ~ Days + cs(Days | Subject), sleepstudy)
## ----simgroup-----------------------------------------------------------------
simGroup <- function(g, n=6, phi=0.6) {
x <- MASS::mvrnorm(mu = rep(0,n),
Sigma = phi^as.matrix(dist(1:n)) )
y <- x + rnorm(n)
times <- factor(1:n)
group <- factor(rep(g,n))
data.frame(y, times, group)
}
set.seed(1)
dat.cs <- do.call("rbind", lapply(1:2000, simGroup))
## ----more-comp, cache=TRUE----------------------------------------------------
lme4.cs <- lmer(y ~ times + cs(0 + times | group, hom = TRUE), data = dat.cs, REML = FALSE)
glmmTMB.cs <- glmmTMB(y ~ times + homcs(0 + times | group), data = dat.cs)
## Fixed effects
fixef(lme4.cs); fixef(glmmTMB.cs)$cond
all.equal.nocheck(fixef(lme4.cs), fixef(glmmTMB.cs)$cond)
## Sigma
sigma(lme4.cs); sigma(glmmTMB.cs)
all.equal.nocheck(sigma(lme4.cs), sigma(glmmTMB.cs))
## Log likelihoods
logLik(lme4.cs); logLik(glmmTMB.cs)
all.equal.nocheck(logLik(lme4.cs), logLik(glmmTMB.cs))
## Variance-Covariance Matrix
all.equal.nocheck(vcov(lme4.cs), vcov(glmmTMB.cs)$cond)
## Variance and Covariance Components
all.equal.nocheck(VarCorr(lme4.cs)[[1]],
VarCorr(glmmTMB.cs)$cond$group)
## Conditional Modes of the Random Effects
all.equal.nocheck(ranef(lme4.cs)$group, ranef(glmmTMB.cs)$cond$group)
## Comparing against the predicted rho value
lme4.rho <- get.cor1(lme4.cs)
glmmTMB.rho <- get.cor1(glmmTMB.cs)
lme4.rho; glmmTMB.rho
all.equal.nocheck(lme4.rho, glmmTMB.rho)
## ----ar1-sim------------------------------------------------------------------
set.seed(1)
dat.ar1 <- do.call("rbind", lapply(1:2000, function(g) simGroup(g, phi = 0.7)))
## ----het-ar1-fit, eval = FALSE------------------------------------------------
# lme4.ar1 <- lmer(y ~ times + ar1(0 + times | group), data = dat.ar1, REML = FALSE)
# glmmTMB.ar1 <- glmmTMB(y ~ times + hetar1(0 + times | group), data = dat.ar1)
## ----ar1-fit, cache=TRUE------------------------------------------------------
lme4.ar1 <- lmer(y ~ times + ar1(0 + times | group, hom = TRUE), data = dat.ar1, REML = FALSE)
glmmTMB.ar1 <- glmmTMB(y ~ times + ar1(0 + times | group), data = dat.ar1)
## Fixed effects
fixef(lme4.ar1); fixef(glmmTMB.ar1)$cond
all.equal.nocheck(fixef(lme4.ar1), fixef(glmmTMB.ar1)$cond)
## Sigma
sigma(lme4.ar1); sigma(glmmTMB.ar1)
all.equal.nocheck(sigma(lme4.ar1), sigma(glmmTMB.ar1))
## Log likelihoods
logLik(lme4.ar1); logLik(glmmTMB.ar1)
all.equal.nocheck(logLik(lme4.ar1), logLik(glmmTMB.ar1))
## Variance-Covariance Matrix
all.equal.nocheck(vcov(lme4.ar1), vcov(glmmTMB.ar1)$cond)
## Variance and Covariance Components
all.equal.nocheck(VarCorr(lme4.ar1)$group,
VarCorr(glmmTMB.ar1)$cond$group)
## Conditional Modes of the Random Effects
all.equal.nocheck(ranef(lme4.ar1)$group, ranef(glmmTMB.ar1)$cond$group)
## Comparing against the predicted rho value
lme4.ar1.rho <- get.cor1(lme4.ar1)
glmmTMB.ar1.rho <- get.cor1(glmmTMB.ar1)
lme4.ar1.rho; glmmTMB.ar1.rho
all.equal.nocheck(lme4.ar1.rho, glmmTMB.ar1.rho)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.