pcr: Propensity-Constrained Randomization

View source: R/pcr.R

pcrR Documentation

Propensity-Constrained Randomization

Description

Performs propensity-contstrained randomization on a given data set with measured covariates on all units.

Usage

pcr(x, nTreat, M, m)

Arguments

x

Data frame of covariates.

nTreat

Number of units to be treated.

M

Number of candidate permutations to create.

m

Number of permutations to keep.

Details

Given the parameters, pcr generates M unique permutations by calling genPerms. For each permutation, the empirical propensity scores are computed and the variance returned by getVar. Finally, the m permutations with the smallest propensity score variance are found. The m permutations returned in best can then be used to perform randomization and randomization inference. We suggest M >= 10000 and m/M <= 0.10.

Value

treatments

The (approximately) M permutations generated by genPerms.

variance

A vector of the propensity score variances for all M permutations in treatments.

cutoff

The calculated m/M quantile of propensity score variances.

best

The column indices of the permutations in treatments with propensity score variance below cutoff.

Author(s)

Travis Loux

References

Loux, T.M. (2015) Randomization, matching, and propensity scores in the design and analysis of experimental studies with known covariates. Statistics in Medicine. 34(4), 558-570. DOI: 10.1002/sim.6361

Examples

# 1:1 allocation, M small
dat1 = data.frame(x1=rnorm(50),
                  x2=rnorm(50),
                  x3=sample(c('a','b','c'), size=50, replace=TRUE))
trial1 = pcr(x=dat1, nTreat=25, M=500, m=50)

# 1:1 allocation, M large
dat2 = data.frame(x1=rnorm(10),
                  x2=rnorm(10),
                  x3=sample(c('a','b','c'), size=10, replace=TRUE))
trial2 = pcr(x=dat2, nTreat=5, M=200, m=20)

# non-1:1 allocation, M small
dat3 = data.frame(x1=rnorm(50),
                  x2=rnorm(50),
                  x3=sample(c('a','b','c'), size=50, replace=TRUE))
trial3 = pcr(x=dat3, nTreat=35, M=200, m=20)

# non-1:1 allocation, M large
dat4 = data.frame(x1=rnorm(10),
                  x2=rnorm(10),
                  x3=sample(c('a','b','c'), size=10, replace=TRUE))
trial4 = pcr(x=dat4, nTreat=6, M=300, m=30)

PropScrRand documentation built on April 24, 2022, 1:05 a.m.