od.2m: Optimal sample allocation calculation for two-level MRTs...

View source: R/od.2m.R

od.2mR Documentation

Optimal sample allocation calculation for two-level MRTs detecting main effects

Description

The optimal design of two-level multisite randomized trials (MRTs) detecting main effects is to calculate the sample allocation that minimizes the variance of a treatment effect under a fixed budget, which is approximately the optimal sample allocation that maximizes statistical power under a fixed budget. The optimal design parameters include the level-one sample size per site (n) and the proportion of level-one unit to be assigned to treatment (p). This function solves the optimal n and/or p with and without a constraint.

Usage

od.2m(
  n = NULL,
  p = NULL,
  icc = NULL,
  r12 = NULL,
  r22m = NULL,
  c1 = NULL,
  c2 = NULL,
  c1t = NULL,
  omega = NULL,
  m = NULL,
  plots = TRUE,
  plot.by = NULL,
  nlim = NULL,
  plim = NULL,
  varlim = NULL,
  nlab = 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.

p

The proportion of level-4 clusters/units to be assigned to treatment.

icc

The unconditional intraclass correlation coefficient (ICC) in population or in each treatment condition.

r12

The proportion of level-1 variance explained by covariates.

r22m

The proportion of variance of site-specific treatment effect 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.

c1t

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

omega

The standardized variance of site-specific treatment effect.

m

Total budget, default is the total costs of sampling 60 sites.

plots

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

plot.by

Plot the variance by n and/or p; default value is plot.by = list(n = "n", p = "p").

nlim

The plot range for n, 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".

plab

The plot label for p, default value is "Proportion Level-1 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 and p if TRUE, otherwise not; default value 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 and p). The function also returns the variance of the treatment effect, function name, design type, and parameters used in the calculation.

References

Shen, Z., & Kelcey, B. (in press). Optimal sample allocation in multisite randomized trials. The Journal of Experimental Education. <https://doi.org/10.1080/00220973.2020.1830361>

Examples

# Unconstrained optimal design #---------
  myod1 <- od.2m(icc = 0.2, omega = 0.02, r12 = 0.5, r22m = 0.5,
              c1 = 1, c2 = 10, c1t = 10,
              varlim = c(0, 0.005))
  myod1$out # n = 20, p =0.37
# Plots by p
  myod1 <- od.2m(icc = 0.2, omega = 0.02,
              r12 = 0.5, r22m = 0.5,
              c1 = 1, c2 = 10, c1t = 10,
              varlim = c(0, 0.005), plot.by = list(p = 'p'))

# Constrained optimal design with p = 0.5 #---------
  myod2 <- od.2m(icc = 0.2, omega = 0.02,
              r12 = 0.5, r22m = 0.5,
              c1 = 1, c2 = 10, c1t = 10,
              varlim = c(0, 0.005), p = 0.5)
  myod2$out
# Relative efficiency (RE)
  myre <- re(od = myod1, subod= myod2)
  myre$re # RE = 0.86

# Constrained optimal design with n = 5 #---------
  myod3 <- od.2m(icc = 0.2, omega = 0.02,
              r12 = 0.5, r22m = 0.5, c1 = 1, c2 = 10,
              c1t = 10, varlim = c(0, 0.005), n = 5)
  myod3$out
# Relative efficiency (RE)
  myre <- re(od = myod1, subod= myod3)
  myre$re # RE = 0.79

# Constrained n and p, no calculation performed #---------
  myod4 <- od.2m(icc = 0.2, omega = 0.02, r12 = 0.5, r22m = 0.5,
              c1 = 1, c2 = 10, c1t = 10,
              varlim = c(0, 0.005), p = 0.5, n = 10)
  myod4$out
# Relative efficiency (RE)
  myre <- re(od = myod1, subod= myod4)
  myre$re # RE = 0.84


odr documentation built on Aug. 8, 2023, 5:13 p.m.