od.4: Optimal sample allocation calculation for four-level CRTs...

View source: R/od.4.R

od.4R Documentation

Optimal sample allocation calculation for four-level CRTs detecting main effects

Description

The optimal design of four-level cluster randomized trials (CRTs) is to calculate the optimal sample allocation that minimizes the variance of treatment effect under fixed budget, which is approximately the optimal sample allocation that maximizes statistical power under a fixed budget. 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), the level-3 sample size per level-4 unit (K), and the proportion of level-4 clusters/groups to be assigned to treatment (p). This function solves the optimal n, J, K and/or p with and without constraints.

Usage

od.4(
  n = NULL,
  J = NULL,
  K = NULL,
  p = NULL,
  icc2 = NULL,
  icc3 = NULL,
  icc4 = NULL,
  r12 = NULL,
  r22 = NULL,
  r32 = NULL,
  r42 = NULL,
  c1 = NULL,
  c2 = NULL,
  c3 = NULL,
  c4 = NULL,
  c1t = NULL,
  c2t = NULL,
  c3t = NULL,
  c4t = NULL,
  m = NULL,
  plots = TRUE,
  plot.by = NULL,
  nlim = NULL,
  Jlim = NULL,
  Klim = NULL,
  plim = NULL,
  varlim = NULL,
  nlab = NULL,
  Jlab = NULL,
  Klab = 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.

K

The level-3 sample size per level-4 unit.

p

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

icc2

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

icc3

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

icc4

The unconditional intraclass correlation coefficient (ICC) at level 4.

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.

r42

The proportion of level-4 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.

c4

The cost of sampling one level-4 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.

c4t

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

m

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

plots

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

plot.by

Plot the variance by n, J, K and/or p; default value is plot.by = list(n = "n", J = "J", K = 'K', 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).

Klim

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

Klab

The plot label for K, default value is "Level-3 Sample Size: K".

plab

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

Examples

# Unconstrained optimal design #---------
  myod1 <- od.4(icc2 = 0.2, icc3 = 0.1, icc4 = 0.05,
              r12 = 0.5, r22 = 0.5, r32 = 0.5, r42 = 0.5,
              c1 = 1, c2 = 5, c3 = 25, c4 = 125,
              c1t = 1, c2t = 50, c3t = 250, c4t = 2500,
              varlim = c(0, 0.01))
  myod1$out # output
# Plots by p and K
  myod1 <- od.4(icc2 = 0.2, icc3 = 0.1, icc4 = 0.05,
              r12 = 0.5, r22 = 0.5, r32 = 0.5, r42 = 0.5,
              c1 = 1, c2 = 5, c3 = 25, c4 = 125,
              c1t = 1, c2t = 50, c3t = 250, c4t = 2500,
              varlim = c(0, 0.01), plot.by = list(p = 'p', K = 'K'))

# Constrained optimal design with p = 0.5 #---------
  myod2 <- od.4(icc2 = 0.2, icc3 = 0.1, icc4 = 0.05, p = 0.5,
              r12 = 0.5, r22 = 0.5, r32 = 0.5, r42 = 0.5,
              c1 = 1, c2 = 5, c3 = 25, c4 = 125,
              c1t = 1, c2t = 50, c3t = 250, c4t = 2500,
              varlim = c(0, 0.01))
  myod2$out
# Relative efficiency (RE)
  myre <- re(od = myod1, subod= myod2)
  myre$re # RE = 0.78

# Constrained optimal design with K = 20 #---------
  myod3 <- od.4(icc2 = 0.2, icc3 = 0.1, icc4 = 0.05,  K = 20,
              r12 = 0.5, r22 = 0.5, r32 = 0.5, r42 = 0.5,
              c1 = 1, c2 = 5, c3 = 25, c4 = 125,
              c1t = 1, c2t = 50, c3t = 250, c4t = 2500,
              varlim = c(0, 0.01))
  myod3$out
# Relative efficiency (RE)
  myre <- re(od = myod1, subod= myod3)
  myre$re # RE = 0.67

# Constrained n, J, K and p, no calculation performed #---------
  myod4 <- od.4(icc2 = 0.2, icc3 = 0.1, icc4 = 0.05,
              r12 = 0.5, n = 10, J = 10, K = 20, p = 0.5,
              r22 = 0.5, r32 = 0.5, r42 = 0.5,
              c1 = 1, c2 = 5, c3 = 25, c4 = 125,
              c1t = 1, c2t = 50, c3t = 250, c4t = 2500,
              varlim = c(0, 0.01))
  myod4$out
# Relative efficiency (RE)
  myre <- re(od = myod1, subod= myod4)
  myre$re # RE = 0.27


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