Constrained vs unconstrained longitudinal data analysis
Constrained Longitudinal Data Analysis
Liang and Zeger (2000) describe a constrained longitudinal data analysis for comparing the time course of two randomized groups in which the model constains the two groups to share a common mean at baseline. Lu (2010) compared the power of this approach to a longitudinal analysis of covariance approach. We conduct a few simple simulation studies to interrogate the effect of the constraint on power to detect group differences. We do not simulate any missing data here.
Packages used
Pre-post design with two repeated measures simulated via random intercept model
Simulation settings
Analytic calculations
Two-sample t test power calculation
n = 200
delta = 0.4
sd = 1.4
sig.level = 0.05
power = 0.81
alternative = two.sided
NOTE: n is number in *each* group
Power for longitudinal linear model with random slope (Edland, 2009)
n = 200
delta = 0.4
sig2.s = 0
sig2.e = 1
sig.level = 0.05
t = 0, 1
power = 0.81
alternative = two.sided
NOTE: n is number in *each* group
Longitudinal linear model slope power calculation (Diggle et al 2002, page 29)
n = 200
delta = 0.4
sigma2 = 1
sig.level = 0.05
power = 0.81
alternative = two.sided
NOTE: n is number in *each* group
R:
[,1] [,2]
[1,] 2 1
[2,] 1 2
Set up data for simulation
Value Std.Error DF t-value p-value
(Intercept) 0.9945 0.1017 398.0000 9.78 < 2e-16 ***
trt -0.1724 0.1438 398.0000 -1.20 0.2315
time 0.4811 0.0975 398.0000 4.93 1.2e-06 ***
trt:time 0.4508 0.1379 398.0000 3.27 0.0012 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Value Std.Error DF t-value p-value
(Intercept) 0.9084 0.0719 399.0000 12.63 < 2e-16 ***
time 0.5206 0.0918 398.0000 5.67 2.7e-08 ***
time:trt 0.3717 0.1211 398.0000 3.07 0.0023 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Simulate
Simulated power results (%)
Pr(p<0.05) | |
---|---|
ttest.power | 80.3 |
ttest.alpha | 4.8 |
ancova1.power | 90.2 |
ancova1.alpha | 5.1 |
ancova2.power | 90.2 |
ancova2.alpha | 5.1 |
slopes.LDA.power | 80.3 |
slopes.LDA.alpha | 4.8 |
slopes.cLDA.power | 90.3 |
slopes.cLDA.alpha | 5.2 |
contrasts.LDA.power | 80.6 |
contrasts.LDA.alpha | 5.4 |
Four repeated measures simulated via random slope model
Simulation settings
Analytic calculations
Power for longitudinal linear model with random slope (Edland, 2009)
n = 100
delta = 0.43
sig2.s = 1
sig2.e = 1
sig.level = 0.05
t = 0, 1, 2, 3
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group
Longitudinal linear model slope power calculation (Diggle et al 2002, page 29)
n = 100
delta = 0.43
sigma2 = 1
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group
R:
[,1] [,2] [,3] [,4]
[1,] 2 1 1 1
[2,] 1 3 3 4
[3,] 1 3 6 7
[4,] 1 4 7 11
Set up data for simulation
Value Std.Error DF t-value p-value
(Intercept) 0.949 0.134 598.000 7.09 3.7e-12 ***
trt 0.145 0.189 198.000 0.77 0.4447
time 0.312 0.113 598.000 2.77 0.0058 **
trt:time 0.482 0.159 598.000 3.03 0.0026 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Value Std.Error DF t-value p-value
(Intercept) 1.0216 0.0945 598.0000 10.81 < 2e-16 ***
time 0.2904 0.1090 598.0000 2.66 0.00791 **
time:trt 0.5246 0.1489 598.0000 3.52 0.00046 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Simulate
Simulated power results (%)
Pr(p<0.05) | |
---|---|
slopes.LDA.power | 79.7 |
slopes.LDA.alpha | 5.0 |
slopes.cLDA.power | 81.7 |
slopes.cLDA.alpha | 5.1 |
contrasts.cts.LDA.power | 81.1 |
contrasts.cts.LDA.alpha | 6.0 |
contrasts.cat.LDA.power | 81.1 |
contrasts.cat.LDA.alpha | 5.5 |
contrasts.cat.cLDA.power | 87.5 |
contrasts.cat.cLDA.alpha | 10.9 |
Pre-post design simulated with fixed variance of pre-post difference and various pre-post correlations
Simulation settings
Analytic calculations
Two-sample t test power calculation
n = 64
delta = 0.015
sd = 0.031
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group
Set up data for simulation
Simulate
Simulated power results (%)
Pr(p<0.05) | |
---|---|
0.2.ttest.power | 68.0 |
0.2.ttest.alpha | 4.9 |
0.2.ancova1.power | 58.8 |
0.2.ancova1.alpha | 4.7 |
0.2.ancova2.power | 58.8 |
0.2.ancova2.alpha | 4.7 |
0.2.slopes.LDA.power | 68.0 |
0.2.slopes.LDA.alpha | 4.9 |
0.2.slopes.cLDA.power | 58.1 |
0.2.slopes.cLDA.alpha | 4.8 |
0.2.contrasts.LDA.power | 58.2 |
0.2.contrasts.LDA.alpha | 4.6 |
0.5.ttest.power | 67.5 |
0.5.ttest.alpha | 5.2 |
0.5.ancova1.power | 67.2 |
0.5.ancova1.alpha | 5.0 |
0.5.ancova2.power | 67.3 |
0.5.ancova2.alpha | 5.0 |
0.5.slopes.LDA.power | 67.4 |
0.5.slopes.LDA.alpha | 5.2 |
0.5.slopes.cLDA.power | 67.1 |
0.5.slopes.cLDA.alpha | 5.1 |
0.5.contrasts.LDA.power | 67.4 |
0.5.contrasts.LDA.alpha | 5.0 |
0.7.ttest.power | 67.7 |
0.7.ttest.alpha | 5.0 |
0.7.ancova1.power | 67.8 |
0.7.ancova1.alpha | 5.0 |
0.7.ancova2.power | 68.0 |
0.7.ancova2.alpha | 5.1 |
0.7.slopes.LDA.power | 67.6 |
0.7.slopes.LDA.alpha | 5.0 |
0.7.slopes.cLDA.power | 67.8 |
0.7.slopes.cLDA.alpha | 5.0 |
0.7.contrasts.LDA.power | 55.5 |
0.7.contrasts.LDA.alpha | 5.1 |
So the t-test power is fixed at 80% (by design), the unconstrained LDA has nearly identical power to t-test; while ANCOVA and constrained LDA have similar power (always better power than t-test, but power decreases with increasing pre-post correlation). ANCOVA2 has similar power as ANCOVA1 (not surprising since no interaction between baseline outcome and group was simulated).
This confirms that the cLDA is preferred whenever we have two timepoints in a randomized study; just as ANCOVA is always preferred to t-test. Of course, cLDA has the added advantage of accommodating missing data.
comments powered by Disqus