Nothing
context("mixed: known bugs")
test_that("all_fit = TRUE works with emmeans", {
testthat::skip_on_cran()
skip_if_not_installed("MEMSS")
skip_if_not_installed("emmeans")
skip_on_os("windows")
data("Machines", package = "MEMSS")
m1 <- mixed(score ~ Machine + (1|Worker), data=Machines, all_fit = TRUE)
expect_is(emmeans::emmeans(m1, "Machine"), "emmGrid")
})
test_that("inverse.gaussian works", {
## see: https://github.com/singmann/afex/issues/74
skip_if_not_installed("statmod")
skip_if(packageVersion("lme4") <= "1.1.21")
skip_on_cran()
set.seed(666)
id <- factor(1:20)
a <- factor(rep(c("a1","a2"),each=5000/2))
b <- factor(rep(c("b1","b2"),each=5000/2))
y <- statmod::rinvgauss(5000, 1, 2)
df <- data.frame(id=id,
x1=sample(a),
x2=sample(b),
y=y)
expect_is(mixed(y ~ x1 * x2
+ (1|id),
family = inverse.gaussian(link = "inverse"),
control=glmerControl(optimizer="bobyqa", optCtrl=list(maxfun=2e5)),
data = df,
method = "LRT", progress = FALSE), "mixed")
expect_is(mixed(y ~ x1 * x2 + (1|id),
family = inverse.gaussian(link = "inverse"),
control=glmerControl(optimizer="bobyqa", optCtrl=list(maxfun=2e5)),
data = df,
method = "PB", progress = FALSE,
args_test = list(nsim = 5)), "mixed")
})
test_that("character formula is contrast checked", {
data("sk2011.2")
# use only affirmation problems (S&K also splitted the data like this)
sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",])
sk_m1 <- mixed("response ~ instruction*inference+(1|id)",
sk2_aff, method = "S", progress = FALSE)
sk_m2 <- mixed(response ~ instruction*inference+(1|id), sk2_aff,
method = "S", progress = FALSE)
expect_equivalent(fixef(sk_m1$full_model), fixef(sk_m2$full_model))
})
test_that("character variables are treated as factors", {
data("sk2011.2")
# use only affirmation problems (S&K also splitted the data like this)
sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",])
sk_m1 <- mixed(response ~ instruction*inference+(1|id), sk2_aff,
method = "LRT", progress = FALSE)
sk2_aff$instruction <- as.character(sk2_aff$instruction)
sk2_aff$inference <- as.character(sk2_aff$inference)
sk_m2 <- mixed(response ~ instruction*inference+(1|id), sk2_aff,
method = "LRT", progress = FALSE)
expect_equivalent(anova(sk_m1), anova(sk_m2))
})
test_that("mixed works with long formulas", {
data(obk.long)
obk2 <- obk.long
colnames(obk2) <- sapply(colnames(obk2), function(x) paste0(x, x, x, x, x, x))
expect_is(mixed(valuevaluevaluevaluevaluevalue ~ treatmenttreatmenttreatmenttreatmenttreatmenttreatment * phasephasephasephasephasephase * hourhourhourhourhourhour + (1|idididididid), obk2, method = "LRT", progress = FALSE), "mixed")
})
test_that("nice.mixed and print.mixed can handle old objects", {
# created via:
# require(devtools)
# dev_mode()
# install_url("https://cran.rstudio.com/src/contrib/Archive/afex/afex_0.13-145.tar.gz")
# require(afex)
# data(obk.long)
# m1 <- mixed(value ~ treatment * phase + (1|id), obk.long)
# m2 <- mixed(value ~ treatment * phase + (1|id), obk.long, method = "LRT")
# m3 <- mixed(value ~ treatment * phase + (1|id), obk.long, method = "PB")
# save(m1, m2, m3, file = "lmm_old_object.rda")
# dev_mode()
load("lmm_old_object.rda") #
# load("tests/testthat/lmm_old_object.rda")
expect_is(suppressWarnings(nice(m1)), "data.frame")
expect_is(suppressWarnings(nice(m2)), "data.frame")
expect_is(suppressWarnings(nice(m3)), "data.frame")
expect_output(suppressWarnings(print(m1)), "treatment")
expect_output(suppressWarnings(print(m2)), "treatment")
expect_output(suppressWarnings(print(m3)), "treatment")
})
test_that("nice.mixed, print.mixed, and anova.mixed can handle objects with full.models", {
load("mixed_with_dot.rda") #
#load("tests/testthat/mixed_with_dot.rda")
expect_is(suppressWarnings(nice(sk_m1)), "data.frame")
expect_is(suppressWarnings(nice(sk_m2)), "data.frame")
expect_is(suppressWarnings(nice(t2)), "data.frame")
expect_output(suppressWarnings(print(sk_m1)), "instruction")
expect_output(suppressWarnings(print(sk_m2)), "instruction")
expect_output(suppressWarnings(print(t2)), "treatment")
expect_is(anova(sk_m1), "data.frame")
expect_is(anova(sk_m2), "data.frame")
expect_is(anova(t2), "data.frame")
})
test_that("lmer_alt works with GLMMs", {
skip_if_not_installed("mlmRev")
if (require("mlmRev")) {
expect_that(lmer_alt(use ~ age*urban + (1 | district), family = binomial,
data = Contraception, progress=FALSE), is_a("glmerMod"))
}
})
test_that("lmer_alt works with NA in independent variables", {
data(sk2011.2)
# use only affirmation problems (S&K also splitted the data like this)
sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",])
sk2_aff$instruction[5] <- NA
assign("sk2_aff", sk2_aff, envir = .GlobalEnv)
# set up model with maximal by-participant random slopes
sk_m1 <- suppressWarnings(lmer_alt(response ~ instruction*type+(type||id),
sk2_aff, expand_re = TRUE))
expect_true(inherits(sk_m1, "merModLmerTest") || inherits(sk_m1, "lmerModLmerTest"))
})
test_that("lmer_alt works with custom contrasts", {
## see: https://afex.singmann.science/forums/topic/trouble-with-ordered-contrasts-and-lmer_alt
Subj <- rep(1:10, each = 10)
Item <- rep(1:10, times = 10)
IV1 <- rep(1:5, times = 20)
DV <- rnorm(100)
data <- as.data.frame(cbind(Subj, Item, IV1, DV))
data$Subj <- as.factor(data$Subj)
data$Item <- as.factor(data$Item)
data$IV1 <- as.factor(data$IV1)
contrasts(data$IV1) <- MASS::contr.sdif(5)
mafex <- lmer_alt(DV ~ IV1 + (1 + IV1||Subj) + (1|Item), data = data)
expect_is(mafex, "merMod")
expect_identical(colnames(ranef(mafex)$Subj),
c("(Intercept)", "re1.IV12.1", "re1.IV13.2", "re1.IV14.3",
"re1.IV15.4"))
})
test_that("subset() in mix works with method == 'LRT'", {
data(obk.long)
set_default_contrasts()
msub <- mixed(value ~ treatment*phase*hour +(1|id),
data = subset(obk.long, treatment != "control"),
method = "LRT")
#dput(as.data.frame(anova(msub))[,"Chi Df"])
expect_equal(
object = as.data.frame(anova(msub))[,"Chi Df"],
expected = c(1, 2, 4, 2, 4, 8, 8)
)
set_sum_contrasts()
msub1 <- mixed(value ~ treatment*phase*hour +(1|id),
data = subset(obk.long, treatment != "control"),
method = "LRT")
#dput(as.data.frame(anova(msub))[,"Chi Df"])
expect_equal(
object = as.data.frame(anova(msub1))[,"Chi Df"],
expected = c(1, 2, 4, 2, 4, 8, 8)
)
set_default_contrasts()
})
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.