Skip to content

Commit

Permalink
rmAnova: fixed emmeans to use multivariate model instead of univariate
Browse files Browse the repository at this point in the history
  • Loading branch information
raviselker authored and jonathon-love committed Mar 22, 2021
1 parent d0c3257 commit a9c8cb0
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 2 deletions.
5 changes: 3 additions & 2 deletions R/anovarm.b.R
Expand Up @@ -593,7 +593,7 @@ anovaRMClass <- R6::R6Class(
table$setStatus('running')

emmeans::emm_options(sep = ",", parens = "a^")
referenceGrid <- emmeans::emmeans(result, formula)
referenceGrid <- emmeans::emmeans(result, formula, model="multivariate")
none <- summary(pairs(referenceGrid, adjust='none'))
tukey <- summary(pairs(referenceGrid, adjust='tukey'))
scheffe <- summary(pairs(referenceGrid, adjust='scheffe'))
Expand Down Expand Up @@ -757,7 +757,8 @@ anovaRMClass <- R6::R6Class(
emmeans::emm_options(sep = ",", parens = "a^")

mm <- try(
emmeans::emmeans(model, formula, options=list(level=self$options$ciWidthEmm / 100), weights = weights),
emmeans::emmeans(model, formula, options=list(level=self$options$ciWidthEmm / 100),
weights = weights, model = "multivariate"),
silent = TRUE
)
})
Expand Down
45 changes: 45 additions & 0 deletions tests/testthat/testanovarm.R
Expand Up @@ -82,3 +82,48 @@ test_that('anovarm works', {
spher <- r$assump$spherTable$asDF
testthat::expect_equal(spher$mauch, NaN)
})

test_that('emmeans work for unbalanced data', {
set.seed(1337)
N <- 100
data <- data.frame(
measure1 = rnorm(N, 0, 1),
measure2 = rnorm(N, 1, 1),
measure3 = rnorm(N, 2, 1),
bsFactor = sample(letters[1:2], replace=TRUE, prob=c(0.3, 0.7), size=N),
stringsAsFactors = TRUE
)

rm = list(list(
label="rmFactor",
levels=c("measure1", "measure2", "measure3")
))

rmCells = list(
list(
measure="measure1",
cell="measure1"),
list(
measure="measure2",
cell="measure2"),
list(
measure="measure3",
cell="measure3")
)

r <- jmv::anovaRM(
data=data, rm=rm, rmCells=rmCells, bs="bsFactor",
rmTerms=list("rmFactor"), bsTerms=list("bsFactor"),
emMeans = ~bsFactor:rmFactor, emmPlots = FALSE, emmTables = TRUE
)

means <- aggregate(data[, -4], data[4], mean)
emmeans <- r$emm[[1]]$emmTable$asDF

expect_equal(means[1, 2], emmeans[1, "mean"], tolerance = 1e-4)
expect_equal(means[2, 2], emmeans[2, "mean"], tolerance = 1e-4)
expect_equal(means[1, 3], emmeans[3, "mean"], tolerance = 1e-4)
expect_equal(means[2, 3], emmeans[4, "mean"], tolerance = 1e-4)
expect_equal(means[1, 4], emmeans[5, "mean"], tolerance = 1e-4)
expect_equal(means[2, 4], emmeans[6, "mean"], tolerance = 1e-4)
})

0 comments on commit a9c8cb0

Please sign in to comment.