tests/testthat/test-prop_strat.R

test_that("propensity score strata created", {
    set.seed(28)
    samp_rows <- sample(1:nrow(rhc_X), 100)
    X <- rhc_X[samp_rows, sample(1:(ncol(rhc_X)-2), 5)]
    z <- rhc_X[samp_rows, "z"]
    nstrata <- 2
    ps <- prop_strat(X = X, z = z, nstrata = nstrata)
    expect_vector(ps$base_strata)
})

test_that("correct amount of propensity score strata created", {
  set.seed(30)
  samp_rows <- sample(1:nrow(rhc_X), 100)
  X <- rhc_X[samp_rows, sample(1:(ncol(rhc_X)-2), 10)]
  z <- rhc_X[samp_rows, "z"]
  nstrata <- 4
  ps <- prop_strat(X = X, z = z, nstrata = nstrata)
  expect_equal(length(unique(ps$base_strata)), nstrata)
})


test_that("error quantiles of propensity score aren't unique", {
  set.seed(2)
  samp_rows <- sample(1:nrow(rhc_X), 100)
  X <- rhc_X[samp_rows, sample(1:(ncol(rhc_X)-2), 10)]
  z <- rhc_X[samp_rows, "z"]
  X <- cbind(X, z)
  nstrata <- 8
  expect_error(prop_strat(X = X, z = z, nstrata = nstrata),
               "quantiles of the propensity score are not unique")
})


test_that("propensity score strata have correct sizes", {
  set.seed(42)
  samp_rows <- sample(1:nrow(rhc_X), 100)
  X <- rhc_X[samp_rows, sample(1:(ncol(rhc_X)-2), 10)]
  z <- rhc_X[samp_rows, "z"]
  ps <- prop_strat(X = X, z = z)
  expect_true(all(table(ps$base_strata) %in% c(floor(length(z)/5), ceiling(length(z)/5))))
})

test_that("all units are assigned to propensity score strata", {
  set.seed(52)
  samp_rows <- sample(1:nrow(rhc_X), 100)
  X <- rhc_X[samp_rows, sample(1:(ncol(rhc_X)-2), 5)]
  z <- rhc_X[samp_rows, "z"]
  ps <- prop_strat(X = X, z = z)
  expect_equal(sum(!is.na(ps$base_strata)), length(z))
})

test_that("warning if no treated or control units", {
  set.seed(25)
  samp_rows <- sample(1:nrow(rhc_X), 100)
  X <- rhc_X[samp_rows, sample(1:(ncol(rhc_X)-2), 10)]
  z <- rhc_X[samp_rows, "z"]
  expect_warning(prop_strat(X = X, z = z, nstrata = 20), regexp = "no treated and/or control units")
})

Try the optrefine package in your browser

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

optrefine documentation built on April 19, 2023, 1:08 a.m.