SteppedPower
In general, a study design is referred to as incomplete if not all clusters are observed at every time period (Hemming et al. 2015).
Suppose you do not plan to observe all clusters over the whole study period. Rather, clusters that switch early to the intervention are not observed until the end. Analogous, observation starts later in clusters that switch towards the end of the study.
SteppedPower
There are essentially three ways to define cluster periods without observation.
incomplete
argument. Input can be either a scalar or a
matrix of dimension clusters⋅timepoints
or sequences⋅timepoints:
1
s for cluster cells that are
observed and 0
or NA
s for cluster cells that
are not observed.NA
s into an explicitly defined treatment matrix,
easiest done with the argument trtmatrix=
.NA
s into the vector for delayed treatment start
trtDelay=
.glsPower()
calls the function
construct_DesMat()
to construct the design matrix with the
relevant arguments. All the above options can be used in the main
wrapper function, but the examples below focus on
construct_DesMat()
directly.
SteppedPower
stores information about (un)observed cluster cells separately from the treatment allocation. This is done for more consistency in the code as the indices in the covariance and design matrices is
If for example the a stepped wedge study consists of eight clusters in four sequences (i.e. five timepoints), and we observe two timepoints before and after the switch, then we receive
A slightly more tedious, but more flexible way is to define a matrix
where each row corresponds to either a cluster or a wave of clusters and
each column corresponds to a timepoint. If a cluster is not observed at
a specific timepoint, set the value in the corresponding cell to
0
. For the example above, such a matrix would look like
this:
TM <- toeplitz(c(1,1,0,0))
incompleteMat1 <- cbind(TM[,1:2],rep(1,4),TM[,3:4])
incompleteMat2 <- incompleteMat1[rep(1:4,each=2),]
A matrix where each row represents a wave of clusters
1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 1 |
0 | 0 | 1 | 1 | 1 |
or each row represents a cluster
1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 1 |
0 | 0 | 1 | 1 | 1 |
0 | 0 | 1 | 1 | 1 |
Now all that’s left to do is to plug that into the function and we receive the same design matrix
Dsn1.2 <- construct_DesMat(Cl=rep(2,4), incomplete=incompleteMat1)
Dsn1.3 <- construct_DesMat(Cl=rep(2,4), incomplete=incompleteMat2)
all.equal(Dsn1.1,Dsn1.2)
## [1] "Component \"incompMat\": 'is.NA' value mismatch: 0 in current 12 in target"
## [1] "Component \"incompMat\": 'is.NA' value mismatch: 0 in current 12 in target"
The argument
incomplete
with matrix input works also for other design types, but makes (supposedly) most sense in the context of stepped wedge designs
Now suppose we want to use a SWD to investigate the intervention
effects after at least one month,
i.e. cluster periods directly after the switch to intervention
conditions are not observed. That leads to an incomplete design that is
easiest modelled with trtDelay=
## Timepoints = 5
## Number of clusters per seqence = 2, 2, 2, 2
## Design type = stepped wedge
## Time adjustment = factor
## Dimension of design matrix = 40 x 6
##
## Treatment status (clusters x timepoints):
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0 NA 1 1 1
## [2,] 0 NA 1 1 1
## [3,] 0 0 NA 1 1
## [4,] 0 0 NA 1 1
## [5,] 0 0 0 NA 1
## [6,] 0 0 0 NA 1
## [7,] 0 0 0 0 NA
## [8,] 0 0 0 0 NA
The above arguments can also be combined, e.g.
## All `NA` in `trtMat` AND `0` (or `NA`) in `incomplete`, are considered to be not measured. `NA` in `trtMat` are set to `0` for computational reasons.
## Timepoints = 5
## Number of clusters per seqence = 2, 2, 2, 2
## Design type = stepped wedge
## Time adjustment = factor
## Dimension of design matrix = 40 x 6
##
## Treatment status (clusters x timepoints):
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0 NA 1 NA NA
## [2,] 0 NA 1 NA NA
## [3,] 0 0 NA 1 NA
## [4,] 0 0 NA 1 NA
## [5,] NA 0 0 NA 1
## [6,] NA 0 0 NA 1
## [7,] NA NA 0 0 NA
## [8,] NA NA 0 0 NA