testthat::context('logregord') testthat::test_that('All options in the logRegOrd work (sunny)', { suppressWarnings(RNGversion("3.5.0")) set.seed(1337) df <- data.frame( `dep 1` = sample(letters[1:3], 100, replace = TRUE), `cov 1` = rnorm(100), `cov 2` = rnorm(100), `factor 1` = sample(LETTERS[20:21], 100, replace = TRUE), check.names = FALSE, stringsAsFactors = TRUE ) r <- jmv::logRegOrd( data = df, dep = "dep 1", covs = c("cov 1", "cov 2"), factors = c("factor 1"), blocks = list(list("cov 1", "cov 2", "factor 1")), refLevels = list( list(var="factor 1", ref=LETTERS[20]) ), modelTest = TRUE, bic = TRUE, pseudoR2 = c("r2mf", "r2cs", "r2n"), omni = TRUE, thres = TRUE, ci = TRUE, OR = TRUE, ciOR = TRUE ) # Test model fit table modelFitTable <- r$modelFit$asDF testthat::expect_equal(1, modelFitTable[['model']]) testthat::expect_equal(216.412, modelFitTable[['dev']], tolerance = 1e-3) testthat::expect_equal(226.412, modelFitTable[['aic']], tolerance = 1e-3) testthat::expect_equal(239.437, modelFitTable[['bic']], tolerance = 1e-3) testthat::expect_equal(0.007, modelFitTable[['r2mf']], tolerance = 1e-3) testthat::expect_equal(0.005, modelFitTable[['r2cs']], tolerance = 1e-3) testthat::expect_equal(0.01, modelFitTable[['r2n']], tolerance = 1e-3) testthat::expect_equal(1.492, modelFitTable[['chi']], tolerance = 1e-3) testthat::expect_equal(3, modelFitTable[['df']]) testthat::expect_equal(0.684, modelFitTable[['p']], tolerance = 1e-3) # Test omnibus likelihood ratio tests table lrtTable <- r$models[[1]]$lrt$asDF testthat::expect_equal(c('cov 1', 'cov 2', 'factor 1'), lrtTable[['term']]) testthat::expect_equal(c(0.151, 0.046, 1.368), lrtTable[['chi']], tolerance = 1e-3) testthat::expect_equal(c(1, 1, 1), lrtTable[['df']]) testthat::expect_equal(c(0.697, 0.83, 0.242), lrtTable[['p']], tolerance = 1e-3) # Test model coefficients table coefTable <- r$models[[1]]$coef$asDF testthat::expect_equal(c('cov 1', 'cov 2', 'factor 1:', 'U – T'), coefTable[['term']]) testthat::expect_equal(c(0.075, 0.037, NA, -0.435), coefTable[['est']], tolerance = 1e-3) testthat::expect_equal(c(-0.304, -0.301, NA, -1.172), coefTable[['lower']], tolerance = 1e-3) testthat::expect_equal(c(0.462, 0.377, NA, 0.293), coefTable[['upper']], tolerance = 1e-3) testthat::expect_equal(c(0.194, 0.172, NA, 0.373), coefTable[['se']], tolerance = 1e-3) testthat::expect_equal(c(0.389, 0.214, NA, -1.167), coefTable[['z']], tolerance = 1e-3) testthat::expect_equal(c(0.698, 0.83, NA, 0.243), coefTable[['p']], tolerance = 1e-3) testthat::expect_equal(c(1.078, 1.038, NA, 0.647), coefTable[['odds']], tolerance = 1e-3) testthat::expect_equal(c(0.738, 0.74, NA, 0.31), coefTable[['oddsLower']], tolerance = 1e-3) testthat::expect_equal(c(1.587, 1.458, NA, 1.341), coefTable[['oddsUpper']], tolerance = 1e-3) # Test model thresholds table thresTable <- r$models[[1]]$thres$asDF testthat::expect_equal(c('a | b', 'b | c'), thresTable[['term']]) testthat::expect_equal(c(-0.915, 0.255), thresTable[['est']], tolerance = 1e-3) testthat::expect_equal(c(0.282, 0.267), thresTable[['se']], tolerance = 1e-3) testthat::expect_equal(c(-3.249, 0.956), thresTable[['z']], tolerance = 1e-3) testthat::expect_equal(c(0.001, 0.339), thresTable[['p']], tolerance = 1e-3) testthat::expect_equal(c(0.401, 1.291), thresTable[['odds']], tolerance = 1e-3) }) testthat::test_that("Analysis works with global weights", { suppressWarnings(RNGversion("3.5.0")) set.seed(1337) weights <- sample(1:10, 100, replace=TRUE) df <- data.frame( dep = sample(letters[1:3], 100, replace = TRUE), cov = rnorm(100), factor = sample(LETTERS[20:21], 100, replace = TRUE), check.names = FALSE, stringsAsFactors = TRUE ) attr(df, "jmv-weights") <- weights r <- jmv::logRegOrd( data = df, dep = "dep", covs = "cov", factors = "factor", blocks = list(list("cov", "factor")), refLevels = list( list(var="factor", ref=LETTERS[20]) ) ) # Test model fit table modelFitTable <- r$modelFit$asDF testthat::expect_equal(1, modelFitTable[['model']]) testthat::expect_equal(1246.297, modelFitTable[['dev']], tolerance = 1e-3) testthat::expect_equal(1254.297, modelFitTable[['aic']], tolerance = 1e-3) testthat::expect_equal(0.028, modelFitTable[['r2mf']], tolerance = 1e-3) # Test model coefficients table coefTable <- r$models[[1]]$coef$asDF testthat::expect_equal(c(-0.41, NA, 0.326), coefTable[['est']], tolerance = 1e-3) testthat::expect_equal(c(0.079, NA, 0.156), coefTable[['se']], tolerance = 1e-3) testthat::expect_equal(c(-5.204, NA, 2.092), coefTable[['z']], tolerance = 1e-3) testthat::expect_equal(c(0, NA, 0.036), coefTable[['p']], tolerance = 1e-3) }) testthat::test_that('Model fit table contains sample size footnote', { df <- data.frame( y = sample(letters[1:3], 15, replace = TRUE), x = rnorm(15), check.names = FALSE, stringsAsFactors = TRUE ) r <- jmv::logRegOrd( df, dep="y", covs="x", blocks=list(list("x")) ) testthat::expect_match(r$modelFit$notes$n$note, "N=15") })