context("mfx") skip_on_cran() skip_if_not_installed("modeltests") library(modeltests) skip_if_not_installed("mfx") library(mfx) # simulate data set.seed(12345) n <- 1000 x <- rnorm(n) # beta outcome y_beta <- rbeta(n, shape1 = plogis(1 + 0.5 * x), shape2 = (abs(0.2 * x))) y_beta <- (y_beta * (n - 1) + 0.5) / n # Smithson and Verkuilen correction # binary outcome (logit and probit) y_bin <- ifelse(pnorm(1 + 0.5 * x + rnorm(n)) > 0.5, 1, 0) # negative binomial outcome (negative binomial and poisson) y_negbin <- rnegbin(n, mu = exp(1 + 0.5 * x), theta = 0.5) df <- data.frame(y_beta, y_bin, y_negbin, x) # fit the different models fit_betamfx <- betamfx(y_beta ~ x | x, data = df) fit_logitmfx <- logitmfx(y_bin ~ x, data = df) fit_negbinmfx <- negbinmfx(y_negbin ~ x, data = df) fit_poissonmfx <- poissonmfx(y_negbin ~ x, data = df) fit_probitmfx <- logitmfx(y_bin ~ x, data = df) # Now run the tests test_that("mfx tidier arguments", { # logit check_arguments(tidy.mfx) check_arguments(glance.mfx) check_arguments(augment.mfx) }) test_that("tidy.mfx", { # beta td_betamfx <- tidy(fit_betamfx, conf.int = TRUE) check_tidy_output(td_betamfx) check_dims(td_betamfx, 1, 8) # logit td_logitmfx <- tidy(fit_logitmfx, conf.int = TRUE) check_tidy_output(td_logitmfx) check_dims(td_logitmfx, 1, 8) # negbin td_negbinmfx <- tidy(fit_negbinmfx, conf.int = TRUE) check_tidy_output(td_negbinmfx) check_dims(td_negbinmfx, 1, 8) # poisson td_poissonmfx <- tidy(fit_poissonmfx, conf.int = TRUE) check_tidy_output(td_poissonmfx) check_dims(td_poissonmfx, 1, 8) # probit td_probitmfx <- tidy(fit_probitmfx, conf.int = TRUE) check_tidy_output(td_probitmfx) check_dims(td_probitmfx, 1, 8) }) test_that("glance.mfx", { # beta gl_betamfx <- glance(fit_betamfx) check_glance_outputs(gl_betamfx) # logit gl_logitmfx <- glance(fit_logitmfx) check_glance_outputs(gl_logitmfx) # negbin suppressWarnings( gl_negbinmfx <- glance(fit_negbinmfx) ) check_glance_outputs(gl_negbinmfx) # poisson gl_poissonmfx <- glance(fit_poissonmfx) check_glance_outputs(gl_poissonmfx) # probit gl_probitmfx <- glance(fit_probitmfx) check_glance_outputs(gl_probitmfx) }) test_that("augment.mfx", { # beta check_augment_function( aug = augment.betamfx, model = fit_betamfx, data = df, newdata = df ) # logit check_augment_function( aug = augment.logitmfx, model = fit_logitmfx, data = df, newdata = df ) # negbin check_augment_function( aug = augment.negbinmfx, model = fit_negbinmfx, data = df, newdata = df ) # poisson check_augment_function( aug = augment.poissonmfx, model = fit_poissonmfx, data = df, newdata = df ) # probit check_augment_function( aug = augment.probitmfx, model = fit_probitmfx, data = df, newdata = df ) })