testthat::context('mancova')
testthat::test_that('All options in the mancova work (sunny)', {
suppressWarnings(RNGversion("3.5.0"))
set.seed(100)
df <- data.frame(
`dep 1` = rnorm(100, 0, 1),
`dep 2` = rnorm(100, 0, 0.1),
`dep 3` = rnorm(100, 1, 1),
`dep 4` = rnorm(100, 1, 0.1),
`cov 1` = rnorm(100),
`factor 1` = sample(LETTERS[20:21], 100, replace = TRUE),
`factor 2` = sample(letters[1:3], 100, replace = TRUE),
check.names = FALSE,
stringsAsFactors = TRUE
)
r <- jmv::mancova(
data = df,
deps = c("dep 1","dep 2","dep 3","dep 4"),
factors = c("factor 1","factor 2"),
covs ="cov 1",
boxM = TRUE,
shapiro = TRUE
)
# Test multivariate table
multivarTable <- r$multivar$asDF
testthat::expect_equal(
c('factor 1', 'factor 2', 'factor 1:factor 2', 'cov 1'), multivarTable[['term[pillai]']]
)
testthat::expect_equal(
c('Pillai\'s Trace', 'Pillai\'s Trace', 'Pillai\'s Trace', 'Pillai\'s Trace'),
multivarTable[['test[pillai]']]
)
testthat::expect_equal(
c(0.069, 0.067, 0.106, 0.041), multivarTable[['stat[pillai]']], tolerance = 1e-3
)
testthat::expect_equal(
c(1.677, 0.794, 1.276, 0.973), multivarTable[['f[pillai]']], tolerance = 1e-3
)
testthat::expect_equal(c(4, 8, 8, 4), multivarTable[['df1[pillai]']])
testthat::expect_equal(c(90, 182, 182, 90), multivarTable[['df2[pillai]']])
testthat::expect_equal(
c(0.162, 0.609, 0.259, 0.426), multivarTable[['p[pillai]']], tolerance = 1e-3
)
testthat::expect_equal(
c('factor 1', 'factor 2', 'factor 1:factor 2', 'cov 1'), multivarTable[['term[wilks]']]
)
testthat::expect_equal(
c('Wilks\' Lambda', 'Wilks\' Lambda', 'Wilks\' Lambda', 'Wilks\' Lambda'),
multivarTable[['test[wilks]']]
)
testthat::expect_equal(
c(0.931, 0.934, 0.896, 0.959), multivarTable[['stat[wilks]']], tolerance = 1e-3
)
testthat::expect_equal(
c(1.677, 0.785, 1.27, 0.973), multivarTable[['f[wilks]']], tolerance = 1e-3
)
testthat::expect_equal(c(4, 8, 8, 4), multivarTable[['df1[wilks]']])
testthat::expect_equal(c(90, 180, 180, 90), multivarTable[['df2[wilks]']])
testthat::expect_equal(
c(0.162, 0.616, 0.261, 0.426), multivarTable[['p[wilks]']], tolerance = 1e-3
)
testthat::expect_equal(
c('factor 1', 'factor 2', 'factor 1:factor 2', 'cov 1'), multivarTable[['term[hotel]']]
)
testthat::expect_equal(
c('Hotelling\'s Trace', 'Hotelling\'s Trace', 'Hotelling\'s Trace', 'Hotelling\'s Trace'),
multivarTable[['test[hotel]']]
)
testthat::expect_equal(
c(0.075, 0.07, 0.114, 0.043), multivarTable[['stat[hotel]']], tolerance = 1e-3
)
testthat::expect_equal(
c(1.677, 0.776, 1.265, 0.973), multivarTable[['f[hotel]']], tolerance = 1e-3
)
testthat::expect_equal(c(4, 8, 8, 4), multivarTable[['df1[hotel]']])
testthat::expect_equal(c(90, 178, 178, 90), multivarTable[['df2[hotel]']])
testthat::expect_equal(
c(0.162, 0.624, 0.264, 0.426), multivarTable[['p[hotel]']], tolerance = 1e-3
)
testthat::expect_equal(
c('factor 1', 'factor 2', 'factor 1:factor 2', 'cov 1'), multivarTable[['term[roy]']]
)
testthat::expect_equal(
c('Roy\'s Largest Root', 'Roy\'s Largest Root', 'Roy\'s Largest Root', 'Roy\'s Largest Root'),
multivarTable[['test[roy]']]
)
testthat::expect_equal(
c(0.075, 0.038, 0.086, 0.043), multivarTable[['stat[roy]']], tolerance = 1e-3
)
testthat::expect_equal(
c(1.677, 0.874, 1.947, 0.973), multivarTable[['f[roy]']], tolerance = 1e-3
)
testthat::expect_equal(c(4, 4, 4, 4), multivarTable[['df1[roy]']])
testthat::expect_equal(c(90, 91, 91, 90), multivarTable[['df2[roy]']])
testthat::expect_equal(
c(0.162, 0.483, 0.109, 0.426), multivarTable[['p[roy]']], tolerance = 1e-3
)
# Test univariate table
univarTable <- r$univar$asDF
testthat::expect_equal(
c(
4.64, 0.011, 0.165, 0, 3.101, 0.008, 0.274, 0.015, 0.767, 0.045, 1.156, 0.013, 0.404,
0.004, 2.752, 0.012, 94.232, 0.559, 102.583, 1.116
),
univarTable[['ss']],
tolerance = 1e-3
)
testthat::expect_equal(
c(1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 93, 93, 93, 93), univarTable[['df']]
)
testthat::expect_equal(
c(
4.64, 0.011, 0.165, 0, 1.55, 0.004, 0.137, 0.008, 0.383, 0.023, 0.578, 0.007, 0.404,
0.004, 2.752, 0.012, 1.013, 0.006, 1.103, 0.012
),
univarTable[['ms']],
tolerance = 1e-3
)
testthat::expect_equal(
c(
4.579, 1.799, 0.15, 0.001, 1.53, 0.694, 0.124, 0.644, 0.378, 3.774, 0.524, 0.547, 0.399,
0.603, 2.495, 1.01, NA, NA, NA, NA
),
univarTable[['F']],
tolerance = 1e-3
)
testthat::expect_equal(
c(
0.035, 0.183, 0.7, 0.977, 0.222, 0.502, 0.883, 0.528, 0.686, 0.027, 0.594, 0.58, 0.529,
0.439, 0.118, 0.318, NA, NA, NA, NA
),
univarTable[['p']],
tolerance = 1e-3
)
# Test Box's M test table
boxMTable <- r$assump$boxM$asDF
testthat::expect_equal(38.74, boxMTable[['chi']], tolerance = 1e-3)
testthat::expect_equal(50, boxMTable[['df']], tolerance = 1e-3)
testthat::expect_equal(0.876, boxMTable[['p']], tolerance = 1e-3)
# Test Shapiro-Wilk test table
shapiro <- r$assump$shapiro$asDF
testthat::expect_equal(0.978, shapiro[['w']], tolerance = 1e-3)
testthat::expect_equal(0.097, shapiro[['p']], tolerance = 1e-3)
})
testthat::test_that('Provide error message when dependent variables are highly correlated', {
df <- data.frame(
dep1 = 1:10,
dep2 = 1:10,
factor = rep(letters[1:2], length.out=10),
stringsAsFactors = TRUE
)
testthat::expect_error(
jmv::mancova(data = df, deps = c("dep1","dep2"), factors = c("factor")),
"Dependent variables are very highly correlated"
)
})
testthat::test_that('Provide error message if residual degrees of freedom are equal to 0', {
suppressWarnings(RNGversion("3.5.0"))
set.seed(1337)
df <- data.frame(
dep1 = rnorm(22),
dep2 = rnorm(22),
factor1 = rep(letters[1:10], length.out=22),
factor2 = rep(LETTERS[1:3], length.out=22),
stringsAsFactors = TRUE
)
testthat::expect_error(
jmv::mancova(data = df, deps = c("dep1","dep2"), factors = c("factor1", "factor2")),
"Not enough degrees of freedom to estimate all the model effects"
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.