od.3: Optimal sample allocation calculation for three-level CRTs In odr: Optimal Design and Statistical Power of Multilevel Randomized Trials

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.