genperms: Generates a permutation matrix for blocked, clustered (or...

Description Usage Arguments Value Warning Author(s) References Examples

View source: R/genperms.R

Description

Given complete randomization of clusters (even of length 1) in blocks (even of length N), genperms() produces either an exact or approximate permutation matrix. When the number of actual permutations exceeds a user specified value (maxiter), the function produces an approximate permutations matrix via repeated randomization

Usage

1
genperms(Z, blockvar = NULL, clustvar = NULL, maxiter = 10000)

Arguments

Z

binary vector (0 or 1) of N-length, treatment indicator

blockvar

positive integer vector of N-length, with unique values indicating different blocks

clustvar

positive integer vector of N-length, with unique values indicating different clusters

maxiter

maximum number of permutations to be included in the permutation matrix

Value

N-by-r permutation matrix, where r is the smaller of maxiter and the true number of permutations

Warning

genperms may use large amounts of memory and computational power, and may not be well-suited for large datasets. We recommend starting with maxiter set at low values before attempting to create a permutation matrix with a large number of permutations.

Author(s)

Peter M. Aronow <peter.aronow@yale.edu>; Cyrus Samii <cds2083@nyu.edu>

References

Gerber, Alan S. and Donald P. Green. 2012. Field Experiments: Design, Analysis, and Interpretation. New York: W.W. Norton.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
y <- c(8,6,2,0,3,1,1,1,2,2,0,1,0,2,2,4,1,1) 
Z <- c(1,1,0,0,1,1,0,0,1,1,1,1,0,0,1,1,0,0)
cluster <- c(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9)
block <- c(rep(1,4),rep(2,6),rep(3,8))

perms <- genperms(Z,blockvar=block, clustvar=cluster) # all possible permutations
probs <- genprobexact(Z,blockvar=block, clustvar=cluster) # probability of treatment
ate <- estate(y,Z,prob=probs) # estimate the ATE

## Conduct Sharp Null Hypothesis Test of Zero Effect for Each Unit

Ys <- genouts(y,Z,ate=0) # generate potential outcomes under sharp null of no effect
distout <- gendist(Ys,perms, prob=probs) # generate sampling dist. under sharp null
dispdist(distout, ate)  # display characteristics of sampling dist. for inference

## Generate Sampling Distribution Around Estimated ATE

Ys <- genouts(y,Z,ate=ate) ## generate potential outcomes under tau = ATE
distout <- gendist(Ys,perms, prob=probs) # generate sampling dist. under tau = ATE
dispdist(distout, ate)  ## display characteristics of sampling dist. for inference

Example output

$two.tailed.p.value
[1] 0.1666667

$two.tailed.p.value.abs
[1] 0.1944444

$greater.p.value
[1] 0.08333333

$lesser.p.value
[1] 0.9444444

$quantile
     2.5%     97.5% 
-2.055556  2.222222 

$sd
[1] 1.440879

$exp.val
[1] 1.048454e-16

$two.tailed.p.value
[1] 1

$two.tailed.p.value.abs
[1] 0.5

$greater.p.value
[1] 0.5

$lesser.p.value
[1] 0.5833333

$quantile
     2.5%     97.5% 
0.2222222 3.6111111 

$sd
[1] 1.074393

$exp.val
[1] 2

ri documentation built on May 2, 2019, 6:51 a.m.