require(robustlmm)
checkEquality <- function(cW, rW, tolerance = 1e-8) {
stopifnot(
all.equal(
coef(cW),
coef(rW),
tolerance = tolerance,
check.attributes = FALSE
),
all.equal(
fixef(cW),
fixef(rW),
tolerance = tolerance,
check.attributes = FALSE
),
all.equal(
ranef(cW) ,
ranef(rW),
tolerance = 100 * tolerance,
check.attributes = FALSE
),
all.equal(
fitted(cW) ,
fitted(rW),
tolerance = tolerance,
check.attributes = FALSE
),
all.equal(
predict(cW) ,
predict(rW),
tolerance = tolerance,
check.attributes = FALSE
),
all.equal(
coef(summary(cW)) ,
coef(summary(rW)),
tolerance = 100 * tolerance,
check.attributes = FALSE
)
)
}
testBattery <- function(formula, data, tolerance) {
nobs <- nrow(data)
test <- function(weights) {
cW <- lmer(formula, data, weights = weights)
rW <-
rlmer(
formula,
data,
weights = weights,
rho.e = cPsi,
rho.b = cPsi,
init = lmerNoFit
)
checkEquality(cW, rW, tolerance)
}
test(rep(2, nobs))
test(rep(0.5, nobs))
set.seed(133)
test(runif(nobs))
test(rexp(nobs))
}
testBattery(Yield ~ 1 | Batch, Dyestuff, 1e-8)
# Skip these to speed up tests
#testBattery(diameter ~ (1 | plate) + (1 | sample),
# Penicillin, 1e-6)
#testBattery(Reaction ~ Days + (Days | Subject), sleepstudy, 1e-5)
# testBattery(y ~ service * dept + studage + lectage +
# (1 | s) + (1 | d), InstEval)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.