od.3: Optimal sample allocation calculation for three-level CRTs

Description Usage Arguments Value References Examples

Description

The optimal design of three-level cluster randomized trials (CRTs) is to choose the sample allocation that minimizes the variance of treatment effect under fixed budget and cost structure. The optimal design parameters include the level-1 sample size per level-2 unit (n), the level-2 sample size per level-3 unit (J), and the proportion of level-3 clusters/groups to be assigned to treatment (p). This function solves the optimal n, J and/or p with and without constraints.

Usage

1
2
3
4
5
6
7
od.3(n = NULL, J = NULL, p = NULL, icc2 = NULL, icc3 = NULL,
  r12 = NULL, r22 = NULL, r32 = NULL, c1 = NULL, c2 = NULL,
  c3 = NULL, c1t = NULL, c2t = NULL, c3t = NULL, m = NULL,
  plots = TRUE, plot.by = NULL, nlim = NULL, Jlim = NULL,
  plim = NULL, varlim = NULL, nlab = NULL, Jlab = NULL,
  plab = NULL, varlab = NULL, vartitle = NULL, verbose = TRUE,
  iter = 100, tol = 1e-10)

Arguments

n

the level-1 sample size per level-2 unit.

J

the level-2 sample size per level-3 unit.

p

the proportion of level-3 clusters/units assigned to treatment.

icc2

the unconditional intraclass correlation coefficient (ICC) at level 2.

icc3

the unconditional intraclass correlation coefficient (ICC) at level 3.

r12

the proportion of level-1 variance explained by covariates.

r22

the proportion of level-2 variance explained by covariates.

r32

the proportion of level-3 variance explained by covariates.

c1

the cost of sampling one level-1 unit in control condition.

c2

the cost of sampling one level-2 unit in control condition.

c3

the cost of sampling one level-3 unit in control condition.

c1t

the cost of sampling one level-1 unit in treatment condition.

c2t

the cost of sampling one level-2 unit in treatment condition.

c3t

the cost of sampling one level-3 unit in treatment condition.

m

total budget, default is the total costs of sampling 60 level-3 units across treatment conditions.

plots

logical, provide variance plots if TRUE, otherwise not; default value is TRUE.

plot.by

specify variance plot by n, J and/or p; default is plot.by = list(n = "n", J = "J", p = "p").

nlim

the plot range for n, default value is c(2, 50).

Jlim

the plot range for J, default value is c(2, 50).

plim

the plot range for p, default value is c(0, 1).

varlim

the plot range for variance, default value is c(0, 0.05).

nlab

the plot label for n, default value is "Level-1 Sample Size: n".

Jlab

the plot label for J, default value is "Level-2 Sample Size: J".

plab

the plot label for p, default is "Proportion Level-3 Units in Treatment: p"

varlab

the plot label for variance, default value is "Variance".

vartitle

the title of variance plot, default value is NULL.

verbose

logical; print the values of n, J, and p if TRUE, otherwise not; default is TRUE.

iter

number of iterations; default value is 100.

tol

tolerance for convergence; default value is 1e-10.

Value

unconstrained or constrained optimal sample allocation (n, J, and p). The function also returns the variance of treatment effect, function name, design type, and parameters used in the calculation.

References

Shen, Z., & Kelcey, B. (revise & resubmit). Optimal sample allocation under unequal costs in cluster-randomized trials. Journal of Educational and Behavioral Statistics.

Shen, Z. (in progress). Using optimal sample allocation to improve statistical precision and design efficiency for multilevel randomized trials (Unpublished doctoral dissertation). University of Cincinnati, Cincinnati, OH.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# unconstrained optimal design #---------
  myod1 <- od.3(icc2 = 0.2, icc3 = 0.1, r12 = 0.5, r22 = 0.5, r32 = 0.5,
             c1 = 1, c2 = 5, c3 = 25, c1t = 1, c2t = 50, c3t = 250,
             varlim = c(0.005, 0.025))
  myod1$out # output
# plots by p and J
  myod1 <- od.3(icc2 = 0.2, icc3 = 0.1, r12 = 0.5, r22 = 0.5, r32 = 0.5,
             c1 = 1, c2 = 5, c3 = 25, c1t = 1, c2t = 50, c3t = 250,
             varlim = c(0.005, 0.025), plot.by = list(p = 'p', J = 'J'))

# constrained optimal design with J = 20 #---------
  myod2 <- od.3(icc2 = 0.2, icc3 = 0.1, r12 = 0.5, r22 = 0.5, r32 = 0.5, J = 20,
             c1 = 1, c2 = 5, c3 = 25, c1t = 1, c2t = 50, c3t = 250,
             varlim = c(0, 0.025))
  myod2$out
# relative efficiency (RE)
  myre <- re(od = myod1, subod= myod2)
  myre$re # RE = 0.53

# constrained optimal design with p = 0.5 #---------
  myod3 <- od.3(icc2 = 0.2, icc3 = 0.1, r12 = 0.5, r22 = 0.5, r32 = 0.5, p = 0.5,
             c1 = 1, c2 = 5, c3 = 25, c1t = 1, c2t = 50, c3t = 250,
             varlim = c(0.005, 0.025))
  myod3$out
# relative efficiency (RE)
  myre <- re(od = myod1, subod= myod3)
  myre$re # RE = 0.84

# constrained n, J and p, no calculation performed #---------
  myod4 <- od.3(icc2 = 0.2, icc3 = 0.1, r12 = 0.5, r22 = 0.5, r32 = 0.5, n = 10, J = 10, p = 0.5,
             c1 = 1, c2 = 5, c3 = 25, c1t = 1, c2t = 50, c3t = 250,
             varlim = c(0, 0.025))
  myod4$out
# relative efficiency (RE)
  myre <- re(od = myod1, subod= myod4)
  myre$re # RE = 0.61

odr documentation built on May 2, 2019, 9:42 a.m.