Nothing
# Test nested effect specifications----
test_that("Nested effects can work", {
skip_on_cran()
library(ggplot2)
mod1 <- lmer(sleep_total ~ bodywt + (1|vore/order), data=msleep)
msleep$combn <- paste(msleep$vore, msleep$order, sep = "__")
mod2 <- lmer(sleep_total ~ bodywt + (1|combn) + (1|vore), data=msleep)
#Suppressing warnings we already tested (coerce tbl and new levels)
predInt1 <- suppressWarnings(predictInterval(merMod=mod1, newdata=msleep, seed = 548,
n.sims = 2000, include.resid.var = FALSE,
stat = "median", level = 0.8))
predInt2 <- suppressWarnings(predictInterval(merMod=mod2, newdata=msleep, seed = 548,
n.sims = 2000, include.resid.var = FALSE,
stat = "median", level = 0.8))
expect_s3_class(predInt1, "data.frame")
expect_s3_class(predInt2, "data.frame")
expect_equal(mean(predInt1[,1] - predInt2[,1]), 0, tolerance = sd(predInt1[,1])/20)
expect_equal(mean(predInt1[,2] - predInt2[,2]), 0, tolerance = sd(predInt1[,2])/10)
expect_equal(mean(predInt1[,3] - predInt2[,3]), 0, tolerance = sd(predInt1[,3])/20)
})
# context("Interactions without intercepts")
test_that("Models with cross-level interaction and no random intercept work", {
skip_on_cran()
#################################
sleepstudy$Test <- rep(sample(c(TRUE, FALSE), length(unique(sleepstudy$Subject)),
replace = TRUE), each = 10)
m1 <- lmer(Reaction ~ Days:Test + (0 + Days | Subject), data = sleepstudy)
sleepstudy$cars <- sleepstudy$Days*3
m2 <- lmer(Reaction ~ cars:Test + (0 + Days | Subject), data = sleepstudy)
m3 <- lmer(Reaction ~ cars:Test + (1 | Subject), data = sleepstudy)
m4 <- lmer(Reaction ~ cars:Test + (0 + cars | Subject), data = sleepstudy)
###################################
suppressMessages({
preds1 <- predictInterval(m1)
})
expect_equal(nrow(preds1), 180)
expect_equal(ncol(preds1), 3)
expect_message(predictInterval(m1))
suppressMessages({
preds1 <- predictInterval(m1, newdata = sleepstudy[1:10, ],
level = 0.9, n.sims = 500, include.resid.var = FALSE,
fix.intercept.variance = TRUE)
})
expect_equal(nrow(preds1), 10)
expect_equal(ncol(preds1), 3)
suppressMessages({
preds1 <- predictInterval(m1, newdata = sleepstudy[1:10, ],
level = 0.9, n.sims = 500, include.resid.var = FALSE,
ignore.fixed.terms = TRUE)
})
expect_equal(nrow(preds1), 10)
expect_equal(ncol(preds1), 3)
suppressMessages({
preds2 <- predictInterval(m1, newdata = sleepstudy[1:10, ],
level = 0.9, n.sims = 500, include.resid.var = FALSE,
ignore.fixed.terms = FALSE)
})
expect_equal(nrow(preds2), 10)
expect_equal(ncol(preds2), 3)
expect_false(any(preds1$fit == preds2$fit))
rm(preds1, preds2)
suppressMessages({
preds1 <- predictInterval(m2)
})
expect_equal(nrow(preds1), 180)
expect_equal(ncol(preds1), 3)
truPred <- predict(m2)
expect_equal(mean(preds1$fit - truPred), 0, tolerance = sd(truPred)/100)
#
preds1 <- predictInterval(m3)
expect_equal(nrow(preds1), 180)
expect_equal(ncol(preds1), 3)
truPred <- predict(m3)
expect_equal(mean(preds1$fit - truPred), 0, tolerance = sd(truPred)/100)
#
suppressMessages({
preds1 <- predictInterval(m4)
})
expect_equal(nrow(preds1), 180)
expect_equal(ncol(preds1), 3)
truPred <- predict(m4)
expect_equal(mean(preds1$fit - truPred), 0, tolerance = sd(truPred)/100)
})
test_that("Models with cross-level interaction and no random intercept work", {
skip_on_cran()
suppressMessages({
m1 <- lmer(Reaction ~ 0 + Days + Days:Subject + (1 | Days), data = sleepstudy)
})
preds1 <- predictInterval(m1)
expect_equal(nrow(preds1), 180)
expect_equal(ncol(preds1), 3)
predictInterval(m1, fix.intercept.variance = TRUE) |>
expect_warning("No fixed-effect intercept detected") |>
suppressWarnings()
preds1 <- predictInterval(m1, newdata = sleepstudy[1:10, ],
level = 0.9, n.sims = 500, include.resid.var = FALSE,
ignore.fixed.terms = TRUE)
expect_equal(nrow(preds1), 10)
expect_equal(ncol(preds1), 3)
truPred <- predict(m1, newdata = sleepstudy[1:10,])
expect_equal(mean(preds1$fit - truPred), 0, tolerance = sd(truPred)/100)
# This is less close
preds1 <- predictInterval(m1, newdata = sleepstudy[1:50, ],
level = 0.9, n.sims = 500, include.resid.var = FALSE,
ignore.fixed.terms = FALSE)
expect_equal(nrow(preds1), 50)
expect_equal(ncol(preds1), 3)
truPred <- predict(m1, newdata = sleepstudy[1:50,])
expect_equal(mean(preds1$fit - truPred), 0, tolerance = sd(truPred)/25)
predictInterval(m1, newdata = sleepstudy[1:50, ],
level = 0.9, n.sims = 500, include.resid.var = FALSE,
fix.intercept.variance = TRUE) |>
expect_warning("No fixed-effect intercept") |>
suppressWarnings()
expect_failure({
expect_equal(mean(preds1$fit - truPred), 0, tolerance = sd(truPred)/100)
})
})
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.