tests/testthat/test-triples.R

test_that("triples gives expected result across strata", {
  set.seed(1)
  n <- 40
  x <- rnorm(n, 0, 1)
  nt <- floor(n * 0.4)
  nc <- n - nt
  z <- c(rep(1, nt), rep(0, nc))
  ps <- glm(z ~ x, family = binomial)$fitted.values
  ps_st <- cut(ps, c(0, quantile(ps, 1/3 * 1:2), 1), labels = 1:3)

  dist <- dist_mahal(data.frame(x = x), z, ps_st)
  triplesm <- triples(cost = dist, z = z, st = ps_st, solver = "rlemon")
  c_drop <- sum(table(ps_st) %% 3)

  expect_equal(1 * sum(triplesm$m$nOfTreated == 1) + 2 * sum(triplesm$m$nOfTreated == 2), nt)
  expect_equal(2 * sum(triplesm$m$nOfTreated == 1) + 1 * sum(triplesm$m$nOfTreated == 2), nc - c_drop)
  expect_equal(sum(!is.na(unique(c(triplesm$m$itreated, triplesm$m$jcontrol,
                                   triplesm$m$kthird)))), nt + nc - c_drop)
  expect_equal(sum(triplesm$m$costStep1) + sum(triplesm$m$costStep2), 1.66256937)
})

Try the triplesmatch package in your browser

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

triplesmatch documentation built on Sept. 11, 2024, 7:46 p.m.