power.2: Budget and/or sample size, power, MDES calculation for...

View source: R/power.2.R

power.2R Documentation

Budget and/or sample size, power, MDES calculation for two-level CRTs detecting main effects

Description

This function can calculate required budget for desired power, power or minimum detectable effect size (MDES) under fixed budget for two-level cluster randomized trials (CRTs). It also can perform conventional power analyses (e.g., required sample size, power, and MDES calculation).

Usage

power.2(
  cost.model = TRUE,
  expr = NULL,
  constraint = NULL,
  sig.level = 0.05,
  two.tailed = TRUE,
  d = NULL,
  power = NULL,
  m = NULL,
  n = NULL,
  J = NULL,
  p = NULL,
  icc = NULL,
  r12 = NULL,
  r22 = NULL,
  q = NULL,
  c1 = NULL,
  c2 = NULL,
  c1t = NULL,
  c2t = NULL,
  dlim = NULL,
  powerlim = NULL,
  Jlim = NULL,
  mlim = NULL,
  rounded = TRUE
)

Arguments

cost.model

Logical; power analyses accommodating costs and budget (e.g., required budget for desired power, power/MDES under fixed budget) if TRUE, otherwise conventional power analyses (e.g., required sample size, power, or MDES calculation); default value is TRUE.

expr

Returned object from function od.2; default is NULL; if expr is specified, parameter values of icc, r12, r22, c1, c2, c1t, c2t, n, and p used or solved in function od.2 will be passed to the current function; only the values of n and p that specified or solved in function od.2 can be overwritten if constraint is specified.

constraint

Specify the constrained values of n and/or p in list format to overwrite those from expr; default is NULL.

sig.level

Significance level or type I error rate, default value is 0.05.

two.tailed

Logical; two-tailed tests if TRUE, otherwise one-tailed tests; default value is TRUE.

d

Effect size.

power

Statistical power.

m

Total budget.

n

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

J

The total level-2 sample size.

p

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

r22

The proportion of level-2 variance explained by covariates.

q

The number of level-2 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.

c2t

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

dlim

The range for solving the root of effect size (d) numerically, default value is c(0, 5).

powerlim

The range for solving the root of power (power) numerically, default value is c(1e-10, 1 - 1e-10).

Jlim

The range for searching the root of level-2 sample size (J) numerically, default is c(4, 10e10).

mlim

The range for searching the root of budget (m) numerically, default is the costs sampling Jlim level-2 units across treatment conditions or c(4 * Jcost, 10e10 * Jcost), with Jcost = ((1 - p) * (c1 * n + c2) + p * (c1t * n + c2t)).

rounded

Logical; round n and p that are from functions od.2 to integer and two decimal places, respectively if TRUE, otherwise no rounding; default value is TRUE.

Value

Required budget (and/or required level-2 sample size), statistical power, or MDES depending on the specification of parameters. The function also returns the function name, design type, and parameters used in the calculation.

References

Shen, Z., & Kelcey, B. (2020). Optimal sample allocation under unequal costs in cluster-randomized trials. Journal of Educational and Behavioral Statistics, 45(4): 446–474. <https://doi.org/10.3102/1076998620912418>

Examples

# Unconstrained optimal design
  myod1 <- od.2(icc = 0.2, r12 = 0.5, r22 = 0.5, c1 = 1, c2 = 5, c1t = 1, c2t = 50)
  myod1$out   # n = 8.9, p = 0.33

# ------- Power analyses by default considering costs and budget -------
# Required budget and sample size
  mym.1 <- power.2(expr = myod1, d = 0.2, q = 1, power = 0.8)
  mym.1$out  # m = 3755, J = 130.2
  #mym.1$par  # parameters and their values used for the function
# Or, equivalently, specify every argument in the function
  mym.1 <- power.2(d = 0.2, power = 0.8, icc = 0.2,
                 c1 = 1, c2 = 5, c1t = 1, c2t = 50,
                  r12 = 0.5, r22 = 0.5, n = 9, p = 0.33, q = 1)
# Required budget and sample size with constrained p
  mym.2 <- power.2(expr = myod1, d = 0.2, q = 1, power = 0.8,
               constraint = list(p = 0.5))
  mym.2$out  # m = 4210, J = 115.3
# Required budget and sample size with constrained p and n
  mym.3 <- power.2(expr = myod1, d = 0.2, q = 1, power = 0.8,
               constraint = list(p = 0.5, n = 20))
  mym.3$out  # m = 4568, J = 96.2

# Power calculation
  mypower <- power.2(expr = myod1, q = 1, d = 0.2, m = 3755)
  mypower$out  # power = 0.80
# Power calculation under constrained p (p = 0.5)
  mypower.1 <- power.2(expr = myod1, q = 1, d = 0.2, m = 3755,
               constraint = list(p = 0.5))
  mypower.1$out  # power = 0.75

# MDES calculation
  mymdes <- power.2(expr = myod1, q = 1, power = 0.80, m = 3755)
  mymdes$out  # d = 0.20


# ------- Conventional power analyses with cost.model = FALSE-------
# Required J
  myJ <- power.2(cost.model = FALSE, expr = myod1, d = 0.2, q = 1, power = 0.8)
  myJ$out  # J = 130.2
  #myJ$par  # parameters and their values used for the function
# Or, equivalently, specify every argument in the function
  myJ <- power.2(cost.model = FALSE, d = 0.2, power = 0.8, icc = 0.2,
                  r12 = 0.5, r22 = 0.5, n = 9, p = 0.33, q = 1)

# Power calculation
  mypower1 <- power.2(cost.model = FALSE, expr = myod1, J = 130, d = 0.2, q = 1)
  mypower1$out  # power = 0.80

# MDES calculation
  mymdes1 <- power.2(cost.model = FALSE, expr = myod1, J = 130, power = 0.8, q = 1)
  mymdes1$out  # d = 0.20


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