330 likes | 421 Views
Health Systems Research and Dynamical Modeling Department of Epidemiology & Public Health. R: weapon of choice for simulation of a step wedge design. Step-wedge design – cluster-randomized design. Time 1 2 3 4 5 O X X X X O O X X X O O O X X O O O O X.
E N D
Health Systems Research and Dynamical Modeling Department of Epidemiology & Public Health R: weapon of choice for simulation of a step wedge design
Step-wedge design – cluster-randomizeddesign Time 1 2 3 4 5 O X X X X O O X X X O O O X X O O O O X • Time of crossover is randomized; crossover is unidirectional • Outcome should be measured on each unit at each time step • Multiple observations per unit • Individuals at each time could be same (cohort) or different (cross-sectional) Brown and Lilford BMC Medical Research Methodology 2006 6:54 13 September 2102
Reasons for choosing a step-wedge design • Logistical or financial - cannot introduce the intervention in all units at once • Systematically evaluate new program - Evaluate the community effectiveness of an intervention previously shown to be efficacious in an individually randomized trial or in a different setting • To study the effect of time on intervention effectiveness (i.e., seasonality, time since introduction) 13 September 2102
Solarmal technology: odour-baited mosquito trap Takken et al., University of Wageningen, the Netherlands 13 September 2102
Baseline Remote Pre-intervention Possible comparisons in cluster-randomized trials of health interventions OVERALL Baseline Non- Inter- vention Intervention DIRECT INDIRECT DIRECT AND INDIRECT Intervention phase 13 September 2102
OVERALL WITH CONCURRENT COMPARATOR Non-intervention Intervention Remote 13 September 2102
Measures of efficacy Direct effect: Incidence measures compared between intervened and non-intervened zones Contemporaneous overall effect Incidence measures between intervened and those close to intervention against those remote from intervention Step Wedge Design 13 September 2102
SolarMal design constraints • 4000 traps, with 700 day rollout period. 24,000 individuals • Cluster size ~ 60 traps – the number of traps that can be installed in one week • Number of individuals receiving the intervention at each time step is the sum of the number of individuals per household per cluster First look at the general problem of step wedge designs; then apply the theoretical results to SolarMal Step Wedge Design 13 September 2102
Three intervention rollout schema • Oil drop – starting in the lower left hand corner, to the upper right hand corner • Completely randomized design – randomly selecting clusters to receive the intervention • Hierarchical design – randomly select one of 9 sections, filling in those clusters first, then randomly selecting the next section 13 September 2102
t=0 Oil drop The ‘Oil spill’ design?
t=0 Random The ‘Oil spill’ design?
t=0 Hierarchical The ‘Oil spill’ design?
Questions: Which design has the most power – i.e., produces the narrowest confidence intervals? How does the potential bias rank across designs? If clustering is helpful, to what degree? Step Wedge Design 10 September 2102
Each design evaluated for a suite of initial conditions and constraints • Initial clinical case rate of 0.30, 0.50, 0.80 • Intervention efficacy of 0.1, 0.3, 0.5, and 0.8 • Community radius of 0.5, 1.0, 1.5, 2.0, 2.5 Power measure: the confidence interval width for the two efficacy measures for a given design and set of initial conditions 10 September 2102
Simulation 10 September 2102
Simulation physical layout [ mimic Rusinga Island] • 9 districts, each containing 9 clusters, for a total of 81 clusters • 1000 houses are randomly located across the grid • 3000 individuals are randomly assigned to the 1000 houses • Four stages to the simulation • Initialization t ≤10 • Burn-In 11< t ≤ 39 • Intervention 40 <t ≤ 121 • Post-Intervention t >121 Step Wedge Design 10 September 2102
Simulation stage Initialization (t=1-9) InfectionMatrix <- as.integer( runif(endInitial*NIndividuals) < initialPrevalence) During this time we start to build the disease reservoir (t ≥10) reservoirx <- 0.1*InfectedNeighbors[t-6, ] + 0.2*InfectedNeighbors[t-7, ] + 0.4*InfectedNeighbors[t-8, ] + 0.2*InfectedNeighbors[t-9, ] + 0.1*InfectedNeighbors[t-10, ] reservoir = rbind(reservoir, reservoirx , deparse.level=0) Spacing of clinical episodes is two months +/- two weeks - We model this with a distributed lag – reservoir is a weighted average of previous clinical cases amongst neighbors Step Wedge Design 18 10 September 2102
Simulation stage Burn in ((t ≥10 < 40)Pure ARMA for (t in (endInitial+1):endOfBurnIn) { reservoirx = 0.1*nir[t-6, ] + 0.2*nir[t-7, ] + 0.4*nir[t-8, ] + 0.2*nir[t-9, ] + 0.1*nir[t-10, ] infected[t,] = rbinom(reservoirx,1,reservoirx) # strange syntax of rbinom nir[t,] = sapply(neighborHs, function(X)mean(infected[t,X])) # tracking the mean case rate in each neighborhood } nir = non-intervened case rate – the intervention hasn’t yet been introduced Step Wedge Design 19 10 September 2102
Simulation stageIntervention (t=40-121) Maintenance (t>121) infectedx = (runif(1:NIndividuals) < ((1-efficacy*CoverageMatrix[t,])*(1-exp(-reservoirx*underlying)))) where underlying infection rate = -log(initialPrevalence/(1-initialPrevalence)) coverage = percent of the individual’s neighbors who have had the intervention At time points greater than t > 121, the coverage is unit, and the simulation reverts to an Arma process at the new disease level. Step Wedge Design 21 14 July 2012
Simulation machinery: design-specific data containers RandomizeDistribution sequence for cluster within district is assigned Houses X, Y coordinates 1000 houses across a 9 km2 grid. Corresponding district & cluster assignments are drawn from data in randomize IndividualsEach house contains at least one individual DistanceDistances between all individuals (not houses) NeighborsStructured list of all neighbors within radius R of a given individual. Intervention list The time-step in which each house (and the individuals within it) receives the intervention Step Wedge Design
Simulation machinery: data containers Each row is a single time step, each column an individual InfectionMatrix Values are 1 or 0 depending on the infection status of the individual InfectedNeighbors Values are a percentage of infected neighbors for that individual. Reservoir Values are a weighted mean of the number of infected neighbors at timesteps in the past, namely t-10 to t-6. InterventionMatrix Values are 1 or 0 depending on the intervention status of the individual. From time-steps 0-39, Intervention matrix has value 0; for times after timestep 121,the end of rollout, all values are 1. CoverageMatrix Values are a percentage of intervened neighbors for each individual. From time-steps 0-39, coverage matrix has value 0; for times after timestep 121,the end of rollout, all values are 1. Step Wedge Design
Main simulation loop • To evaluate a range of community radii, efficacies, prevalences for given design • for i1 in (1 : 3) • radius = 0.5*i1 • for i2 in (1 : 3) • efficacy=-0.1+0.3*i2 • for i3 in (1 : 3) • initialPrevalence=-0.1+0.3*i3 • } • } • } • Rinse, repeat, 2000 times.
Summary • Problem lent itself to vectorized implementation • R scaled well to mainframe • Model can accommodate actual coordinates for Rusinga island Step Wedge Design
Thank you ! Step Wedge Design
Simulation design for solar mal, possibly too specific Community effects Step Wedge Design 33 14 July 2012