Nothing
library(jtools)
context("summ")
# GLM test
set.seed(1)
output <- rpois(100, 5)
input <- log(output) + runif(100,0,1)
clusters <- sample(1:5, size = 100, replace = TRUE)
dat <- as.data.frame(cbind(output, input, clusters))
fitgf <- glm(output ~ input, data = dat, family = poisson)
# Offset test
set.seed(100)
exposures <- rpois(50, 50)
counts <- exposures - rpois(50, 25)
money <- (counts/exposures) + rnorm(50, sd = 1)
talent <- counts*.5 + rnorm(50, sd = 3)
wt <- runif(50, 0, 3)
poisdat <- as.data.frame(cbind(exposures, counts, talent, money, wt))
pmod <- glm(counts ~ talent*money, offset = log(exposures), data = poisdat,
family = poisson)
pmod2 <- glm(counts ~ talent*money + offset(log(exposures)), data = poisdat,
family = poisson)
pmodw <- glm(counts ~ talent + money, data = poisdat, weights = wt)
pmod2q <- glm(counts ~ talent*money + offset(log(exposures)), data = poisdat,
family = quasipoisson)
if (requireNamespace("survey")) {
# survey test
suppressMessages(library(survey, quietly = TRUE))
data(api)
dstrat <- svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)
dstrat$variables$mealsdec <- dstrat$variables$meals/100
regmodel <- svyglm(mealsdec ~ ell + api00, design = dstrat,
family = quasibinomial)
regmodell <- svyglm(mealsdec ~ ell + api00, design = dstrat)
}
# lm tests (OLS and WLS)
states <- as.data.frame(state.x77)
states$HSGrad <- states$`HS Grad`
set.seed(3)
states$wts <- runif(50, 0, 3)
fit <- lm(Income ~ HSGrad*Murder*Illiteracy, data = states)
fitw <- lm(Income ~ HSGrad*Murder*Illiteracy, data = states, weights = wts)
if (requireNamespace("lme4")) {
# merMod test
library(lme4, quietly = TRUE)
data(sleepstudy)
mv <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
}
options("summ-stars" = TRUE)
# test_that("standardize gives deprecated warning", {
# expect_warning(summ(fit, standardize = TRUE))
# expect_warning(summ(fitgf, standardize = TRUE))
# if (requireNamespace("lme4")) {
# expect_warning(summ(mv, standardize = TRUE))
# }
# if (requireNamespace("survey")) {
# expect_warning(summ(regmodel, standardize = TRUE))
# }
# })
test_that("jsumm: GLMs work", {
expect_is(summ(fitgf), "summ.glm")
expect_is(summ(fitgf, scale = TRUE), "summ.glm")
expect_is(summ(fitgf, center = TRUE), "summ.glm")
})
test_that("jsumm: GLMs w/ offsets work (arg)", {
expect_is(summ(pmod), "summ.glm")
expect_is(summ(pmod, scale = TRUE), "summ.glm")
expect_is(summ(pmod, center = TRUE), "summ.glm")
})
test_that("jsumm: GLMs w/ offsets work (formula)", {
expect_is(summ(pmod2), "summ.glm")
expect_is(summ(pmod2, scale = TRUE), "summ.glm")
expect_is(summ(pmod2, center = TRUE), "summ.glm")
})
test_that("jsumm: quasipoisson works", {
expect_is(summ(pmod2q), "summ.glm")
expect_is(summ(pmod2q, scale = TRUE), "summ.glm")
expect_is(summ(pmod2q, center = TRUE), "summ.glm")
})
test_that("jsumm: GLMs w/ weights work", {
expect_is(summ(pmodw), "summ.glm")
expect_is(summ(pmodw, scale = TRUE), "summ.glm")
expect_is(summ(pmodw, center = TRUE), "summ.glm")
})
test_that("jsumm: partial correlations work", {
expect_is(summ(fit, part.corr = TRUE), "summ.lm")
expect_output(print(summ(fit, part.corr = TRUE)))
expect_warning(summ(fit, part.corr = TRUE, robust = TRUE))
})
test_that("summ: knit_print works", {
expect_is(jtools:::knit_print.summ.lm(summ(fit)), "knit_asis")
expect_is(jtools:::knit_print.summ.glm(summ(fitgf)), "knit_asis")
if (requireNamespace("lme4")) {
expect_is(jtools:::knit_print.summ.merMod(summ(mv)), "knit_asis")
}
if (requireNamespace("survey")) {
expect_is(jtools:::knit_print.summ.svyglm(summ(regmodel)), "knit_asis")
}
})
if (requireNamespace("MASS")) {
# Negative binomial test
library(MASS, quietly = TRUE)
data(quine)
fitnb <- MASS::glm.nb(Days ~ Sex/(Age + Eth*Lrn), data = quine)
test_that("summ: negative binomial works",
expect_is(summ(fitnb), "summ.glm")
)
test_that("summ: negative binomial pR2 works",
expect_is(attr(summ(fitnb), "chisq")$df, "integer")
)
}
options("summ-stars" = FALSE)
# Test handling of singular models
x1 <- rnorm(100)
x2 <- 2 * x1
y <- rnorm(100)
sing_dat <- as.data.frame(cbind(x1, x2, y))
sing_fit <- lm(y ~ x1 + x2, data = sing_dat)
sing_fitg <- glm(y ~ x1 + x2, data = sing_dat)
int_fit <- lm(y ~ 1, data = sing_dat)
int_fitg <- glm(y ~ 1, data = sing_dat)
test_that("summ handles singular and intercept-only models", {
expect_is(summ(sing_fit), "summ.lm")
expect_is(summ(sing_fitg), "summ.glm")
expect_is(summ(int_fit), "summ.lm")
expect_is(summ(int_fitg), "summ.glm")
})
#### survey tests ###########################################################
if (requireNamespace("survey")) {
test_that("jsumm: non-linear svyglm models work", {
expect_is(summ(regmodel), "summ.svyglm")
})
test_that("jsumm: svyglm vifs work", {
expect_is(summ(regmodel, vifs = TRUE), "summ.svyglm")
})
test_that("jsumm: svyglm linear model check works", {
expect_warning(summ(regmodel, model.check = TRUE))
})
test_that("jsumm: svyglm CIs work", {
expect_is(summ(regmodel, confint = TRUE), "summ.svyglm")
expect_output(print(summ(regmodel, confint = TRUE)))
})
test_that("jsumm: svyglm dropping pvals works", {
expect_is(summ(regmodel, pvals = FALSE), "summ.svyglm")
expect_output(print(summ(regmodel, pvals = FALSE)))
})
test_that("jsumm: svyglm odds ratios", {
expect_warning(summ(regmodel, odds.ratio = T))
expect_is(summ(regmodel, exp = T), "summ.svyglm")
expect_output(print(summ(regmodel, exp = T)))
})
}
#### lme4 tests #############################################################
if (requireNamespace("lme4")) {
gm <- glmer(incidence ~ period + (1 | herd), family = poisson, data = cbpp,
offset = log(size))
test_that("jsumm: merMod CIs work", {
expect_is(s <- summ(mv, confint = TRUE), "summ.merMod")
expect_output(print(s))
expect_is(s <- summ(gm, confint = TRUE), "summ.merMod")
expect_output(print(s))
})
test_that("jsumm: merMod dropping pvals works", {
expect_is(s <- summ(mv, pvals = FALSE), "summ.merMod")
expect_output(print(s))
expect_is(s <- summ(gm, pvals = FALSE), "summ.merMod")
expect_output(print(s))
})
test_that("summ: all merMod p-value calculation options work", {
expect_is(s <- summ(mv, t.df = "s"), "summ.merMod")
expect_output(print(s))
expect_is(s <- summ(mv, t.df = "k-r"), "summ.merMod")
expect_output(print(s))
expect_is(s <- summ(mv, t.df = "resid"), "summ.merMod")
expect_output(print(s))
expect_is(s <- summ(mv, t.df = 1), "summ.merMod")
expect_output(print(s))
})
test_that("jsumm and merMod objects: everything works", {
expect_is(suppressWarnings(summ(mv, center = TRUE, n.sd = 2,
pvals = FALSE)), "summ.merMod")
expect_is(summ(mv, scale = TRUE, n.sd = 2, pvals = FALSE), "summ.merMod")
expect_warning(summ(mv, robust = TRUE))
})
}
test_that("jsumm: lm CIs work", {
expect_is(summ(fit, confint = TRUE), "summ.lm")
expect_output(print(summ(fit, confint = TRUE)))
})
test_that("jsumm: glm CIs work", {
expect_is(summ(fitgf, confint = TRUE), "summ.glm")
expect_output(print(summ(fitgf, confint = TRUE)))
})
test_that("jsumm: lm dropping pvals works", {
expect_is(summ(fit, pvals = FALSE), "summ.lm")
expect_output(print(summ(fit, pvals = FALSE)))
})
test_that("jsumm: glm dropping pvals works", {
expect_is(summ(fitgf, pvals = FALSE), "summ.glm")
expect_output(print(summ(fitgf, pvals = FALSE)))
})
test_that("jsumm and scale_lm: scaling works", {
expect_is(summ(fitgf, scale = TRUE, n.sd = 2), "summ.glm")
expect_is(summ(fit, scale = TRUE, n.sd = 2), "summ.lm")
})
test_that("jsumm and center_lm: centering works", {
expect_is(summ(fitgf, center = TRUE, n.sd = 2), "summ.glm")
expect_is(summ(fit, center = TRUE, n.sd = 2), "summ.lm")
})
test_that("jsumm can scale weighted lms", {
expect_is(summ(fitw, scale = T, n.sd = 2, robust = "HC3"), "summ.lm")
expect_is(summ(fitw, center = T, robust = "HC3"), "summ.lm")
})
test_that("jsumm: lm robust SEs work", {
expect_is(summ(fit, robust = T), "summ.lm")
expect_is(summ(fit, robust = "HC4m"), "summ.lm")
expect_output(print(summ(fit, robust = "HC4m")))
})
test_that("jsumm: lm partial corrs works", {
expect_is(summ(fit, part.corr = T), "summ.lm")
expect_output(print(summ(fit, part.corr = T)))
})
test_that("jsumm: warn with partial corrs and robust SEs", {
expect_warning(summ(fit, robust = "HC3", part.corr = T))
})
test_that("jsumm: glm robust SEs work", {
expect_is(summ(fitgf, robust = "HC3"), "summ.glm")
expect_output(print(summ(fitgf, robust = "HC4m")))
})
test_that("jsumm: lm cluster-robust SEs work", {
expect_is(summ(fit, robust = "HC3", cluster = "Population"), "summ.lm")
expect_output(print(summ(fit, robust = "HC3", cluster = "Population")))
expect_error(summ(fit, robust = "HC4m", cluster = "Population"))
expect_warning(summ(fit, cluster = "Population"))
})
test_that("jsumm: glm cluster-robust SEs work", {
expect_is(summ(fitgf, robust = "HC3", cluster = clusters), "summ.glm")
expect_output(print(summ(fitgf, robust = T, cluster = clusters)))
expect_error(summ(fitgf, robust = "HC4m", cluster = clusters))
})
test_that("jsumm: Printing isn't borked", {
expect_error(print(summ(fitgf, vifs = TRUE, robust = TRUE)))
expect_output(print(summ(fitgf, scale = TRUE)))
if (requireNamespace("survey")) {
expect_output(print(summ(regmodel, scale = TRUE, n.sd = 2)))
expect_output(print(summ(regmodel, vifs = TRUE)))
expect_output(print(summ(regmodell, scale = TRUE, n.sd = 2)))
expect_output(print(summ(regmodell, vifs = TRUE)))
}
expect_output(print(summ(fit, scale = TRUE, n.sd = 2)))
expect_output(print(summ(fit, vifs = TRUE)))
if (requireNamespace("lme4")) {
expect_output(print(summ(mv, scale = TRUE, n.sd = 2, pvals = FALSE)))
}
})
#### defaults test ##########################################################
set_summ_defaults(digits = 4, model.info = FALSE,
model.fit = FALSE, pvals = FALSE, robust = TRUE,
confint = TRUE, ci.width = .90, vifs = TRUE,
table.format = "grid")
test_that("set_summ_defaults changes options", {
expect_equal(getOption("jtools-digits"), 4)
expect_equal(getOption("summ-model.info"), FALSE)
expect_equal(getOption("summ-model.fit"), FALSE)
expect_equal(getOption("summ-pvals"), FALSE)
expect_equal(getOption("summ-robust"), TRUE)
expect_equal(getOption("summ-confint"), TRUE)
expect_equal(getOption("summ-ci.width"), .90)
expect_equal(getOption("summ-vifs"), TRUE)
expect_equal(getOption("summ.table.format"), "grid")
})
# Set all back to NULL
set_summ_defaults(digits = NULL, model.info = NULL,
model.fit = NULL, pvals = NULL, robust = NULL,
confint = NULL, ci.width = NULL, vifs = NULL)
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.