Nothing
context("Comparison with lme4")
test_that("lmms works properly",{
data("sleepstudy", package = "lme4")
y_split <- split(sleepstudy["Reaction"], sleepstudy["Subject"])
p <- length(y_split)
y <- matrix(unlist(y_split), ncol = p,
dimnames = list(NULL, paste("Subject", names(y_split))))
P1 <- as.matrix(Matrix::.bdiag(replicate(p, matrix(NA, 2, 2), simplify = FALSE)))
model_lmm <- SSModel(y ~ - 1 +
SSMregression(~ Days, type = "common", remove.intercept = FALSE) +
SSMregression(~ Days, remove.intercept = FALSE, P1 = P1),
H = diag(NA, p), data = data.frame(Days = 0:9))
update_lmm <- function(pars, model) {
P1 <- diag(exp(pars[1:2]))
P1[1, 2] <- pars[3]
P1 <- crossprod(P1)
model["P1", states = 3:38] <-
as.matrix(Matrix::.bdiag(replicate(p, P1, simplify = FALSE)))
model["H"] <- diag(exp(pars[4]), p)
model
}
fit_lmm <- fitSSM(model_lmm, c(1, 1, 1, 5), update_lmm, method = "BFGS")
fm1 <- lme4::lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
expect_equal(lme4::fixef(fm1), KFS(fit_lmm$model)$alphahat[1,1:2])
expect_equivalent(logLik(fit_lmm$model), unclass(logLik(fm1)))
X <- model.matrix(fm1)
expect_equal(logLik(fit_lmm$model, marginal = TRUE) - logLik(fit_lmm$model),
sum(log(diag(chol(t(X) %*% X)))))
})
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.