tests/testthat/test-estimands.R

library(testthat)

test_that("rmst_dynamic supports individual, grouped, and at_tau checks", {
  f <- make_final_scope_fixture()
  tau_test <- c(1.2, 2.7, 4.6)

  resA <- rmst_dynamic(f$xA, tau = tau_test)
  resB <- rmst_dynamic(f$xB, tau = tau_test)
  resAll <- rmst_dynamic(f$x_all)

  expect_false(is.null(resA$individual))
  expect_false(is.null(resB$individual))
  expect_false(is.null(resAll$individual))
  expect_equal(length(resA$mean), length(f$time))
  expect_equal(length(resB$mean), length(f$time))
  expect_equal(nrow(resAll$individual), f$nA + f$nB)

  expect_true(all(apply(resAll$individual, 1, function(v) all(diff(v) >= -1e-10))))

  gA <- subset(resAll$by, group == "A")$estimate
  gB <- subset(resAll$by, group == "B")$estimate
  expect_lt(max(abs(gA - resA$mean)), 1e-10)
  expect_lt(max(abs(gB - resB$mean)), 1e-10)

  rmstA_true <- vapply(
    tau_test,
    function(tau) mean((1 - exp(-f$lambdaA * tau)) / f$lambdaA),
    numeric(1)
  )
  expect_lt(max(abs(resA$at_tau$estimate - rmstA_true)), 0.02)
})

test_that("rmst_delta returns valid curve and tau summaries", {
  f <- make_final_scope_fixture()
  tau_test <- c(1.2, 2.7, 4.6)

  d <- rmst_delta(f$xA, f$xB, tau = tau_test)

  expect_equal(length(d$delta), length(f$time))
  expect_equal(nrow(d$at_tau), length(tau_test))
  expect_gt(mean(d$delta), 0)
})

Try the tvrmst package in your browser

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

tvrmst documentation built on March 17, 2026, 1:07 a.m.