test_that("geomean", {
# Test normal, nonzero scalars
expect_equal(geomean(5), 5)
expect_equal(geomean(c(5, 5)), 5)
expect_equal(geomean(c(10, 1000)), 100)
# Test zeros
expect_equal(geomean(0), 0)
expect_equal(geomean(c(0, 1)), 0)
# Test negative numbers
expect_equal(geomean(c(-1, 2)), -geomean(c(1, 2)))
# Test NAs
expect_equal(geomean(NA), as.numeric(NA))
expect_equal(geomean(c(NA, 0)), as.numeric(NA))
expect_equal(geomean(c(NA, 5), na.rm=TRUE), 5)
expect_equal(geomean(c(NA, NA), na.rm=TRUE), NaN)
})
test_that("geosd", {
expect_equal(geosd(c(1, 2)), exp(sd(log(c(1, 2)))))
expect_equal(geosd(c(NA, 1, 2)), as.numeric(NA))
})
test_that("geocv", {
expect_equal(geocv(c(1, 2)),
sqrt(exp(sd(log(c(1, 2)))^2)-1)*100)
expect_equal(geocv(c(NA, 1, 2)), as.numeric(NA))
})
test_that("business.mean", {
PKNCA.options(default=TRUE)
PKNCA.options(max.missing=0.5)
# Test a normal mean of a scalar and vector
expect_equal(business.mean(1), structure(1, n = 1))
expect_equal(business.mean(c(1, 2)), structure(1.5, n = 2))
# Ensure that at the max.missing fraction a value is reported and
# above that, NA is returned.
expect_equal(business.mean(c(NA, NA, 1, 2)), structure(1.5, n = 2))
expect_equal(business.mean(c(NA, NA, NA, 2)), NA)
# Ensure that it uses the current value of max.missing
PKNCA.options(max.missing=0.3)
expect_equal(business.mean(c(NA, 1, 2, 3)), structure(2, n = 3))
expect_equal(business.mean(c(NA, NA, 1, 2)), NA)
})
test_that("pk.business", {
PKNCA.options(default=TRUE)
PKNCA.options(max.missing=0.5)
b.mean <- pk.business(mean)
expect_equal(b.mean(c(1, 2)), structure(1.5, n = 2))
# Right at the border, it still reports
expect_equal(b.mean(c(1, NA)), structure(1, n = 1))
# When too much data is missing, NA is returned
expect_equal(b.mean(c(1, NA, NA)), NA)
# It respects zero.missing
b.mean.2 <- pk.business(mean, zero.missing=TRUE)
expect_equal(b.mean(c(0, 1)), structure(0.5, n = 2))
expect_equal(b.mean.2(c(0, 1)), structure(1, n = 1))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.