quickblock provides functions for assigning treatments
in randomized experiments using near-optimal threshold blocking. The
package is made with large data sets in mind and derives blocks more
than an order of magnitude quicker than other methods.
quickblock is on CRAN and can be installed by
running:
install.packages("quickblock")It is recommended to use the stable CRAN version, but the latest development version can be installed directly from Github using devtools:
if (!require("devtools")) install.packages("devtools")
devtools::install_github("fsavje/quickblock")The package contains compiled code, and you must have a development
environment to install the development version. (Use
devtools::has_devel() to check whether you do.) If no
development environment exists, Windows users download and install Rtools and
macOS users download and install Xcode.
# Load package
library("quickblock")
# Construct example data
my_data <- data.frame(x1 = runif(100),
x2 = runif(100))
# Make distances to be used when making blocking
my_distances <- distances(my_data, dist_variables = c("x1", "x2"))
# Make blocking with at least four units in each block
my_blocking <- quickblock(my_distances, size_constraint = 4L)
# Two treatment conditions
my_treatments <- assign_treatment(my_blocking, treatments = c("T", "C"))
# Run experiment
my_outcomes <- my_data$x1 + (my_treatments == "T") * my_data$x2 + rnorm(100)
# Estimate treatment effects and variance
blocking_estimator(my_outcomes, my_blocking, my_treatments)