#test calculations
test_that("rates and CIs calculate correctly",{
expect_equal(data.frame(select(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator),1:6,8:9)),
data.frame(select(slice(test_Rate,9:16),1:6,9:10)),
ignore_attr = TRUE, info="test default")
expect_equal(data.frame(select(phe_rate(slice(test_Rate,9:16)[1:3],
Numerator,Denominator, confidence = c(0.95,0.998)),1:8,10:11)),
data.frame(select(slice(test_Rate,9:16),1:10)),
ignore_attr = TRUE, info="test full output 2 CIs")
expect_equal(data.frame(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator, type="standard")),
data.frame(select(slice(test_Rate,9:16),1:6)),
ignore_attr = TRUE, info="test standard")
expect_equal(data.frame(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator,
confidence = c(0.95,0.998), type="standard")),
data.frame(select(slice(test_Rate,9:16),1:8)),
ignore_attr = TRUE, info="test standard 2 CIs")
expect_equal(data.frame(phe_rate(slice(test_Rate,20)[1:3],Numerator,Denominator, type="standard")),
data.frame(select(slice(test_Rate,20),1:6)),
ignore_attr = TRUE, info="test num > denom")
expect_equal(data.frame(select(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator, confidence=99.8),1:6,8:9)),
data.frame(select(slice(test_Rate,9:16),1:4,7:10)),
ignore_attr = TRUE, info="test confidence")
expect_equal(data.frame(select(phe_rate(slice(test_Rate,1:8)[1:3],Numerator,Denominator, multiplier=100),1:6,8:9)),
data.frame(select(slice(test_Rate,1:8),1:6,9:10)),
ignore_attr = TRUE, info="test multiplier")
expect_equal(data.frame(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator, type="value")),
data.frame(select(slice(test_Rate,9:16),1:4)),
ignore_attr = TRUE, info="test value")
expect_equal(data.frame(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator,
confidence = c(0.95,0.998), type="value")),
data.frame(select(slice(test_Rate,9:16),1:4)),
ignore_attr = TRUE, info="test value 2 CIs")
expect_equal(data.frame(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator, type="lower")),
data.frame(select(slice(test_Rate,9:16),1:3,5)),
ignore_attr = TRUE, info="test lower")
expect_equal(data.frame(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator,
confidence = c(0.95,0.998), type="lower")),
data.frame(select(slice(test_Rate,9:16),1:3,5,7)),
ignore_attr = TRUE, info="test lower 2 CIs")
expect_equal(data.frame(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator, type="upper")),
data.frame(select(slice(test_Rate,9:16),1:3,6)),
ignore_attr = TRUE, info="test upper")
expect_equal(data.frame(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator,
confidence = c(0.95,0.998), type="upper")),
data.frame(select(slice(test_Rate,9:16),1:3,6,8)),
ignore_attr = TRUE, info="test upper 2 CIs")
expect_equal(data.frame(select(phe_rate(slice(test_Rate,17:19)[1:3],
Numerator,Denominator, type="full"),1:6,8:9)),
data.frame(select(slice(test_Rate,17:19),1:6,9:10)),
ignore_attr = TRUE, info="test NAs")
expect_equal(arrange(data.frame(phe_rate(slice(test_Rate_g,1:8)[1:3], Numerator, Denominator)),Area),
arrange(data.frame(select(test_Rate_g_results,1:9)),Area),
ignore_attr = TRUE, info="test grouped")
expect_equal(data.frame(select(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator, confidence = c(0.95, 0.998)),1:6)),
data.frame(select(slice(test_Rate,9:16),1:6)),
ignore_attr = TRUE, info="test two CIs 95%")
expect_equal(data.frame(select(phe_rate(slice(test_Rate,25:32)[1:3],Numerator,Denominator, confidence = c(0.95, 0.998)),1:4,7,8)),
data.frame(select(slice(test_Rate,25:32),1:6)),
ignore_attr = TRUE, info="test two CIs 99.8%")
expect_equal(data.frame(select(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator, confidence = c(0.95, 0.998)),9)),
data.frame(confidence = rep("95%, 99.8%",8), stringsAsFactors = FALSE),
ignore_attr = TRUE, info="test two CIs metadata")
})
# test error handling
test_that("rates - errors are generated when invalid arguments are used",{
expect_error(phe_rate(data.frame(area=c("Area1","Area2","Area3"),
obs =c(65,80,30),
pop =c(100,100,100)), obs),
"function phe_rate requires at least 3 arguments: data, x, n", info="error invalid number of arguments")
expect_error(phe_rate(data.frame(area=c("Area1","Area2","Area3"),
obs =c(-65,80,30),
pop =c(100,100,100)), obs, pop),
"numerators must be greater than or equal to zero", info="error num < 0")
expect_error(phe_rate(data.frame(area=c("Area1","Area2","Area3"),
obs =c(65,80,30),
pop =c(100,100,0)), obs, pop),
"denominators must be greater than zero", info="error denom = 0")
expect_error(phe_rate(data.frame(area=c("Area1","Area2","Area3"),
obs =c(65,80,30),
pop =c(100,-100,100)), obs, pop),
"denominators must be greater than zero", info="error denom < 0")
expect_error(phe_rate(data.frame(area=c("Area1","Area2","Area3"),
obs =c(65,80,30),
pop =c(100,100,100)), obs, pop, confidence = 0.5),
"confidence level must be between 90 and 100 or between 0.9 and 1", info="error confidence < 0.9")
expect_error(phe_rate(data.frame(area=c("Area1","Area2","Area3"),
obs =c(65,80,30),
pop =c(100,100,100)), obs, pop, confidence = 40),
"confidence level must be between 90 and 100 or between 0.9 and 1", info="error confidence between 1 and 90")
expect_error(phe_rate(data.frame(area=c("Area1","Area2","Area3"),
obs =c(65,80,30),
pop =c(100,100,100)), obs, pop, confidence = 9998),
"confidence level must be between 90 and 100 or between 0.9 and 1", info="error confidence >100")
expect_error(phe_rate(data.frame(area=c("Area1","Area2","Area3"),
obs =c(65,80,30),
pop =c(100,100,100)), obs, pop, type="combined"),
"type must be one of value, lower, upper, standard or full", info="error invalid type")
expect_error(data.frame(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator, confidence = c(0.95, 0.998, 1.00))),
"a maximum of two confidence levels can be provided", info="test more than 2 CIs requested")
expect_error(data.frame(phe_rate(slice(test_Rate,9:16)[1:3],Numerator,Denominator, confidence = c(0.95, 0.98))),
"two confidence levels can only be produced if they are specified as 0.95 and 0.998", info="test default")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.