tests/testthat/test-06-detection.R

test_that("detection probability increases with prevalence", {
  sim <- surv_simulate(n_regions = 3, n_weeks = 10, seed = 5)
  d <- surv_design(sim$sequences, ~ region,
                   sim$population[c("region", "seq_rate")], sim$population)
  p1 <- surv_detection_probability(d, 0.01)
  p2 <- surv_detection_probability(d, 0.05)
  p3 <- surv_detection_probability(d, 0.10)
  expect_true(p1$overall < p2$overall)
  expect_true(p2$overall < p3$overall)
})

test_that("required sequences decreases with prevalence", {
  n1 <- surv_required_sequences(0.01)
  n2 <- surv_required_sequences(0.05)
  n3 <- surv_required_sequences(0.10)
  expect_true(n1 > n2)
  expect_true(n2 > n3)
})

test_that("required_sequences gives correct known result", {
  n <- surv_required_sequences(0.01, target_probability = 0.95)
  expect_equal(n, 299L)
})

test_that("detection probability with delay adjustment", {
  sim <- surv_simulate(n_regions = 3, n_weeks = 10, seed = 6)
  d <- surv_design(sim$sequences, ~ region,
                   sim$population[c("region", "seq_rate")], sim$population)
  delay <- surv_estimate_delay(d)
  det <- surv_detection_probability(d, 0.05, delay_fit = delay)
  expect_true(det$overall > 0 && det$overall < 1)
})

test_that("multi-period detection accumulates", {
  sim <- surv_simulate(n_regions = 3, n_weeks = 8, seed = 7)
  d <- surv_design(sim$sequences, ~ region,
                   sim$population[c("region", "seq_rate")], sim$population)
  n1 <- surv_detection_probability(d, 0.01, n_periods = 1)
  n4 <- surv_detection_probability(d, 0.01, n_periods = 4)
  expect_true(n4$cumulative$p_detect[4] > n1$overall)
})

Try the survinger package in your browser

Any scripts or data that you put into this service are public.

survinger documentation built on April 27, 2026, 9:10 a.m.