Type: Package
Title: Power and Sample Size for Linear Mixed Effect Models
Version: 0.9.0
Depends: R (≥ 3.2.5)
Author: Marco Chak Yan YU
Maintainer: Marco Chak Yan YU <marcocyyu@gmail.com>
Description: Power and sample size calculation for testing fixed effect coefficients in multilevel linear mixed effect models with one or more than one independent populations. Laird, Nan M. and Ware, James H. (1982) <doi:10.2307/2529876>.
License: GPL-3
RoxygenNote: 6.1.1
NeedsCompilation: no
Packaged: 2019-08-20 08:34:36 UTC; marco
Repository: CRAN
Date/Publication: 2019-08-20 15:50:05 UTC

Calculate mean and variance
for linear combination of the
Best Linear Unbiased Estimator (BLUE)
for Linear Mixed Effect (LME) Model

Description

Consider the following model:

Y=XB+Zu+e, u~N(0,D), e~N(0,R)
Yi~N(XBi,Vi), Vi=Zi*D*Zi'+Ri,

for each independent observation i


estimate of fixed effect coefficient B, denoted by b:

b=inv(sum(Xi'*inv(Vi)*Xi))*(sum(Xi'*inv(Vi)*Yi))


variance of b:

var(b)=Vb/n=inv(sum(Xi'*inv(Vi)*Xi))

where Vb=inv(Xi'*inv(Vi)*Xi)


distribution of any linear combinations L of b is given by:

Lb~N(mu,Sigma/n)

where mu = LB, Sigma = L*Vb*L'


Usage

lme.Lb.dist.theta(B, D, R, X, Z, m = NULL, L)

Arguments

B

fixed effect beta in px1 matrix

D

list of qxq random effect variance matrix; where the first element corresponding to the highest-level effect, the last element corresponding to the level 1 effect

R

residual variance

X

nxp matrix representing the covariates for the fixed effects

Z

nxq matrix representing the covariates for each level of random effects

m

vector of repeated measures from the highest to lowest level (level 1 effects are addressed by Z and X and no need to be specified)

L

lxp matrix, representing l-linear-combinations of beta interested,
if L is not defined, it will be auto-created to select the last coefficient

Details

Technical note

Value

theta: parameters (mu and Sigma) of the normal distribution for Lb

Note

License: GPL-3

Author(s)

Marco Chak Yan YU
Maintainer: Marco Chak Yan YU <marcocyyu@gmail.com>

See Also

pass.lme.CLb.test

Examples

#Example 1
# calc BLUE for 1-level LME model,
# with covariates X, Z: (1,t), t=1,2,3
# for both fixed and random effects,
# with fixed effect coefficients B: (100,-0.5),
# random effect variance D: (2 1;1 2),
# residual variance R: 0.2
B <- matrix(c(100,-0.5),2,1)
D <- matrix(c(2,1,1,2),2,2)
R <- 0.2
X <- cbind(rep(1,3),1:3)
Z <- X
lme.Lb.dist.theta(B,D,R,X,Z)

#Example 2
# calc BLUE for 3-levels LME model,
# with level 1 same as the above example
# with 3 repeated-measures in level 2
# and 5 repeated-measures in the highest level,
# assuming random effect variance for level 2 = (3 1;1 3),
# and random effect variance for highest level = (5 1;1 5)
D <- list(matrix(c(2,1,1,2),2,2),matrix(c(3,1,1,3),2,2), matrix(c(5,1,1,5),2,2))
lme.Lb.dist.theta(B,D,R,X,Z,m=c(5,3))

Calculate Power or Sample Size required
for Contrasts of linear combinations
of fixed effect parameters
in Linear Mixed Effect (LME) Model

Description

Interested parameters/linear combinations LB from more than one independent populations can be aggregrate togeter by appending mu vertically and Sigma/n diagonally

Consider Lb~N(MU,SIGMA) as the aggregrated estimates
Any comparison of interested parameters can be formulated by multiplying a contrast matrix C on LB and set

H0: C*LB=d for any vector of value d to be tested

We then have

C*Lb~N(C*MU,C*SIGMA*C')

and

(C*Lb-d)'*inv(C*SIGMA*C')*(C*Lb-d)~chisq(q,lambda)

where degree of freedom q=rank(C*SIGMA*C'),
non-centrality parameter lambda=(C*LB-d)'*inv(C*SIGMA*C')*(C*LB-d)


Power of the test H0 is given by 1-beta=P(chisq(q,lambda)>qchisq(1-alpha,lambda))
Required sample size for desired power can be obtained by bisection method.

Usage

pass.lme.CLb.test(thetas, C = NULL, d = NULL, alpha = 0.05,
  power = NULL, n = NULL)

Arguments

thetas

list of theta (LB and VLb), can be different for each group

C

Contrast of Matrix

d

Value vector to be tested for all contrast

alpha

significant level

power

desired power for sample size calculation

n

sample size for power calculation /
or sample size ratio with power for sample size calculation (NULL for balanced design)

Details

Technical note

Value

solved.power given sample size n, this gives the power for testing H0
solved.n given the desired power, this gives the sample size for H0

Note

License: GPL-3

Author(s)

Marco Chak Yan YU
Maintainer: Marco Chak Yan YU <marcocyyu@gmail.com>

See Also

lme.Lb.dist.theta

Examples

#Example 1 (test fixed effect coefficient 2=0) with power of 80%
# for 1-level LME model, with covariates X, Z: (1,t), t=1,2,3
# for both fixed and random effects, with fixed effect coefficients B: (100,-0.5),
# random effect variance D: (2 1;1 2), residual variance R: 0.2
B <- matrix(c(100,-0.5),2,1)
D <- matrix(c(2,1,1,2),2,2)
R <- 0.2
X <- cbind(rep(1,3),1:3)
Z <- X
theta <- lme.Lb.dist.theta(B,D,R,X,Z)
pass.lme.CLb.test(list(theta),alpha=0.05,power=0.8)
pass.lme.CLb.test(list(theta),alpha=0.05,n=66)

#Example 2 (compare two fixed effect coefficient 2) with power of 80%
# Consider above model as a control group model,
# with an independent treatment group with model same as the control
# except a different fixed effect coefficient 2 for treatment
# = fixed effect coefficient 2 for control x 0.7
theta2 <- theta
theta2$mu <- theta$mu *0.7
C <- matrix(c(1,-1),1,2)
pass.lme.CLb.test(list(theta,theta2),C,alpha=0.05,power=0.8)
pass.lme.CLb.test(list(theta,theta2),C,alpha=0.05,n=1468)

#Example 3 (compare two fixed effect coefficient 2) with power of 80%
# with sample size ratio, control:treatment = 1:2
pass.lme.CLb.test(list(theta,theta2),C,alpha=0.05,power=0.8,n=c(1,2))
pass.lme.CLb.test(list(theta,theta2),C,alpha=0.05,n=c(1101,2202))

#Example 4 (repeated-measures ANOVA for comparing 3 group means) with power of 80%
# for 1-level LME model with mean for group 1, 2 and 3 are 100, 99, 102, respectively,
# each subject to be measured 2 times, with within-subject variance = 15, residual variance = 10
B <- 100
D <- 15
R <- 10
X <- matrix(1,2,1)
Z <- X
theta <- lme.Lb.dist.theta(B,D,R,X,Z)
theta2 <- theta
theta3 <- theta
theta2$mu <- 99
theta3$mu <- 102
C <- rbind(c(1,-1,0),c(1,0,-1))
pass.lme.CLb.test(list(theta,theta2,theta3),C,alpha=0.05,power=0.8)
pass.lme.CLb.test(list(theta,theta2,theta3),C,alpha=0.05,n=41)