testthat::test_that("rowRmMadOutliers", {
x <- matrix(1:25, ncol=5);
rownames(x) <- letters[1:5];
colnames(x) <- LETTERS[1:5];
x[, 5] <- x[, 5] + 1;
x[1, 5] <- 100;
groups <- rep(c("group1", "group2"), c(2, 3));
# default outlier detection
testthat::expect_equal(
which(is.na(as.vector(rowRmMadOutliers(x)))),
21)
# high outlier threshold which does not remove this outlier point
testthat::expect_equal(
which(is.na(as.vector(rowRmMadOutliers(x, madFactor=15)))),
integer(0))
# rowGroupMeans() with outlier detection
rowGroupMeans(x, groups=groups, rmOutliers=FALSE, includeAttributes=FALSE)
rowGroupMeans(x, groups=groups, rmOutliers=TRUE, includeAttributes=FALSE)
# first establish the value including outlier
testthat::expect_equal(
as.vector(rowGroupMeans(x, groups=groups,
rmOutliers=FALSE, includeAttributes=FALSE)),
c(3.5, 4.5, 5.5, 6.5, 7.5, 16, 17, 18, 19, 20))
# remove the outlier
testthat::expect_equal(
as.vector(rowGroupMeans(x, groups=groups,
rmOutliers=TRUE, includeAttributes=FALSE)),
c(3.5, 4.5, 5.5, 6.5, 7.5, 13.5, 17, 18, 19, 20))
# mean - first establish the value including outlier
testthat::expect_equal(
round(digits=2,
as.vector(rowGroupMeans(x, groups=groups,
useMedian=FALSE,
rmOutliers=FALSE, includeAttributes=FALSE))),
c(3.5, 4.5, 5.5, 6.5, 7.5, 42.33, 17.33, 18.33, 19.33, 20.33))
# mean - remove the outlier
testthat::expect_equal(
round(digits=2,
as.vector(rowGroupMeans(x, groups=groups,
useMedian=FALSE,
rmOutliers=TRUE, includeAttributes=FALSE))),
c(3.5, 4.5, 5.5, 6.5, 7.5, 13.5, 17.33, 18.33, 19.33, 20.33))
# mean - remove the outlier, return the data
xTest <- x;
xTest[1, 5] <- NA;
testthat::expect_equal(
rowGroupMeans(x, groups=groups,
useMedian=FALSE, returnType="input",
rmOutliers=TRUE, includeAttributes=FALSE),
xTest)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.