Nothing
# Tests for weighted histograms
#
# Author: mjskay
###############################################################################
test_that("weighted_hist works", {
expect_error(weighted_hist(numeric()))
expect_equal(weighted_hist(1), hist(1, breaks = c(0.5, 1.5), plot = FALSE))
expect_equal(weighted_hist(c(1,1)), hist(c(1,1), breaks = c(0.5, 1.5), plot = FALSE))
x = c(1,1,1,4)
expect_equal(weighted_hist(x, breaks = "Sturges"), hist(x, plot = FALSE))
xw = c(1, 4)
w = c(3, 1)
wh = weighted_hist(xw, w, breaks = "Sturges")
expect_equal(wh$xname, "[xw, w]")
wh$xname = "x"
expect_equal(wh, hist(x, plot = FALSE))
})
test_that("weighted_hist is roughly equivalent to hist on non-weighted samples", {
x = c(1,2,3,3,4,5,8,2,7)
x1 = c(rep(10,20), 10.1)
x2 = c(rep(10,1000), 10.1)
# breaks / nclass functions match
for (breaks in list(c("Sturges", "Sturges"), c("Scott","scott"), c("FD","FD"))) {
breaks_fun = paste0("breaks_", breaks[[1]])
nclass_fun = paste0("nclass.", breaks[[2]])
expect_equal((!!breaks_fun)(x), (!!nclass_fun)(x))
expect_equal((!!breaks_fun)(x1), (!!nclass_fun)(x1))
expect_equal((!!breaks_fun)(x2), (!!nclass_fun)(x2))
#partial application
expect_equal((!!breaks_fun)()(x), (!!breaks_fun)(x))
}
# explicit breaks match
expect_equal(weighted_hist(x, breaks = c(1,3,6,10)), hist(x, breaks = c(1,3,6,10), plot = FALSE))
# hist with some values of breaks fails on length(x) == 1, but all these should
# be the same so we test against hist with explicit breaks equal to what we want
for (breaks in list("Sturges", "Scott", "FD")) {
expect_equal(weighted_hist(1, breaks = !!breaks), hist(1, breaks = c(0.5, 1.5), plot = FALSE))
}
})
test_that("weighted_hist is equivalent to hist on weighted samples", {
x = c(1,1,1,1,2,2,2,3,3,4,6)
xw = c(1:4,6)
w = c(4:1,1)
# breaks / nclass functions match
for (breaks in list(c("Sturges", "Sturges"), c("Scott","scott"), c("FD","FD"))) {
breaks_fun = paste0("breaks_", breaks[[1]])
nclass_fun = paste0("nclass.", breaks[[2]])
expect_equal((!!breaks_fun)(xw, w), (!!nclass_fun)(x))
}
# explicit breaks match
wh = weighted_hist(xw, weights = w, breaks = c(1,3,4,7))
wh$xname = "x"
expect_equal(wh, hist(x, breaks = c(1,3,4,7), plot = FALSE))
})
# breaks_fixed ------------------------------------------------------------
test_that("breaks_fixed works on n = 1", {
expect_equal(breaks_fixed(2), c(1.5, 2.5))
})
# breaks_quantiles --------------------------------------------------------
test_that("breaks_quantiles works", {
x = c(1,2,3,3,4,5,8,2,7)
x1 = c(rep(10,20), 10.1)
x2 = c(rep(10,1000), 10.1)
expect_equal(breaks_quantiles(0), 1)
expect_equal(breaks_quantiles(c(0,0)), 1)
expect_equal(breaks_quantiles(x, max_n = 4), quantile(x, ppoints(5, a = 1), names = FALSE))
expect_equal(breaks_quantiles(x1), c(10, 10.1))
expect_equal(breaks_quantiles(x2), c(10, 10.1))
})
# align functions ---------------------------------------------------------
test_that("align functions work", {
x = c(1,2,3,4,5,6)
breaks = c(0.25, 2.25, 4.25, 6.25)
expect_equal(
weighted_hist(x, breaks = breaks, align = 0.25),
weighted_hist(x, breaks = breaks - 0.25)
)
expect_equal(
weighted_hist(x, breaks = breaks, align = align_none()),
weighted_hist(x, breaks = breaks)
)
expect_equal(
weighted_hist(x, breaks = breaks, align = align_center(at = 2)),
weighted_hist(x, breaks = breaks + 0.75)
)
expect_equal(
weighted_hist(x, breaks = breaks, align = align_boundary(at = 2)),
weighted_hist(x, breaks = breaks - 0.25)
)
})
# argument preconditions --------------------------------------------------
test_that("align is valid", {
expect_error(weighted_hist(1:10, align = -1), "must be between 0 and the bin width")
})
test_that("breaks are valid", {
expect_error(weighted_hist(1:10, breaks = c(1,2)), "must\\s+cover\\s+all\\s+values")
})
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.