Title: | Sampling Data Within Different Study Designs for Cluster Randomized Trials |
---|---|
Description: | Package provides the possibility to sampling complete datasets from a normal distribution to simulate cluster randomized trails for different study designs. |
Authors: | Diana Trutschel, Hendrik Treutler |
Maintainer: | Diana Trutschel <[email protected]> |
License: | GPL-3 |
Version: | 1.0 |
Built: | 2024-12-09 06:40:02 UTC |
Source: | CRAN |
create a diagonal block matrix
blockMatrixDiagonal(...)
blockMatrixDiagonal(...)
... |
a list of matrices |
diagonal block matrix concatinated from this list of matrices
m1<-matrix(round(runif(4*4),1),nrow=4,ncol=4) m2<-matrix(round(runif(4*4),1),nrow=4,ncol=4) blockMatrixDiagonal(m1,m2,m2,m1) sigma.1<-0.1 sigma.2<-0.4 J<-10 #subjects I<-3 #cluster V.i<-sigma.2*matrix(1,nrow=J,ncol=J)+sigma.1*diag(1, nrow=J,ncol=J) #Covarianmatrix of one cluster x<-lapply(1:I, function(X) V.i) blockMatrixDiagonal(x) #Covarianmatrix of all cluster
m1<-matrix(round(runif(4*4),1),nrow=4,ncol=4) m2<-matrix(round(runif(4*4),1),nrow=4,ncol=4) blockMatrixDiagonal(m1,m2,m2,m1) sigma.1<-0.1 sigma.2<-0.4 J<-10 #subjects I<-3 #cluster V.i<-sigma.2*matrix(1,nrow=J,ncol=J)+sigma.1*diag(1, nrow=J,ncol=J) #Covarianmatrix of one cluster x<-lapply(1:I, function(X) V.i) blockMatrixDiagonal(x) #Covarianmatrix of all cluster
Calculation of power for a lmm with cluster as random effect, fixed timepoint effects, but set to null, TP number of timepoints, I number of cluster. The design matrix has to be coded by zeros and ones.
calcPower.SWD(ThetaEst, alpha = 0.05, Design, sigmaq, tauq, sigmaq.error = NULL, noSub = NULL, time = TRUE, type = "cross-sectional")
calcPower.SWD(ThetaEst, alpha = 0.05, Design, sigmaq, tauq, sigmaq.error = NULL, noSub = NULL, time = TRUE, type = "cross-sectional")
ThetaEst |
expected treatment effect |
alpha |
singificance level (by default 0.05) |
Design |
design matrix for a given SWD model |
sigmaq |
within cluster variance(between subject variance) |
tauq |
between cluster variance |
sigmaq.error |
within subject variance/error variance |
noSub |
number of subjects within each cluster and each timepoint (for all an equal size) |
time |
a logical (FALSE, if no time trends are expected, otherwise TRUE) is only relevant for evaluation of cross-sectional data |
type |
is of cross-sectional (by default) or longitudinal assigns the type of data (2 or 3 level nested structure) |
Aproximated power of two tailed test, although the design matrix is fractionated, then power is not valid formula used for cross-sectional data provided by Michael A. Hussey and James P. Hughes, Design and analysis of stepped wedge cluster randomized trials, Contemporary Clinical Trials(28),2007, and for longitudinal data by Heo M., Kim N., Rinke ML., Wylie-Rosett J., Sample size determinations for stepped-wedge clinical trials from a three-level data hierarchy perspective, Stat Methods Med Res., 2016
noCl<-10 noT<-6 switches<-2 DM<-designMatrix(noCl,noT,switches) sigma.e <- 2 sigma.alpha <- 2 #Power for cross-sectional SWD design by formula of Hussey&Hughes calcPower.SWD(ThetaEst=1,Design=DM, sigmaq=sigma.e^2, tauq=sigma.alpha^2, time=FALSE) calcPower.SWD(ThetaEst=1,Design=DM, sigmaq=sigma.e^2, tauq=sigma.alpha^2, time=TRUE) #Power for longitudinal SWD design by formula of Heo&Kim DM.new<-NULL for(i in 1:dim(DM)[2]){ DM.new<-cbind(DM.new,DM[,i], DM[,i]) } s.e <- sqrt(7/10) s <- sqrt(2/10) s.a <- sqrt(1/10 ) K<- 10 #number of participants within each 'cell' calcPower.SWD(ThetaEst=1, Design=DM.new, s.a^2, s^2, s.e^2, noSub=K, type="longitudinal")
noCl<-10 noT<-6 switches<-2 DM<-designMatrix(noCl,noT,switches) sigma.e <- 2 sigma.alpha <- 2 #Power for cross-sectional SWD design by formula of Hussey&Hughes calcPower.SWD(ThetaEst=1,Design=DM, sigmaq=sigma.e^2, tauq=sigma.alpha^2, time=FALSE) calcPower.SWD(ThetaEst=1,Design=DM, sigmaq=sigma.e^2, tauq=sigma.alpha^2, time=TRUE) #Power for longitudinal SWD design by formula of Heo&Kim DM.new<-NULL for(i in 1:dim(DM)[2]){ DM.new<-cbind(DM.new,DM[,i], DM[,i]) } s.e <- sqrt(7/10) s <- sqrt(2/10) s.a <- sqrt(1/10 ) K<- 10 #number of participants within each 'cell' calcPower.SWD(ThetaEst=1, Design=DM.new, s.a^2, s^2, s.e^2, noSub=K, type="longitudinal")
create design matrix for complete data within design
completeDataDesignMatrix(J, X)
completeDataDesignMatrix(J, X)
J |
number of subjects |
X |
given design matrix |
design matrix for complete data within design
K<-6 #measurement (or timepoints) I<-10 #Cluster J<-2 #number of subjects X<-designMatrix(nC=I, nT=K, nSw=2) completeDataDesignMatrix(J, X)
K<-6 #measurement (or timepoints) I<-10 #Cluster J<-2 #number of subjects X<-designMatrix(nC=I, nT=K, nSw=2) completeDataDesignMatrix(J, X)
covariance matrix of the normal distribution under cluster randomized study type given a design and a type
CovMat.Design(K, J, I, sigma.1.q, sigma.2.q = NULL, sigma.3.q)
CovMat.Design(K, J, I, sigma.1.q, sigma.2.q = NULL, sigma.3.q)
K |
number of timepoints or measurments (design parameter) |
J |
number of subjects |
I |
number of clusters (design parameter) |
sigma.1.q |
variance of the lowest level (error variance or within subject variance) |
sigma.2.q |
secound level variance (e.g. within cluster and between subject variance), by default NULL and then a cross-sectional type |
sigma.3.q |
third level variance (e.g. between cluster variance) |
V covariance matrix
K<-6 #measurement (or timepoints) I<-10 #Cluster J<-2 #number of subjects sigma.1<-0.1 sigma.3<-0.9 CovMat.Design(K, J, I,sigma.1.q=sigma.1, sigma.3.q=sigma.3) sigma.1<-0.1 sigma.2<-0.4 sigma.3<-0.9 CovMat.Design(K, J, I,sigma.1.q=sigma.1, sigma.2.q=sigma.2, sigma.3.q=sigma.3)
K<-6 #measurement (or timepoints) I<-10 #Cluster J<-2 #number of subjects sigma.1<-0.1 sigma.3<-0.9 CovMat.Design(K, J, I,sigma.1.q=sigma.1, sigma.3.q=sigma.3) sigma.1<-0.1 sigma.2<-0.4 sigma.3<-0.9 CovMat.Design(K, J, I,sigma.1.q=sigma.1, sigma.2.q=sigma.2, sigma.3.q=sigma.3)
create design matrix for a given setup of a stepped wedge design
designMatrix(nC, nT, nSw, swP = NULL, design = "SWD")
designMatrix(nC, nT, nSw, swP = NULL, design = "SWD")
nC |
number of cluster |
nT |
number of timepoints |
nSw |
number of cluster : within parallel recieve the control (nC-nSw receive the intervention), within cross-over recieve the pattern (0, 1) (nC-nSw receive the pattern (1,0)) for nearly the same number of time points, within SWD switches from control to intervention per time point |
swP |
is the time point the cluster cross over the condition in a cross over study, if not given then it is nearly half of the time past |
design |
is the study type (parallel, cross-sectional, stepped wedge) |
design matrix for a given setup of a stepped wedge design
designMatrix(5,6,1) K<-6 #measurement (or timepoints) I<-10 #Cluster designMatrix(nC=I, nT=K, nSw=2)
designMatrix(5,6,1) K<-6 #measurement (or timepoints) I<-10 #Cluster designMatrix(nC=I, nT=K, nSw=2)
Creates a implementation matrix for a given stepped wedge design and grade of intervention implementation pattern
implemMatrix.SWD(nC, nT, nSw, pattern)
implemMatrix.SWD(nC, nT, nSw, pattern)
nC |
Number of clusters |
nT |
Number of timepoint |
nSw |
number of clusters switches from control to treatment at each timepoint |
pattern |
a vector for grade of intervention implementation pattern, which gives the derivation from 100 percent effectiveness over time |
Design matrix for SWD model under a grade of intervention implementation pattern
implemMatrix.SWD(5,6,1, c(seq(0.4,1,0.2),1)) K<-6 #measurement (or timepoints) I<-10 #Cluster implemMatrix.SWD(nC=I, nT=K, nSw=2, pattern=c(seq(0.4,1,0.2),1))
implemMatrix.SWD(5,6,1, c(seq(0.4,1,0.2),1)) K<-6 #measurement (or timepoints) I<-10 #Cluster implemMatrix.SWD(nC=I, nT=K, nSw=2, pattern=c(seq(0.4,1,0.2),1))
Sample data (response) for given numbers of individuals by given a model (of a parallel, cross-sectional, stepped wedge design study)
sampleData(type, K, J, I, D, A = NULL, V, parameters)
sampleData(type, K, J, I, D, A = NULL, V, parameters)
type |
of the design is either cross-sectional (cross-sec) or longitudinal (longitudinal) |
K |
number of timepoints or measurments (design parameter) |
J |
number of subjects |
I |
number of clusters (design parameter) |
D |
a complete data design matrix corresponding to the assumed model |
A |
a complete data design matrix corresponding to the true data, if A is null, then A is equal to D |
V |
covariance matrix for the normal distribution |
parameters |
corresponding to the model (regression fixed effects coefficients) |
Data of individuals intensities corresponds to the SWD model and full model parameter information
K<-6 #measurement (or timepoints) I<-10 #Cluster J<-2 #number of subjects X<-designMatrix(nC=I, nT=K, nSw=2) D<-completeDataDesignMatrix(J, X) sigma.1<-0.1 sigma.3<-0.9 type<-"cross-sec" V<-CovMat.Design(K, J, I, sigma.1=sigma.1, sigma.3=sigma.3) mu.0<-0 theta<-1 betas<-rep(0, K-1) parameters<-c(mu.0, betas, theta) sample.data<-sampleData(type = type, K=K,J=J,I=I, D=D, V=V, parameters=parameters) xtabs(~cluster+measurement, data=sample.data)
K<-6 #measurement (or timepoints) I<-10 #Cluster J<-2 #number of subjects X<-designMatrix(nC=I, nT=K, nSw=2) D<-completeDataDesignMatrix(J, X) sigma.1<-0.1 sigma.3<-0.9 type<-"cross-sec" V<-CovMat.Design(K, J, I, sigma.1=sigma.1, sigma.3=sigma.3) mu.0<-0 theta<-1 betas<-rep(0, K-1) parameters<-c(mu.0, betas, theta) sample.data<-sampleData(type = type, K=K,J=J,I=I, D=D, V=V, parameters=parameters) xtabs(~cluster+measurement, data=sample.data)