Nothing
# Tests for anova.art
#
# Author: mjskay
###############################################################################
library(testthat)
library(ARTool)
context("anova.art")
comparable.anova = function(m, include.error=FALSE) {
#get an anova from a model in a form that is easy to compare
#(known column subset and rounded numeric results)
a = suppressWarnings(as.data.frame(anova(m)))
#extract character cols and convert to factors for consistency in comparison
character_cols = lapply(a[,c("Term", if (include.error) "Error"), drop=FALSE], factor)
#some anovas use "F value" instead of just "F", standardize
if (!is.null(a$`F value`)) a$F = a$`F value`
#extract numeric cols and round for consistency
numeric_cols = round(a[,c("Df","Df.res","F","Pr(>F)")], digits=4)
#stick it all back together and standardize the rownames
a = cbind(character_cols, numeric_cols)
rownames(a) = 1:nrow(a)
a
}
test_that("anova.art of Higgins1990Table5 matches results of the original ARTool", {
data(Higgins1990Table5, package = "ARTool")
#reference result
ref = data.frame(
Term = factor(c("Moisture", "Fertilizer", "Moisture:Fertilizer")),
Error = factor(c("Tray", "Within", "Within")),
Df = c(3, 3, 9),
Df.res = c(8, 24, 24),
"F" = c(23.8326, 122.4017, 5.1180),
"Pr(>F)" = c(0.0002, 0, 0.0006),
check.names = FALSE
)
#run art using repeated measures anova
m = art(DryMatter ~ Moisture*Fertilizer + Error(Tray), data=Higgins1990Table5)
a = comparable.anova(m, include.error=TRUE)
expect_equal(a, ref, tolerance = 0.0001)
#run art using mixed effects model
m = art(DryMatter ~ Moisture*Fertilizer + (1|Tray), data=Higgins1990Table5)
a = comparable.anova(m)
expect_equal(a, ref[-2], tolerance = 0.0001) #no Error col
})
test_that("anova.art of Higgins1990Table1 matches results of the original ARTool", {
data(Higgins1990Table1, package = "ARTool")
#reference result
ref = data.frame(
Term = factor(c("Row", "Column", "Row:Column")),
Df = c(2, 2, 4),
Df.res = c(27, 27, 27),
"F" = c(29.9925, 77.8668, 0.6417),
"Pr(>F)" = c(0, 0, 0.6374),
check.names = FALSE
)
#run art using linear model
m = art(Response ~ Row*Column, data=Higgins1990Table1)
a = comparable.anova(m)
expect_equal(a, ref)
})
test_that("anova.art of HigginsABC matches results of the original ARTool", {
data(HigginsABC, package = "ARTool")
#reference result
ref = data.frame(
Term = factor(c("A", "B", "C", "A:B", "A:C", "B:C", "A:B:C")),
Error = factor(c("Subject", "Subject", "Within", "Subject", "Within", "Within", "Within")),
Df = c(1, 1, 1, 1, 1, 1, 1),
Df.res = c(4, 4, 4, 4, 4, 4, 4),
F = c(120.4706, 120.4706, 14.3217, 81.92, 0.1259, 0.2319, 0.9715),
"Pr(>F)" = c(4e-04, 4e-04, 0.0194, 8e-04, 0.7407, 0.6553, 0.3801),
check.names = FALSE
)
#run art using linear model
m = art(Y ~ A*B*C + Error(Subject), data=HigginsABC)
a = comparable.anova(m, include.error=TRUE)
expect_equal(a, ref)
})
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.