Applied Longitudinal Data Analysis: Modeling Change and Event Occurrence by Judith D. Singer and John B. Willett Chapter 5: Treating TIME More Flexibly
Inputting the reading data set.
reading <- read.table("https://stats.idre.ucla.edu/stat/r/examples/alda/data/reading_pp.txt", header=T, sep=",")
Table 5.1, p. 141.
reading[reading$id %in% c(4, 27, 31, 33, 41, 49, 69, 77, 87), ]
id wave agegrp age piat agegrp.c age.c
10 4 1 6.5 6.000000 18 0 -0.5000000
11 4 2 8.5 8.500000 31 2 2.0000000
12 4 3 10.5 10.666667 50 4 4.1666667
79 27 1 6.5 6.250000 19 0 -0.2500000
80 27 2 8.5 9.166667 36 2 2.6666667
81 27 3 10.5 10.916667 57 4 4.4166667
91 31 1 6.5 6.333333 18 0 -0.1666667
92 31 2 8.5 8.833333 31 2 2.3333333
93 31 3 10.5 10.916667 51 4 4.4166667
97 33 1 6.5 6.333333 18 0 -0.1666667
98 33 2 8.5 8.916667 34 2 2.4166667
99 33 3 10.5 10.750000 29 4 4.2500000
121 41 1 6.5 6.333333 18 0 -0.1666667
122 41 2 8.5 8.750000 28 2 2.2500000
123 41 3 10.5 10.833333 36 4 4.3333333
145 49 1 6.5 6.500000 19 0 0.0000000
146 49 2 8.5 8.750000 32 2 2.2500000
147 49 3 10.5 10.666667 48 4 4.1666667
205 69 1 6.5 6.666667 26 0 0.1666667
206 69 2 8.5 9.166667 47 2 2.6666667
207 69 3 10.5 11.333333 45 4 4.8333333
229 77 1 6.5 6.833333 17 0 0.3333333
230 77 2 8.5 8.083333 19 2 1.5833333
231 77 3 10.5 10.000000 28 4 3.5000000
259 87 1 6.5 6.916667 22 0 0.4166667
260 87 2 8.5 9.416667 49 2 2.9166667
261 87 3 10.5 11.500000 64 4 5.0000000
Fig. 5.1, p. 143. Empirical change plots with superimposed OLS trajectories. The +’s and solid lines correspond to time using the child’s target age at data collection, whereas the dots and dashed lines correspond to time using the child’s observed age.
library(lattice)
xyplot(piat~age | id,
data=reading[reading$id %in% c(4, 27, 31, 33, 41, 49, 69, 77, 87), ],
panel=function(x,y, subscripts){panel.xyplot(x, y, pch=16)
panel.lmline(x,y, lty=4)
panel.xyplot(reading$agegrp[subscripts], y, pch=3)
panel.lmline(reading$agegrp[subscripts],y) },
ylim=c(0, 80), as.table=T, subscripts=T)
Creating the centered variables called agegrp.c and age.c, p. 144.
mat2 <- reading[ ,3:4]-6.5
dimnames(mat2)[[2]] <- c("agegrp.c", "age.c")
reading <- cbind(reading, mat2)
Table 5.2, p. 145. Note: The degres of freedom used to in the calculations of the intercept is different from the results in the book and this difference in partitioning results also in slight differences in the standard error of the estimates.
#Using the agegrp variable.
library(nlme)
lme.agegrp <- lme(piat ~ agegrp.c, reading, random= ~ agegrp | id, method="ML")
summary(lme.agegrp)
Linear mixed-effects model fit by maximum likelihood
Data: reading
AIC BIC logLik
1831.949 1853.473 -909.9746
Random effects:
Formula: ~agegrp | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 13.244933 (Intr)
agegrp 2.096994 -0.97
Residual 5.200308
Fixed effects: piat ~ agegrp.c
Value Std.Error DF t-value p-value
(Intercept) 21.162921 0.6165805 177 34.32304 0
agegrp.c 5.030899 0.2967329 177 16.95430 0
Correlation:
(Intr)
agegrp.c -0.316
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.6585175 -0.5418435 -0.1434177 0.3871955 3.3133003
Number of Observations: 267
Number of Groups: 89
#Using the age variable.
lme.age <- lme(piat ~ age.c, reading, random= ~ age | id, method="ML")
summary(lme.age)
Linear mixed-effects model fit by maximum likelihood
Data: reading
AIC BIC logLik
1815.896 1837.419 -901.9478
Random effects:
Formula: ~age | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 10.668937 (Intr)
age 1.816985 -0.985
Residual 5.238946
Fixed effects: piat ~ age.c
Value Std.Error DF t-value p-value
(Intercept) 21.060816 0.5614177 177 37.51363 0
age.c 4.540021 0.2616162 177 17.35375 0
Correlation:
(Intr)
age.c -0.287
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-3.0068407 -0.4948682 -0.1369712 0.4095972 3.7274111
Number of Observations: 267
Number of Groups: 89
Inputting the wages data set.
wages <- read.table("https://stats.idre.ucla.edu/stat/r/examples/alda/data/wages_pp.txt", header=T, sep=",")
Table 5.3, p. 147.
wages[wages$id %in% c(206, 332, 1028), c(1, 3, 2, 6, 8, 10)]
id exper lnw black hgc uerate
75 206 1.874 2.028 0 10 9.200
76 206 2.814 2.297 0 10 11.000
77 206 4.314 2.482 0 10 6.295
197 332 0.125 1.630 0 8 7.100
198 332 1.625 1.476 0 8 9.600
199 332 2.413 1.804 0 8 7.200
200 332 3.393 1.439 0 8 6.195
201 332 4.470 1.748 0 8 5.595
202 332 5.178 1.526 0 8 4.595
203 332 6.082 2.044 0 8 4.295
204 332 7.043 2.179 0 8 3.395
205 332 8.197 2.186 0 8 4.395
206 332 9.092 4.035 0 8 6.695
466 1028 0.004 0.872 1 8 9.300
467 1028 0.035 0.903 1 8 7.400
468 1028 0.515 1.389 1 8 7.300
469 1028 1.483 2.324 1 8 7.400
470 1028 2.141 1.484 1 8 6.295
471 1028 3.161 1.705 1 8 5.895
472 1028 4.103 2.343 1 8 6.900
Table 5.4, p. 149.
#Model A
model.a <- lme(lnw~exper, wages, random= ~exper | id, method="ML")
summary(model.a)
Linear mixed-effects model fit by maximum likelihood
Data: wages
AIC BIC logLik
4933.394 4973.98 -2460.697
Random effects:
Formula: ~exper | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 0.23295542 (Intr)
exper 0.04154474 -0.301
Residual 0.30839044
Fixed effects: lnw ~ exper
Value Std.Error DF t-value p-value
(Intercept) 1.7156039 0.010798215 5513 158.87848 0
exper 0.0456807 0.002341936 5513 19.50555 0
Correlation:
(Intr)
exper -0.565
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-4.20113322 -0.52073077 -0.03159151 0.44063202 7.03696490
Number of Observations: 6402
Number of Groups: 888
#Model B
model.b <- update(model.a, lnw~exper*hgc.9+exper*black)
summary(model.b)
Linear mixed-effects model fit by maximum likelihood
Data: wages
AIC BIC logLik
4893.751 4961.395 -2436.876
Random effects:
Formula: ~exper | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 0.22748211 (Intr)
exper 0.04044512 -0.31
Residual 0.30853484
Fixed effects: lnw ~ exper + hgc.9 + black + exper:hgc.9 + exper:black
Value Std.Error DF t-value p-value
(Intercept) 1.7171385 0.012548264 5511 136.84271 0.0000
exper 0.0493428 0.002632917 5511 18.74074 0.0000
hgc.9 0.0349201 0.007885174 885 4.42858 0.0000
black 0.0153954 0.023937728 885 0.64315 0.5203
exper:hgc.9 0.0012794 0.001723983 5511 0.74213 0.4580
exper:black -0.0182129 0.005501727 5511 -3.31040 0.0009
Correlation:
(Intr) exper hgc.9 black exp:.9
exper -0.575
hgc.9 0.071 -0.020
black -0.523 0.301 -0.020
exper:hgc.9 -0.019 -0.003 -0.578 0.011
exper:black 0.275 -0.478 0.011 -0.573 -0.023
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-4.26907899 -0.51809173 -0.03347663 0.44516366 7.01940012
Number of Observations: 6402
Number of Groups: 888
#Model C
model.c <- update(model.b, lnw~exper+exper:black+hgc.9)
summary(model.c)
Linear mixed-effects model fit by maximum likelihood
Data: wages
AIC BIC logLik
4890.704 4944.818 -2437.352
Random effects:
Formula: ~exper | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 0.22766404 (Intr)
exper 0.04057939 -0.312
Residual 0.30850207
Fixed effects: lnw ~ exper + hgc.9 + exper:black
Value Std.Error DF t-value p-value
(Intercept) 1.7214750 0.010700480 5512 160.87830 0e+00
exper 0.0488470 0.002514196 5512 19.42849 0e+00
hgc.9 0.0383608 0.006435380 886 5.96092 0e+00
exper:black -0.0161150 0.004512766 5512 -3.57099 4e-04
Correlation:
(Intr) exper hgc.9
exper -0.515
hgc.9 0.077 -0.023
exper:black -0.036 -0.391 -0.015
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-4.27879296 -0.51825126 -0.03471525 0.44262176 7.01696754
Number of Observations: 6402
Number of Groups: 888
Fig. 5.2, p. 150. Log wage trajectories for four prototypical dropouts from model C.
exper.seq <- seq(0, 12)
fixef.c <- fixef(model.c)
x.w9 <- fixef.c[[1]] + fixef.c[[2]]*exper.seq
x.w12 <- fixef.c[[1]] + fixef.c[[2]]*exper.seq + fixef.c[[3]]*3
x.b9 <- fixef.c[[1]] + fixef.c[[2]]*exper.seq + fixef.c[[4]]*exper.seq
x.b12 <- fixef.c[[1]] + fixef.c[[2]]*exper.seq + fixef.c[[3]]*3 +
fixef.c[[4]]*exper.seq
plot(exper.seq, x.w9, ylim=c(1.6, 2.4), ylab="LNW.hat", xlab="EXPER", type="l", lwd=2)
lines(exper.seq, x.w12, lty=3)
lines(exper.seq, x.b9, lty=4, lwd=2)
lines(exper.seq, x.b12, lty=5)
legend(0, 2.4, c("9th grade, White/Latino", "9th grade, Black",
"12th grade, White/Latino", "12th grade, Black"), lty=c(1, 4, 3, 5))
Inputting the small wages data set.
wages.small <- read.table("https://stats.idre.ucla.edu/stat/r/examples/alda/data/wages_small_pp.txt", header=T, sep=",")
Table 5.5, p. 154.
#Model A
model.a <- lme(lnw~exper+hcg.9+exper:black, wages.small, random= ~exper|id, method="ML")
summary(model.a)
Linear mixed-effects model fit by maximum likelihood
Data: wages.small
AIC BIC logLik
299.8772 328.2698 -141.9386
Random effects:
Formula: ~exper | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 2.902591e-01 (Intr)
exper 1.924436e-05 0
Residual 3.388214e-01
Fixed effects: lnw ~ exper + hcg.9 + exper:black
Value Std.Error DF t-value p-value
(Intercept) 1.7373442 0.04812692 131 36.09921 0.0000
exper 0.0517798 0.02109799 131 2.45425 0.0154
hcg.9 0.0457585 0.02468875 122 1.85342 0.0662
exper:black -0.0600723 0.03485043 131 -1.72372 0.0871
Correlation:
(Intr) exper hcg.9
exper -0.614
hcg.9 0.051 -0.135
exper:black -0.130 -0.294 0.024
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.42021834 -0.47223444 -0.02901367 0.41970660 4.24393911
Number of Observations: 257
Number of Groups: 124
Inputting the unemployment data set.
unemployment <- read.table("https://stats.idre.ucla.edu/stat/r/examples/alda/data/unemployment_pp.txt", header=T, sep=","
Table 5.6, p. 161.
unemployment[unemployment$id %in% c(7589, 55697, 67641, 65441, 53782),]
id months cesd unemp
212 7589 1.3141684 36 1
213 7589 5.0924025 40 1
214 7589 11.7946612 39 1
454 53782 0.4271047 22 1
455 53782 4.2381930 15 0
456 53782 11.0718686 21 1
504 55697 1.3470226 7 1
505 55697 5.7823409 4 1
623 65441 1.0841889 27 1
624 65441 4.6981520 15 1
625 65441 11.2689938 7 0
647 67641 0.3285421 32 1
648 67641 4.1067762 9 0
649 67641 10.9404517 10 0
Table 5.7, p. 163.
#Model A
model.a <- lme(cesd ~ months, unemployment, random= ~months|id, method="ML")
summary(model.a)
Linear mixed-effects model fit by maximum likelihood
Data: unemployment
AIC BIC logLik
5145.137 5172.217 -2566.569
Random effects:
Formula: ~months | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 9.3192519 (Intr)
months 0.5958468 -0.551
Residual 8.2975997
Fixed effects: cesd ~ months
Value Std.Error DF t-value p-value
(Intercept) 17.669363 0.7767173 419 22.748768 0
months -0.421994 0.0831023 419 -5.078006 0
Correlation:
(Intr)
months -0.632
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.9978128 -0.5415801 -0.1608097 0.4454676 3.5519839
Number of Observations: 674
Number of Groups: 254
#Model B
model.b <- update(model.a, cesd~months+unemp)
summary(model.b)
Linear mixed-effects model fit by maximum likelihood
Data: unemployment
AIC BIC logLik
5121.603 5153.196 -2553.802
Random effects:
Formula: ~months | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 9.6705179 (Intr)
months 0.6816912 -0.591
Residual 7.8985868
Fixed effects: cesd ~ months + unemp
Value Std.Error DF t-value p-value
(Intercept) 12.665598 1.2448444 418 10.174443 0.0000
months -0.201984 0.0935246 418 -2.159683 0.0314
unemp 5.111304 0.9910522 418 5.157451 0.0000
Correlation:
(Intr) months
months -0.715
unemp -0.780 0.459
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.9609557 -0.5357110 -0.1191791 0.4303300 3.6857126
Number of Observations: 674
Number of Groups: 254
#Model C
model.c <- update(model.b, cesd~months*unemp)
summary(model.c)
Linear mixed-effects model fit by maximum likelihood
Data: unemployment
AIC BIC logLik
5119.047 5155.153 -2551.523
Random effects:
Formula: ~months | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 9.6805554 (Intr)
months 0.6717203 -0.596
Residual 7.8759886
Fixed effects: cesd ~ months + unemp + months:unemp
Value Std.Error DF t-value p-value
(Intercept) 9.616744 1.8949397 417 5.074961 0.0000
months 0.162036 0.1942395 417 0.834207 0.4046
unemp 8.529059 1.8834713 417 4.528372 0.0000
months:unemp -0.465222 0.2178620 417 -2.135398 0.0333
Correlation:
(Intr) months unemp
months -0.888
unemp -0.911 0.863
months:unemp 0.755 -0.878 -0.852
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.0039251 -0.5237204 -0.1548188 0.4308929 3.6960920
Number of Observations: 674
Number of Groups: 254
#Model D
model.d <- lme(cesd~unemp+unemp:months, unemployment, random=~unemp+unemp:months|id, control = list(optimizer = "nlm", msMaxIter = 100))
summary(model.d)
Linear mixed-effects model fit by REML
Data: unemployment
AIC BIC logLik
5115.584 5160.672 -2547.792
Random effects:
Formula: ~unemp + unempmonths | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 6.7650112 (Intr) unemp
unemp 6.7760936 0.133
unempmonths 0.8738672 0.120 -0.967
Residual 7.6874318
Fixed effects: cesd ~ unemp + unempmonths
Value Std.Error DF t-value p-value
(Intercept) 11.197931 0.7925828 418 14.128405 0.0000
unemp 6.924134 0.9332866 418 7.419086 0.0000
unempmonths -0.303037 0.1124419 418 -2.695056 0.0073
Correlation:
(Intr) unemp
unemp -0.564
unempmonths -0.072 -0.444
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.1280241 -0.4893635 -0.1558296 0.4256349 3.7748883
Number of Observations: 674
Number of Groups: 254
Fig. 5.4, p. 167.
#model B
fixef.b <- fixef(model.b)
months.seq <- seq(0, 14)
unemp.b1 <- fixef.b[[1]] + fixef.b[[2]]*months.seq + fixef.b[[3]]
unemp.b0 <- fixef.b[[1]] + fixef.b[[2]]*months.seq
plot(months.seq, unemp.b1, type="l", ylim=c(5, 20), ylab="CES-D.hat",
xlab="Months since job loss")
lines(months.seq, unemp.b0, lty=3)
legend(10, 20, c("Unemp = 1", "Unemp = 0"), lty=c(1, 3))
title("Main Effects of Unemp and Time")
#model C
fixef.c <- fixef(model.c)
unemp.c1 <- fixef.c[[1]] + fixef.c[[2]]*months.seq + fixef.c[[3]] +
fixef.c[[4]]*months.seq
unemp.c0 <- fixef.c[[1]] + fixef.c[[2]]*months.seq
plot(months.seq, unemp.c1, type="l", ylim=c(5, 20), ylab="CES-D.hat",
xlab="Months since job loss")
lines(months.seq, unemp.c0, lty=3)
legend(10, 20, c("Unemp = 1", "Unemp = 0"), lty=c(1, 3))
title("Interaction Between Unemp and Time"
#model D
fixef.d <- fixef(model.d)
unemp.d1 <- fixef.d[[1]] + fixef.d[[3]]*months.seq + fixef.d[[2]]
unemp.d0 <- rep(fixef.d[[1]], 15)
plot(months.seq, unemp.d1, type="l", ylim=c(5, 20), ylab="CES-D.hat",
xlab="Months since job loss")
lines(months.seq, unemp.d0, lty=3)
legend(10, 20, c("Unemp = 1", "Unemp = 0"), lty=c(1, 3))
title("Constraining the Effect of Time Among the Re-employed")
#Model A
model.a <- lme(lnw~hgc.9+ue.7+exper+exper:black, wages,
random=~exper|id, method="ML")
summary(model.a)
Linear mixed-effects model fit by maximum likelihood
Data: wages
AIC BIC logLik
4848.519 4909.398 -2415.260
Random effects:
Formula: ~exper | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 0.22502612 (Intr)
exper 0.04039467 -0.32
Residual 0.30788820
Fixed effects: lnw ~ hgc.9 + ue.7 + exper + exper:black
Value Std.Error DF t-value p-value
(Intercept) 1.7489885 0.011403780 5511 153.36920 0e+00
hgc.9 0.0400110 0.006365174 886 6.28592 0e+00
ue.7 -0.0119504 0.001792332 5511 -6.66753 0e+00
exper 0.0440539 0.002604399 5511 16.91517 0e+00
exper:black -0.0181832 0.004485454 5511 -4.05382 1e-04
Correlation:
(Intr) hgc.9 ue.7 exper
hgc.9 0.086
ue.7 -0.363 -0.039
exper -0.566 -0.033 0.277
exper:black -0.059 -0.018 0.070 -0.354
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-4.34080735 -0.51984995 -0.03652662 0.44253148 6.97854580
Number of Observations: 6402
Number of Groups: 888
#Model B
model.b <- update(model.a, lnw~hgc.9+ue.mean+ue.person.cen+exper+exper:black)
summary(model.b)
Linear mixed-effects model fit by maximum likelihood
Data: wages
AIC BIC logLik
4846.978 4914.622 -2413.489
Random effects:
Formula: ~exper | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 0.22585733 (Intr)
exper 0.04035594 -0.332
Residual 0.30789898
Fixed effects: lnw ~ hgc.9 + ue.mean + ue.person.cen + exper + exper:black
Value Std.Error DF t-value p-value
(Intercept) 1.8742603 0.029537336 5511 63.45394 0
hgc.9 0.0401695 0.006353674 885 6.32225 0
ue.mean -0.0177091 0.003521834 885 -5.02838 0
ue.person.cen -0.0099015 0.002098270 5511 -4.71890 0
exper 0.0450568 0.002651050 5511 16.99581 0
exper:black -0.0188696 0.004478998 5511 -4.21290 0
Correlation:
(Intr) hgc.9 ue.men u.prs. exper
hgc.9 0.058
ue.mean -0.926 -0.029
ue.person.cen -0.097 -0.027 -0.013
exper -0.187 -0.031 -0.030 0.334
exper:black -0.112 -0.019 0.105 0.018 -0.360
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-4.34617259 -0.51627687 -0.03591788 0.44100810 7.00029539
Number of Observations: 6402
Number of Groups: 888
#Model C
model.c <- update(model.b, lnw~hgc.9+ue1+ue.centert1+exper+exper:black)
summary(model.c)
Linear mixed-effects model fit by maximum likelihood
Data: wages
AIC BIC logLik
4845.842 4913.485 -2412.921
Random effects:
Formula: ~exper | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 0.22422643 (Intr)
exper 0.04044107 -0.32
Residual 0.30784190
Fixed effects: lnw ~ hgc.9 + ue1 + ue.centert1 + exper + exper:black
Value Std.Error DF t-value p-value
(Intercept) 1.8693452 0.026043822 5511 71.77691 0
hgc.9 0.0399276 0.006352135 885 6.28570 0
ue1 -0.0161774 0.002649638 885 -6.10551 0
ue.centert1 -0.0103090 0.001945368 5511 -5.29926 0
exper 0.0447649 0.002626143 5511 17.04588 0
exper:black -0.0183238 0.004486916 5511 -4.08383 0
Correlation:
(Intr) hgc.9 ue1 u.cnt1 exper
hgc.9 0.053
ue1 -0.913 -0.022
ue.centert1 -0.335 -0.038 0.335
exper -0.296 -0.033 0.093 0.302
exper:black -0.069 -0.018 0.058 0.059 -0.353
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-4.33611513 -0.51751018 -0.03512461 0.44130726 6.99734177
Number of Observations: 6402
Number of Groups: 888
Inputting the medication data set.
medication <- read.table("https://stats.idre.ucla.edu/stat/r/examples/alda/data/medication_pp.txt", header=T, sep=",")
Table 5.9, p. 182.
medication[c(1:6, 11, 16:21), c(3:8)] wave day time.of.day time time333 time667 1 1 0 0.0000000 0.0000000 -3.333333 -6.6666667 2 2 0 0.3333333 0.3333333 -3.000000 -6.3333333 3 3 0 0.6666667 0.6666667 -2.666667 -6.0000000 4 4 1 0.0000000 1.0000000 -2.333333 -5.6666667 5 5 1 0.3333333 1.3333333 -2.000000 -5.3333333 6 6 1 0.6666667 1.6666667 -1.666667 -5.0000000 11 11 3 0.3333333 3.3333333 0.000000 -3.3333333 16 16 5 0.0000000 5.0000000 1.666667 -1.6666667 17 17 5 0.3333333 5.3333333 2.000000 -1.3333333 18 19 6 0.0000000 6.0000000 2.666667 -0.6666667 19 20 6 0.3333333 6.3333333 3.000000 -0.3333333 20 21 6 0.6666667 6.6666667 3.333333 0.0000000 21 1 0 0.0000000 0.0000000 -3.333333 -6.6666667
Table 5.10, p. 184.
#Using time (Model A)
model.a <- lme(pos~treat*time, medication, random= ~time|id, method="ML")
summary(model.a)
Linear mixed-effects model fit by maximum likelihood
Data: medication
AIC BIC logLik
12696.45 12737.45 -6340.226
Random effects:
Formula: ~time | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 45.949935 (Intr)
time 7.983475 -0.332
Residual 35.070353
Fixed effects: pos ~ treat * time
Value Std.Error DF t-value p-value
(Intercept) 167.46346 9.341307 1176 17.927198 0.0000
treat -3.10930 12.352456 62 -0.251715 0.8021
time -2.41813 1.733646 1176 -1.394822 0.1633
treat:time 5.53681 2.281523 1176 2.426805 0.0154
Correlation:
(Intr) treat time
treat -0.756
time -0.404 0.305
treat:time 0.307 -0.408 -0.760
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-3.2708599 -0.4899446 -0.1174939 0.4240840 5.6180036
Number of Observations: 1242
Number of Groups: 64
#Using time - 3.33 (Model B)
model.b <- update(model.a, pos~treat*time333)
summary(model.b)
Linear mixed-effects model fit by maximum likelihood
Data: medication
AIC BIC logLik
12696.45 12737.45 -6340.226
Random effects:
Formula: ~time | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 45.949935 (Intr)
time 7.983475 -0.332
Residual 35.070353
Fixed effects: pos ~ treat + time333 + treat:time333
Value Std.Error DF t-value p-value
(Intercept) 159.40304 8.778656 1176 18.158023 0.0000
treat 15.34674 11.563284 62 1.327196 0.1893
time333 -2.41813 1.733646 1176 -1.394822 0.1633
treat:time333 5.53681 2.281523 1176 2.426805 0.0154
Correlation:
(Intr) treat tim333
treat -0.759
time333 0.229 -0.174
treat:time333 -0.174 0.222 -0.760
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-3.2708599 -0.4899446 -0.1174939 0.4240840 5.6180036
Number of Observations: 1242
Number of Groups: 64
#Using time - 6.67 (Model C)
model.c <- update(model.b, pos~treat*time667)
summary(model.c)
Linear mixed-effects model fit by maximum likelihood
Data: medication
AIC BIC logLik
12696.45 12737.45 -6340.226
Random effects:
Formula: ~time | id
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 45.949935 (Intr)
time 7.983475 -0.332
Residual 35.070353
Fixed effects: pos ~ treat + time667 + treat:time667
Value Std.Error DF t-value p-value
(Intercept) 151.34261 11.561102 1176 13.090673 0.0000
treat 33.80278 15.182565 62 2.226421 0.0296
time667 -2.41813 1.733646 1176 -1.394822 0.1633
treat:time667 5.53681 2.281523 1176 2.426805 0.0154
Correlation:
(Intr) treat tim667
treat -0.761
time667 0.673 -0.513
treat:time667 -0.512 0.670 -0.760
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-3.2708599 -0.4899446 -0.1174939 0.4240840 5.6180036
Number of Observations: 1242
Number of Groups: 64
Fig. 5.5, p. 185. Note: The vertical lines reflect the magnitude of the effect of treatment when time is centered at different values.
days.seq <- seq(0, 7)
fixef.a <- fixef(model.a)
trt <- fixef.a[[1]] + fixef.a[[2]] + (fixef.a[[3]]+fixef.a[[4]])*days.seq
cnt <- fixef.a[[1]] + fixef.a[[3]]*days.seq
plot(days.seq, trt, ylim=c(140, 190), xlim=c(0, 7), type="l",
xlab="Days", ylab="POS.hat")
lines(days.seq, cnt, lty=4)
legend(0, 190, c("treatment", "control"), lty=c(1, 4))
segments(0, fixef.a[[1]] + fixef.a[[3]]*0, 0,
fixef.a[[1]] + fixef.a[[2]] + (fixef.a[[3]]+fixef.a[[4]])*0)
segments(3.33, fixef.a[[1]] + fixef.a[[3]]*3.33, 3.33,
fixef.a[[1]] + fixef.a[[2]] + (fixef.a[[3]]+fixef.a[[4]])*3.33)
segments(6.670, fixef.a[[1]] + fixef.a[[3]]*6.670, 6.670,
fixef.a[[1]] + fixef.a[[2]] + (fixef.a[[3]]+fixef.a[[4]])*6.670)






