2025-01-12 04:36:52 +08:00

7824 lines
225 KiB
Plaintext

R Under development (unstable) (2024-04-16 r86430) -- "Unsuffered Consequences"
Copyright (C) 2024 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> ## run reproduction scripts from the NLME book chapters
> testdir <- system.file("scripts", package = "nlme", mustWork = TRUE)
> scripts <- dir(testdir, pattern = "^ch[0-9]*\\.R$")
> for(f in scripts) {
+ writeLines(c("", strrep("=", nchar(f)), basename(f), strrep("=", nchar(f))))
+ set.seed(3)
+ options(warn = 1) # chapters set digits
+ source(file.path(testdir, f), echo = TRUE,
+ max.deparse.length = Inf, keep.source = TRUE)
+ }
======
ch01.R
======
> #-*- R -*-
>
> library(nlme)
> pdf(file = 'ch01.pdf')
> options( width = 65, digits = 5 )
> options( contrasts = c(unordered = "contr.helmert", ordered = "contr.poly") )
> # Chapter 1 Linear Mixed-Effects Models: Basic Concepts and Examples
>
> # 1.1 A Simple Example of Random Effects
>
> Rail
Grouped Data: travel ~ 1 | Rail
Rail travel
1 1 55
2 1 53
3 1 54
4 2 26
5 2 37
6 2 32
7 3 78
8 3 91
9 3 85
10 4 92
11 4 100
12 4 96
13 5 49
14 5 51
15 5 50
16 6 80
17 6 85
18 6 83
> fm1Rail.lm <- lm( travel ~ 1, data = Rail )
> fm1Rail.lm
Call:
lm(formula = travel ~ 1, data = Rail)
Coefficients:
(Intercept)
66.5
> fm2Rail.lm <- lm( travel ~ Rail - 1, data = Rail )
> fm2Rail.lm
Call:
lm(formula = travel ~ Rail - 1, data = Rail)
Coefficients:
Rail2 Rail5 Rail1 Rail6 Rail3 Rail4
31.7 50.0 54.0 82.7 84.7 96.0
> fm1Rail.lme <- lme(travel ~ 1, data = Rail, random = ~ 1 | Rail)
> summary( fm1Rail.lme )
Linear mixed-effects model fit by REML
Data: Rail
AIC BIC logLik
128.18 130.68 -61.089
Random effects:
Formula: ~1 | Rail
(Intercept) Residual
StdDev: 24.805 4.0208
Fixed effects: travel ~ 1
Value Std.Error DF t-value p-value
(Intercept) 66.5 10.171 12 6.5382 0
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.618827 -0.282177 0.035693 0.219558 1.614377
Number of Observations: 18
Number of Groups: 6
> fm1Rail.lmeML <- update( fm1Rail.lme, method = "ML" )
> summary( fm1Rail.lmeML )
Linear mixed-effects model fit by maximum likelihood
Data: Rail
AIC BIC logLik
134.56 137.23 -64.28
Random effects:
Formula: ~1 | Rail
(Intercept) Residual
StdDev: 22.624 4.0208
Fixed effects: travel ~ 1
Value Std.Error DF t-value p-value
(Intercept) 66.5 9.554 12 6.9604 0
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.610981 -0.288870 0.034542 0.213728 1.622223
Number of Observations: 18
Number of Groups: 6
> plot( fm1Rail.lme ) # produces Figure 1.4
> intervals( fm1Rail.lme )
Approximate 95% confidence intervals
Fixed effects:
lower est. upper
(Intercept) 44.339 66.5 88.661
Random Effects:
Level: Rail
lower est. upper
sd((Intercept)) 13.274 24.805 46.353
Within-group standard error:
lower est. upper
2.6950 4.0208 5.9987
> anova( fm1Rail.lme )
numDF denDF F-value p-value
(Intercept) 1 12 42.748 <.0001
> # 1.2 A Randomized Block Design
>
> plot.design( ergoStool ) # produces Figure 1.6
> contrasts( ergoStool$Type )
[,1] [,2] [,3]
T1 -1 -1 -1
T2 1 -1 -1
T3 0 2 -1
T4 0 0 3
> ergoStool1 <- ergoStool[ ergoStool$Subject == "1", ]
> model.matrix( effort ~ Type, ergoStool1 ) # X matrix for Subject 1
(Intercept) Type1 Type2 Type3
1 1 -1 -1 -1
2 1 1 -1 -1
3 1 0 2 -1
4 1 0 0 3
attr(,"assign")
[1] 0 1 1 1
attr(,"contrasts")
attr(,"contrasts")$Type
[1] "contr.helmert"
> fm1Stool <-
+ lme(effort ~ Type, data = ergoStool, random = ~ 1 | Subject)
> summary( fm1Stool )
Linear mixed-effects model fit by REML
Data: ergoStool
AIC BIC logLik
139.49 148.28 -63.743
Random effects:
Formula: ~1 | Subject
(Intercept) Residual
StdDev: 1.3325 1.1003
Fixed effects: effort ~ Type
Value Std.Error DF t-value p-value
(Intercept) 10.2500 0.48052 24 21.3309 0.0000
Type1 1.9444 0.25934 24 7.4976 0.0000
Type2 0.0926 0.14973 24 0.6184 0.5421
Type3 -0.3426 0.10588 24 -3.2358 0.0035
Correlation:
(Intr) Type1 Type2
Type1 0
Type2 0 0
Type3 0 0 0
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.802003 -0.643166 0.057831 0.700997 1.631421
Number of Observations: 36
Number of Groups: 9
> anova( fm1Stool )
numDF denDF F-value p-value
(Intercept) 1 24 455.01 <.0001
Type 3 24 22.36 <.0001
> options( contrasts = c( factor = "contr.treatment",
+ ordered = "contr.poly" ) )
> contrasts( ergoStool$Type )
T2 T3 T4
T1 0 0 0
T2 1 0 0
T3 0 1 0
T4 0 0 1
> fm2Stool <-
+ lme(effort ~ Type, data = ergoStool, random = ~ 1 | Subject)
> summary( fm2Stool )
Linear mixed-effects model fit by REML
Data: ergoStool
AIC BIC logLik
133.13 141.93 -60.565
Random effects:
Formula: ~1 | Subject
(Intercept) Residual
StdDev: 1.3325 1.1003
Fixed effects: effort ~ Type
Value Std.Error DF t-value p-value
(Intercept) 8.5556 0.57601 24 14.8531 0.0000
TypeT2 3.8889 0.51868 24 7.4976 0.0000
TypeT3 2.2222 0.51868 24 4.2843 0.0003
TypeT4 0.6667 0.51868 24 1.2853 0.2110
Correlation:
(Intr) TypeT2 TypeT3
TypeT2 -0.45
TypeT3 -0.45 0.50
TypeT4 -0.45 0.50 0.50
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.802003 -0.643166 0.057831 0.700997 1.631421
Number of Observations: 36
Number of Groups: 9
> anova( fm2Stool )
numDF denDF F-value p-value
(Intercept) 1 24 455.01 <.0001
Type 3 24 22.36 <.0001
> model.matrix( effort ~ Type - 1, ergoStool1 )
TypeT1 TypeT2 TypeT3 TypeT4
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
attr(,"assign")
[1] 1 1 1 1
attr(,"contrasts")
attr(,"contrasts")$Type
[1] "contr.treatment"
> fm3Stool <-
+ lme(effort ~ Type - 1, data = ergoStool, random = ~ 1 | Subject)
> summary( fm3Stool )
Linear mixed-effects model fit by REML
Data: ergoStool
AIC BIC logLik
133.13 141.93 -60.565
Random effects:
Formula: ~1 | Subject
(Intercept) Residual
StdDev: 1.3325 1.1003
Fixed effects: effort ~ Type - 1
Value Std.Error DF t-value p-value
TypeT1 8.5556 0.57601 24 14.853 0
TypeT2 12.4444 0.57601 24 21.605 0
TypeT3 10.7778 0.57601 24 18.711 0
TypeT4 9.2222 0.57601 24 16.011 0
Correlation:
TypeT1 TypeT2 TypeT3
TypeT2 0.595
TypeT3 0.595 0.595
TypeT4 0.595 0.595 0.595
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.802003 -0.643166 0.057831 0.700997 1.631421
Number of Observations: 36
Number of Groups: 9
> anova( fm3Stool )
numDF denDF F-value p-value
Type 4 24 130.52 <.0001
> intervals( fm1Stool )
Approximate 95% confidence intervals
Fixed effects:
lower est. upper
(Intercept) 9.25825 10.250000 11.24175
Type1 1.40919 1.944444 2.47970
Type2 -0.21644 0.092593 0.40162
Type3 -0.56111 -0.342593 -0.12408
Random Effects:
Level: Subject
lower est. upper
sd((Intercept)) 0.74962 1.3325 2.3685
Within-group standard error:
lower est. upper
0.82957 1.10029 1.45937
> plot( fm1Stool, # produces Figure 1.8
+ form = resid(., type = "p") ~ fitted(.) | Subject,
+ abline = 0 )
> # 1.3 Mixed-effects Models for Replicated, Blocked Designs
>
> with(Machines, interaction.plot( Machine, Worker, score, las = 1)) # Figure 1.10
> fm1Machine <-
+ lme( score ~ Machine, data = Machines, random = ~ 1 | Worker )
> fm1Machine
Linear mixed-effects model fit by REML
Data: Machines
Log-restricted-likelihood: -143.44
Fixed: score ~ Machine
(Intercept) MachineB MachineC
52.3556 7.9667 13.9167
Random effects:
Formula: ~1 | Worker
(Intercept) Residual
StdDev: 5.1466 3.1616
Number of Observations: 54
Number of Groups: 6
> fm2Machine <- update( fm1Machine, random = ~ 1 | Worker/Machine )
> fm2Machine
Linear mixed-effects model fit by REML
Data: Machines
Log-restricted-likelihood: -107.84
Fixed: score ~ Machine
(Intercept) MachineB MachineC
52.3556 7.9667 13.9167
Random effects:
Formula: ~1 | Worker
(Intercept)
StdDev: 4.781
Formula: ~1 | Machine %in% Worker
(Intercept) Residual
StdDev: 3.7295 0.96158
Number of Observations: 54
Number of Groups:
Worker Machine %in% Worker
6 18
> anova( fm1Machine, fm2Machine )
Model df AIC BIC logLik Test L.Ratio p-value
fm1Machine 1 5 296.88 306.54 -143.44
fm2Machine 2 6 227.69 239.28 -107.84 1 vs 2 71.191 <.0001
> ## delete selected rows from the Machines data
> MachinesUnbal <- Machines[ -c(2,3,6,8,9,12,19,20,27,33), ]
> ## check that the result is indeed unbalanced
> table(MachinesUnbal$Machine, MachinesUnbal$Worker)
6 2 4 1 3 5
A 3 2 2 1 1 3
B 3 3 3 1 2 2
C 3 3 3 3 3 3
> fm1MachinesU <- lme( score ~ Machine, data = MachinesUnbal,
+ random = ~ 1 | Worker/Machine )
> fm1MachinesU
Linear mixed-effects model fit by REML
Data: MachinesUnbal
Log-restricted-likelihood: -90.936
Fixed: score ~ Machine
(Intercept) MachineB MachineC
52.3540 7.9624 13.9182
Random effects:
Formula: ~1 | Worker
(Intercept)
StdDev: 4.7387
Formula: ~1 | Machine %in% Worker
(Intercept) Residual
StdDev: 3.7728 0.9332
Number of Observations: 44
Number of Groups:
Worker Machine %in% Worker
6 18
> intervals( fm1MachinesU )
Approximate 95% confidence intervals
Fixed effects:
lower est. upper
(Intercept) 47.2345 52.3540 57.474
MachineB 3.0278 7.9624 12.897
MachineC 8.9955 13.9182 18.841
Random Effects:
Level: Worker
lower est. upper
sd((Intercept)) 2.2162 4.7387 10.132
Level: Machine
lower est. upper
sd((Intercept)) 2.4091 3.7728 5.9085
Within-group standard error:
lower est. upper
0.71113 0.93320 1.22463
> fm4Stool <- lme( effort ~ Type, ergoStool, ~ 1 | Subject/Type )
> if (interactive()) intervals( fm4Stool )
> (fm1Stool$sigma)^2
[1] 1.2106
> (fm4Stool$sigma)^2 + 0.79621^2
[1] 0.84554
> Machine1 <- Machines[ Machines$Worker == "1", ]
> model.matrix( score ~ Machine, Machine1 ) # fixed-effects X_i
(Intercept) MachineB MachineC
1 1 0 0
2 1 0 0
3 1 0 0
19 1 1 0
20 1 1 0
21 1 1 0
37 1 0 1
38 1 0 1
39 1 0 1
attr(,"assign")
[1] 0 1 1
attr(,"contrasts")
attr(,"contrasts")$Machine
[1] "contr.treatment"
> model.matrix( ~ Machine - 1, Machine1 ) # random-effects Z_i
MachineA MachineB MachineC
1 1 0 0
2 1 0 0
3 1 0 0
19 0 1 0
20 0 1 0
21 0 1 0
37 0 0 1
38 0 0 1
39 0 0 1
attr(,"assign")
[1] 1 1 1
attr(,"contrasts")
attr(,"contrasts")$Machine
[1] "contr.treatment"
> fm3Machine <- update( fm1Machine, random = ~Machine - 1 |Worker)
> summary( fm3Machine )
Linear mixed-effects model fit by REML
Data: Machines
AIC BIC logLik
228.31 247.63 -104.16
Random effects:
Formula: ~Machine - 1 | Worker
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
MachineA 4.07928 MachnA MachnB
MachineB 8.62529 0.803
MachineC 4.38948 0.623 0.771
Residual 0.96158
Fixed effects: score ~ Machine
Value Std.Error DF t-value p-value
(Intercept) 52.356 1.6807 46 31.1508 0.0000
MachineB 7.967 2.4209 46 3.2909 0.0019
MachineC 13.917 1.5401 46 9.0362 0.0000
Correlation:
(Intr) MachnB
MachineB 0.463
MachineC -0.374 0.301
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.393540 -0.513776 0.026908 0.472455 2.533387
Number of Observations: 54
Number of Groups: 6
> anova( fm1Machine, fm2Machine, fm3Machine )
Model df AIC BIC logLik Test L.Ratio p-value
fm1Machine 1 5 296.88 306.54 -143.44
fm2Machine 2 6 227.69 239.28 -107.84 1 vs 2 71.191 <.0001
fm3Machine 3 10 228.31 247.63 -104.16 2 vs 3 7.376 0.1173
> # 1.4 An Analysis of Covariance Model
>
> names( Orthodont )
[1] "distance" "age" "Subject" "Sex"
> levels( Orthodont$Sex )
[1] "Male" "Female"
> OrthoFem <- Orthodont[ Orthodont$Sex == "Female", ]
> fm1OrthF.lis <- lmList( distance ~ age, data = OrthoFem )
> coef( fm1OrthF.lis )
(Intercept) age
F10 13.55 0.450
F09 18.10 0.275
F06 17.00 0.375
F01 17.25 0.375
F05 19.60 0.275
F07 16.95 0.550
F02 14.20 0.800
F08 21.45 0.175
F03 14.40 0.850
F04 19.65 0.475
F11 18.95 0.675
> intervals( fm1OrthF.lis )
, , (Intercept)
lower est. upper
F10 10.071 13.55 17.029
F09 14.621 18.10 21.579
F06 13.521 17.00 20.479
F01 13.771 17.25 20.729
F05 16.121 19.60 23.079
F07 13.471 16.95 20.429
F02 10.721 14.20 17.679
F08 17.971 21.45 24.929
F03 10.921 14.40 17.879
F04 16.171 19.65 23.129
F11 15.471 18.95 22.429
, , age
lower est. upper
F10 0.1401 0.450 0.7599
F09 -0.0349 0.275 0.5849
F06 0.0651 0.375 0.6849
F01 0.0651 0.375 0.6849
F05 -0.0349 0.275 0.5849
F07 0.2401 0.550 0.8599
F02 0.4901 0.800 1.1099
F08 -0.1349 0.175 0.4849
F03 0.5401 0.850 1.1599
F04 0.1651 0.475 0.7849
F11 0.3651 0.675 0.9849
> plot( intervals ( fm1OrthF.lis ) ) # produces Figure 1.12
> fm2OrthF.lis <- update( fm1OrthF.lis, distance ~ I( age - 11 ) )
> plot( intervals( fm2OrthF.lis ) ) # produces Figure 1.13
> fm1OrthF <-
+ lme( distance ~ age, data = OrthoFem, random = ~ 1 | Subject )
> summary( fm1OrthF )
Linear mixed-effects model fit by REML
Data: OrthoFem
AIC BIC logLik
149.22 156.17 -70.609
Random effects:
Formula: ~1 | Subject
(Intercept) Residual
StdDev: 2.0685 0.78003
Fixed effects: distance ~ age
Value Std.Error DF t-value p-value
(Intercept) 17.3727 0.85874 32 20.2304 0
age 0.4795 0.05259 32 9.1186 0
Correlation:
(Intr)
age -0.674
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.27365 -0.70902 0.17282 0.41221 1.63252
Number of Observations: 44
Number of Groups: 11
> fm1OrthFM <- update( fm1OrthF, method = "ML" )
> summary( fm1OrthFM )
Linear mixed-effects model fit by maximum likelihood
Data: OrthoFem
AIC BIC logLik
146.03 153.17 -69.015
Random effects:
Formula: ~1 | Subject
(Intercept) Residual
StdDev: 1.9699 0.76812
Fixed effects: distance ~ age
Value Std.Error DF t-value p-value
(Intercept) 17.3727 0.85063 32 20.4234 0
age 0.4795 0.05301 32 9.0471 0
Correlation:
(Intr)
age -0.685
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.30562 -0.71924 0.17636 0.42580 1.66894
Number of Observations: 44
Number of Groups: 11
> fm2OrthF <- update( fm1OrthF, random = ~ age | Subject )
> anova( fm1OrthF, fm2OrthF )
Model df AIC BIC logLik Test L.Ratio p-value
fm1OrthF 1 4 149.22 156.17 -70.609
fm2OrthF 2 6 149.43 159.85 -68.714 1 vs 2 3.7896 0.1503
> random.effects( fm1OrthF )
(Intercept)
F10 -4.005329
F09 -1.470449
F06 -1.470449
F01 -1.229032
F05 -0.021947
F07 0.340179
F02 0.340179
F08 0.702304
F03 1.064430
F04 2.150807
F11 3.599309
> ranef( fm1OrthFM )
(Intercept)
F10 -3.995835
F09 -1.466964
F06 -1.466964
F01 -1.226119
F05 -0.021895
F07 0.339372
F02 0.339372
F08 0.700640
F03 1.061907
F04 2.145709
F11 3.590778
> coef( fm1OrthF )
(Intercept) age
F10 13.367 0.47955
F09 15.902 0.47955
F06 15.902 0.47955
F01 16.144 0.47955
F05 17.351 0.47955
F07 17.713 0.47955
F02 17.713 0.47955
F08 18.075 0.47955
F03 18.437 0.47955
F04 19.524 0.47955
F11 20.972 0.47955
> plot( compareFits(coef(fm1OrthF), coef(fm1OrthFM))) # Figure 1.15
> plot( augPred(fm1OrthF), aspect = "xy", grid = TRUE ) # Figure 1.16
> # 1.5 Models for Nested Classification Factors
>
> fm1Pixel <- lme( pixel ~ day + I(day^2), data = Pixel,
+ random = list( Dog = ~ day, Side = ~ 1 ) )
> intervals( fm1Pixel )
Approximate 95% confidence intervals
Fixed effects:
lower est. upper
(Intercept) 1053.0968 1073.33914 1093.5814
day 4.3797 6.12960 7.8795
I(day^2) -0.4349 -0.36735 -0.2998
Random Effects:
Level: Dog
lower est. upper
sd((Intercept)) 15.92760 28.36990 50.53187
sd(day) 1.08139 1.84375 3.14357
cor((Intercept),day) -0.89465 -0.55472 0.19197
Level: Side
lower est. upper
sd((Intercept)) 10.417 16.824 27.173
Within-group standard error:
lower est. upper
7.6345 8.9896 10.5852
> plot( augPred( fm1Pixel ) ) # produces Figure 1.18
> VarCorr( fm1Pixel )
Variance StdDev Corr
Dog = pdLogChol(day)
(Intercept) 804.8514 28.3699 (Intr)
day 3.3994 1.8438 -0.555
Side = pdLogChol(1)
(Intercept) 283.0572 16.8243
Residual 80.8130 8.9896
> summary( fm1Pixel )
Linear mixed-effects model fit by REML
Data: Pixel
AIC BIC logLik
841.21 861.97 -412.61
Random effects:
Formula: ~day | Dog
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 28.3699 (Intr)
day 1.8438 -0.555
Formula: ~1 | Side %in% Dog
(Intercept) Residual
StdDev: 16.824 8.9896
Fixed effects: pixel ~ day + I(day^2)
Value Std.Error DF t-value p-value
(Intercept) 1073.34 10.1717 80 105.522 0
day 6.13 0.8793 80 6.971 0
I(day^2) -0.37 0.0339 80 -10.822 0
Correlation:
(Intr) day
day -0.517
I(day^2) 0.186 -0.668
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.829057 -0.449181 0.025549 0.557216 2.751965
Number of Observations: 102
Number of Groups:
Dog Side %in% Dog
10 20
> fm2Pixel <- update( fm1Pixel, random = ~ day | Dog)
> anova( fm1Pixel, fm2Pixel )
Model df AIC BIC logLik Test L.Ratio p-value
fm1Pixel 1 8 841.21 861.97 -412.61
fm2Pixel 2 7 884.52 902.69 -435.26 1 vs 2 45.309 <.0001
> fm3Pixel <- update( fm1Pixel, random = ~ 1 | Dog/Side )
> anova( fm1Pixel, fm3Pixel )
Model df AIC BIC logLik Test L.Ratio p-value
fm1Pixel 1 8 841.21 861.97 -412.61
fm3Pixel 2 6 876.84 892.41 -432.42 1 vs 2 39.629 <.0001
> fm4Pixel <- update( fm1Pixel, pixel ~ day + I(day^2) + Side )
> summary( fm4Pixel )
Linear mixed-effects model fit by REML
Data: Pixel
AIC BIC logLik
835.85 859.12 -408.93
Random effects:
Formula: ~day | Dog
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 28.4636 (Intr)
day 1.8438 -0.553
Formula: ~1 | Side %in% Dog
(Intercept) Residual
StdDev: 16.507 8.9836
Fixed effects: pixel ~ day + I(day^2) + Side
Value Std.Error DF t-value p-value
(Intercept) 1077.95 10.8627 80 99.234 0.0000
day 6.13 0.8790 80 6.973 0.0000
I(day^2) -0.37 0.0339 80 -10.829 0.0000
SideR -9.22 7.6268 9 -1.209 0.2576
Correlation:
(Intr) day I(d^2)
day -0.484
I(day^2) 0.174 -0.667
SideR -0.351 0.000 0.000
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.809825 -0.471334 0.026103 0.541154 2.774701
Number of Observations: 102
Number of Groups:
Dog Side %in% Dog
10 20
> # 1.6 A Split-Plot Experiment
>
> fm1Oats <- lme( yield ~ ordered(nitro) * Variety, data = Oats,
+ random = ~ 1 | Block/Variety )
> anova( fm1Oats )
numDF denDF F-value p-value
(Intercept) 1 45 245.143 <.0001
ordered(nitro) 3 45 37.686 <.0001
Variety 2 10 1.485 0.2724
ordered(nitro):Variety 6 45 0.303 0.9322
> fm2Oats <- update( fm1Oats, yield ~ ordered(nitro) + Variety )
> anova( fm2Oats )
numDF denDF F-value p-value
(Intercept) 1 51 245.145 <.0001
ordered(nitro) 3 51 41.053 <.0001
Variety 2 10 1.485 0.2724
> summary( fm2Oats )
Linear mixed-effects model fit by REML
Data: Oats
AIC BIC logLik
587.46 607.16 -284.73
Random effects:
Formula: ~1 | Block
(Intercept)
StdDev: 14.645
Formula: ~1 | Variety %in% Block
(Intercept) Residual
StdDev: 10.473 12.75
Fixed effects: yield ~ ordered(nitro) + Variety
Value Std.Error DF t-value p-value
(Intercept) 104.500 7.7975 51 13.4017 0.0000
ordered(nitro).L 32.945 3.0052 51 10.9627 0.0000
ordered(nitro).Q -5.167 3.0052 51 -1.7193 0.0916
ordered(nitro).C -0.447 3.0052 51 -0.1488 0.8823
VarietyMarvellous 5.292 7.0789 10 0.7475 0.4720
VarietyVictory -6.875 7.0789 10 -0.9712 0.3544
Correlation:
(Intr) or().L or().Q or().C VrtyMr
ordered(nitro).L 0.000
ordered(nitro).Q 0.000 0.000
ordered(nitro).C 0.000 0.000 0.000
VarietyMarvellous -0.454 0.000 0.000 0.000
VarietyVictory -0.454 0.000 0.000 0.000 0.500
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.841341 -0.662797 -0.066943 0.638225 1.660668
Number of Observations: 72
Number of Groups:
Block Variety %in% Block
6 18
> fm3Oats <- update( fm1Oats, yield ~ ordered( nitro ) )
> summary( fm3Oats )
Linear mixed-effects model fit by REML
Data: Oats
AIC BIC logLik
597.61 613.14 -291.8
Random effects:
Formula: ~1 | Block
(Intercept)
StdDev: 14.506
Formula: ~1 | Variety %in% Block
(Intercept) Residual
StdDev: 11.039 12.75
Fixed effects: yield ~ ordered(nitro)
Value Std.Error DF t-value p-value
(Intercept) 103.972 6.6407 51 15.6569 0.0000
ordered(nitro).L 32.945 3.0052 51 10.9627 0.0000
ordered(nitro).Q -5.167 3.0052 51 -1.7193 0.0916
ordered(nitro).C -0.447 3.0052 51 -0.1488 0.8823
Correlation:
(Intr) or().L or().Q
ordered(nitro).L 0
ordered(nitro).Q 0 0
ordered(nitro).C 0 0 0
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.781556 -0.611689 0.022224 0.622007 1.681382
Number of Observations: 72
Number of Groups:
Block Variety %in% Block
6 18
> fm4Oats <-
+ lme( yield ~ nitro, data = Oats, random = ~ 1 | Block/Variety )
> summary( fm4Oats )
Linear mixed-effects model fit by REML
Data: Oats
AIC BIC logLik
603.04 614.28 -296.52
Random effects:
Formula: ~1 | Block
(Intercept)
StdDev: 14.506
Formula: ~1 | Variety %in% Block
(Intercept) Residual
StdDev: 11.005 12.867
Fixed effects: yield ~ nitro
Value Std.Error DF t-value p-value
(Intercept) 81.872 6.9453 53 11.788 0
nitro 73.667 6.7815 53 10.863 0
Correlation:
(Intr)
nitro -0.293
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.743808 -0.664752 0.017104 0.542988 1.802989
Number of Observations: 72
Number of Groups:
Block Variety %in% Block
6 18
> VarCorr( fm4Oats )
Variance StdDev
Block = pdLogChol(1)
(Intercept) 210.42 14.506
Variety = pdLogChol(1)
(Intercept) 121.10 11.005
Residual 165.56 12.867
> intervals( fm4Oats )
Approximate 95% confidence intervals
Fixed effects:
lower est. upper
(Intercept) 67.942 81.872 95.803
nitro 60.065 73.667 87.269
Random Effects:
Level: Block
lower est. upper
sd((Intercept)) 6.6089 14.506 31.839
Level: Variety
lower est. upper
sd((Intercept)) 6.4081 11.005 18.898
Within-group standard error:
lower est. upper
10.637 12.867 15.565
> plot(augPred(fm4Oats), aspect = 2.5, layout = c(6, 3),
+ between = list(x = c(0, 0, 0.5, 0, 0))) # produces Figure 1.21
> # cleanup
>
> summary(warnings())
No warnings
======
ch02.R
======
> #-*- R -*-
>
> library( nlme )
> options( width = 65, digits = 5 )
> options( contrasts = c(unordered = "contr.helmert",
+ ordered = "contr.poly") )
> pdf( file = 'ch02.pdf' )
> # Chapter 2 Theory and Computational Methods for Linear Mixed-Effects Models
>
> # 2.2 Likelihood Estimation for LME Models
>
> Xmat <- matrix( c(1, 1, 1, 1, 8, 10, 12, 14), ncol = 2 )
> Xmat
[,1] [,2]
[1,] 1 8
[2,] 1 10
[3,] 1 12
[4,] 1 14
> Xqr <- qr( Xmat ) # creates a QR structure
> qr.R( Xqr ) # returns R
[,1] [,2]
[1,] -2 -22.0000
[2,] 0 -4.4721
> qr.Q( Xqr ) # returns Q-truncated
[,1] [,2]
[1,] -0.5 0.67082
[2,] -0.5 0.22361
[3,] -0.5 -0.22361
[4,] -0.5 -0.67082
> qr.Q( Xqr, complete = TRUE ) # returns the full Q
[,1] [,2] [,3] [,4]
[1,] -0.5 0.67082 0.023607 0.54721
[2,] -0.5 0.22361 -0.439345 -0.71202
[3,] -0.5 -0.22361 0.807869 -0.21760
[4,] -0.5 -0.67082 -0.392131 0.38240
> fm1Rail.lme <- lme( travel ~ 1, data = Rail, random = ~ 1 | Rail,
+ control = list( msVerbose = TRUE ) )
0: 61.048859: -1.81959
1: 61.048859: -1.81959
> fm1Rail.lme <- lme( travel ~ 1, data = Rail, random = ~ 1 | Rail,
+ control = list( msVerbose = TRUE, niterEM = 0 ))
0: 67.893737: -0.431523
1: 61.612483: -1.43152
2: 61.138913: -1.98441
3: 61.050114: -1.83866
4: 61.048866: -1.81819
5: 61.048859: -1.81960
6: 61.048859: -1.81959
> fm1Machine <-
+ lme( score ~ Machine, data = Machines, random = ~ 1 | Worker )
> fm2Machine <- update( fm1Machine, random = ~ 1 | Worker/Machine )
> anova( fm1Machine, fm2Machine )
Model df AIC BIC logLik Test L.Ratio p-value
fm1Machine 1 5 300.46 310.12 -145.23
fm2Machine 2 6 231.27 242.86 -109.64 1 vs 2 71.191 <.0001
> OrthoFem <- Orthodont[ Orthodont$Sex == "Female", ]
> fm1OrthF <- lme( distance ~ age, data = OrthoFem,
+ random = ~ 1 | Subject )
> fm2OrthF <- update( fm1OrthF, random = ~ age | Subject )
> orthLRTsim <- simulate.lme( fm1OrthF, m2 = fm2OrthF, nsim = 1000 )
> plot( orthLRTsim, df = c(1, 2) ) # produces Figure 2.3
> machineLRTsim <- simulate.lme(fm1Machine, m2 = fm2Machine, nsim= 1000)
> plot( machineLRTsim, df = c(0, 1), # produces Figure 2.4
+ layout = c(4,1), between = list(x = c(0, 0.5, 0)) )
> stoolLRTsim <-
+ simulate.lme( list(fixed = effort ~ 1, data = ergoStool,
+ random = ~ 1 | Subject),
+ m2 = list(fixed = effort ~ Type),
+ method = "ML", nsim = 1000 )
> plot( stoolLRTsim, df = c(3, 4) ) # Figure 2.5
> data( PBIB, package = 'SASmixed' )
> pbibLRTsim <-
+ simulate.lme(list( fixed = response ~ 1, data = PBIB,
+ random = ~ 1 | Block ),
+ m2 = list(fixed = response ~ Treatment, data = PBIB,
+ random = ~ 1 | Block),
+ method = "ML", nsim = 1000 )
> plot( pbibLRTsim, df = c(14,16,18), weights = FALSE ) # Figure 2.6
> summary( fm2Machine )
Linear mixed-effects model fit by REML
Data: Machines
AIC BIC logLik
231.27 242.86 -109.64
Random effects:
Formula: ~1 | Worker
(Intercept)
StdDev: 4.781
Formula: ~1 | Machine %in% Worker
(Intercept) Residual
StdDev: 3.7295 0.96158
Fixed effects: score ~ Machine
Value Std.Error DF t-value p-value
(Intercept) 59.650 2.14467 36 27.8131 0.0000
Machine1 3.983 1.08849 10 3.6595 0.0044
Machine2 3.311 0.62844 10 5.2688 0.0004
Correlation:
(Intr) Machn1
Machine1 0
Machine2 0 0
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.269587 -0.548466 -0.010706 0.439366 2.540058
Number of Observations: 54
Number of Groups:
Worker Machine %in% Worker
6 18
> fm1PBIB <- lme(response ~ Treatment, data = PBIB, random = ~ 1 | Block)
> anova( fm1PBIB )
numDF denDF F-value p-value
(Intercept) 1 31 1654.21 <.0001
Treatment 14 31 1.53 0.1576
> fm2PBIB <- update( fm1PBIB, method = "ML" )
> fm3PBIB <- update( fm2PBIB, response ~ 1 )
> anova( fm2PBIB, fm3PBIB )
Model df AIC BIC logLik Test L.Ratio p-value
fm2PBIB 1 17 56.571 92.174 -11.285
fm3PBIB 2 3 52.152 58.435 -23.076 1 vs 2 23.581 0.0514
> anova( fm2Machine )
numDF denDF F-value p-value
(Intercept) 1 36 773.57 <.0001
Machine 2 10 20.58 3e-04
> # cleanup
>
> summary(warnings())
No warnings
======
ch03.R
======
> #-*- R -*-
>
> # initialization
>
> library(nlme)
> options(width = 65, digits = 5)
> options(contrasts = c(unordered = "contr.helmert", ordered = "contr.poly"))
> pdf(file = 'ch03.pdf')
> # Chapter 3 Describing the Structure of Grouped Data
>
> # 3.1 The Display Formula and Its Components
>
> formula( Rail )
travel ~ 1 | Rail
> formula( ergoStool )
effort ~ Type | Subject
> formula( Machines )
score ~ Machine | Worker
> formula( Orthodont )
distance ~ age | Subject
> formula( Pixel )
pixel ~ day | Dog/Side
> formula( Oats )
yield ~ nitro | Block
> table( Oxboys$Subject )
10 26 25 9 2 6 7 17 16 15 8 20 1 18 5 23 11 21 3 24 22
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
12 13 14 19 4
9 9 9 9 9
> table( getGroups( Oxboys ) )
10 26 25 9 2 6 7 17 16 15 8 20 1 18 5 23 11 21 3 24 22
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
12 13 14 19 4
9 9 9 9 9
> unique( table( getGroups( Oxboys ) ) ) # a more concise result
[1] 9
> unique( table( getCovariate( Oxboys ), getGroups( Oxboys ) ) )
[1] 1 0
> length( unique( getCovariate( Oxboys ) ) )
[1] 16
> unique( getGroups(Pixel, level = 1) )
[1] 1 2 3 4 5 6 7 8 9 10
Levels: 1 10 2 3 4 5 6 7 8 9
> unique( getGroups(Pixel, level = 2) )
[1] 1/R 2/R 3/R 4/R 5/R 6/R 7/R 8/R 9/R 10/R 1/L 2/L
[13] 3/L 4/L 5/L 6/L 7/L 8/L 9/L 10/L
20 Levels: 1/R < 2/R < 3/R < 4/R < 5/R < 6/R < 7/R < ... < 10/L
> Pixel.groups <- getGroups( Pixel, level = 1:2 )
> class( Pixel.groups )
[1] "data.frame"
> names( Pixel.groups )
[1] "Dog" "Side"
> unique( Pixel.groups[["Side"]] )
[1] R L
Levels: L R
> formula( PBG )
deltaBP ~ dose | Rabbit
> PBG.log <- update( PBG, formula = deltaBP ~ log(dose) | Rabbit )
> formula(PBG.log)
deltaBP ~ log(dose) | Rabbit
<environment: 0x55aa561e7958>
> unique( getCovariate(PBG.log) )
[1] 1.8326 2.5257 3.2189 3.9120 4.6052 5.2983
> unique( getCovariate(PBG) )
[1] 6.25 12.50 25.00 50.00 100.00 200.00
> # 3.2 Constructing groupedData Objects
>
> # The next line is not from the book.
> # It is added to ensure that the file is available
>
> write.table( Oxboys, "oxboys.dat" )
> Oxboys.frm <- read.table( "oxboys.dat", header = TRUE )
> class( Oxboys.frm ) # check the class of the result
[1] "data.frame"
> dim( Oxboys.frm ) # check the dimensions
[1] 234 4
> Oxboys <- groupedData( height ~ age | Subject,
+ data = read.table("oxboys.dat", header = TRUE),
+ labels = list(x = "Centered age", y = "Height"),
+ units = list(y = "(cm)") )
> Oxboys # display the object
Grouped Data: height ~ age | Subject
Subject age height Occasion
1 1 -1.0000 140.50 1
2 1 -0.7479 143.40 2
3 1 -0.4630 144.80 3
4 1 -0.1643 147.10 4
5 1 -0.0027 147.70 5
6 1 0.2466 150.20 6
7 1 0.5562 151.70 7
8 1 0.7781 153.30 8
9 1 0.9945 155.80 9
10 2 -1.0000 136.90 1
11 2 -0.7479 139.10 2
12 2 -0.4630 140.10 3
13 2 -0.1643 142.60 4
14 2 -0.0027 143.20 5
15 2 0.2466 144.00 6
16 2 0.5562 145.80 7
17 2 0.7781 146.80 8
18 2 0.9945 148.30 9
19 3 -1.0000 150.00 1
20 3 -0.7479 152.10 2
21 3 -0.4630 153.90 3
22 3 -0.1643 155.80 4
23 3 -0.0027 156.00 5
24 3 0.2466 156.90 6
25 3 0.5562 157.40 7
26 3 0.7781 159.10 8
27 3 0.9945 160.60 9
28 4 -1.0000 155.70 1
29 4 -0.7479 158.70 2
30 4 -0.4630 160.60 3
31 4 -0.1643 163.30 4
32 4 -0.0027 164.40 5
33 4 0.2466 167.30 6
34 4 0.5562 170.70 7
35 4 0.7781 172.00 8
36 4 0.9945 174.80 9
37 5 -1.0000 145.80 1
38 5 -0.7479 147.30 2
39 5 -0.4493 148.70 3
40 5 -0.1643 149.78 4
41 5 -0.0027 150.22 5
42 5 0.2466 152.50 6
43 5 0.5562 154.80 7
44 5 0.7781 156.40 8
45 5 0.9973 158.70 9
46 6 -1.0000 142.40 1
47 6 -0.7479 143.80 2
48 6 -0.4630 145.20 3
49 6 -0.1643 146.30 4
50 6 -0.0027 147.10 5
51 6 0.2466 148.10 6
52 6 0.5562 148.90 7
53 6 0.7781 149.10 8
54 6 0.9945 151.00 9
55 7 -1.0000 141.30 1
56 7 -0.7479 142.40 2
57 7 -0.4493 144.30 3
58 7 -0.1643 145.20 4
59 7 0.0000 146.10 5
60 7 0.2466 146.80 6
61 7 0.5562 147.90 7
62 7 0.7945 150.50 8
63 7 0.9945 151.80 9
64 8 -1.0000 141.70 1
65 8 -0.7479 143.70 2
66 8 -0.4630 145.10 3
67 8 -0.1643 147.90 4
68 8 -0.0027 148.10 5
69 8 0.2466 149.60 6
70 8 0.5562 150.99 7
71 8 0.7945 154.10 8
72 8 1.0055 154.90 9
73 9 -1.0000 132.70 1
74 9 -0.7479 134.10 2
75 9 -0.4493 135.30 3
76 9 -0.1643 136.60 4
77 9 -0.0027 137.50 5
78 9 0.2466 139.10 6
79 9 0.5562 140.90 7
80 9 0.7945 143.70 8
81 9 0.9945 144.70 9
82 10 -1.0000 126.20 1
83 10 -0.7479 128.20 2
84 10 -0.4630 129.00 3
85 10 -0.1643 129.40 4
86 10 -0.0027 129.59 5
87 10 0.2466 130.60 6
88 10 0.5562 132.50 7
89 10 0.7781 133.40 8
90 10 0.9945 134.20 9
91 11 -1.0000 142.50 1
92 11 -0.7479 143.80 2
93 11 -0.4630 145.60 3
94 11 -0.1643 148.30 4
95 11 -0.0027 149.40 5
96 11 0.2466 151.60 6
97 11 0.5562 154.80 7
98 11 0.7781 156.90 8
99 11 0.9945 159.20 9
100 12 -1.0000 149.90 1
101 12 -0.7479 151.70 2
102 12 -0.4630 153.30 3
103 12 -0.1643 156.10 4
104 12 0.0000 156.70 5
105 12 0.2466 157.80 6
106 12 0.5562 160.70 7
107 12 0.7781 162.70 8
108 12 0.9945 163.80 9
109 13 -1.0000 148.90 1
110 13 -0.7150 149.80 2
111 13 -0.4630 151.70 3
112 13 -0.1643 154.40 4
113 13 -0.0027 155.50 5
114 13 0.2466 156.40 6
115 13 0.5562 161.40 7
116 13 0.7781 163.90 8
117 13 0.9945 164.60 9
118 14 -1.0000 151.60 1
119 14 -0.7479 153.20 2
120 14 -0.4630 155.20 3
121 14 -0.1643 157.30 4
122 14 0.0000 159.10 5
123 14 0.2466 160.90 6
124 14 0.5562 164.40 7
125 14 0.7781 166.90 8
126 14 0.9945 168.40 9
127 15 -1.0000 137.50 1
128 15 -0.7479 139.30 2
129 15 -0.4630 140.90 3
130 15 -0.1643 142.70 4
131 15 -0.0027 144.20 5
132 15 0.2466 145.70 6
133 15 0.5562 147.09 7
134 15 0.7781 150.20 8
135 15 0.9945 152.30 9
136 16 -1.0000 142.80 1
137 16 -0.7479 144.90 2
138 16 -0.4630 145.00 3
139 16 -0.1643 146.70 4
140 16 -0.0027 147.20 5
141 16 0.2466 148.90 6
142 16 0.5562 150.10 7
143 16 0.7781 151.00 8
144 16 0.9945 152.20 9
145 17 -1.0000 134.90 1
146 17 -0.7479 137.40 2
147 17 -0.4630 138.20 3
148 17 -0.1643 140.20 4
149 17 -0.0027 143.60 5
150 17 0.2466 144.20 6
151 17 0.5562 147.90 7
152 17 0.7781 150.30 8
153 17 0.9945 151.80 9
154 18 -1.0000 145.50 1
155 18 -0.7479 146.20 2
156 18 -0.4630 148.20 3
157 18 -0.1643 150.30 4
158 18 -0.0027 152.00 5
159 18 0.2466 152.30 6
160 18 0.5562 154.30 7
161 18 0.7781 156.20 8
162 18 0.9945 156.80 9
163 19 -1.0000 156.90 1
164 19 -0.7479 157.90 2
165 19 -0.4630 160.30 3
166 19 -0.1643 161.90 4
167 19 0.0000 163.80 5
168 19 0.2466 165.50 6
169 19 0.5562 169.90 7
170 19 0.7781 172.40 8
171 19 0.9945 174.40 9
172 20 -1.0000 146.50 1
173 20 -0.7479 148.40 2
174 20 -0.4630 149.30 3
175 20 -0.1643 151.20 4
176 20 -0.0027 152.10 5
177 20 0.2466 152.40 6
178 20 0.5562 153.90 7
179 20 0.7781 154.90 8
180 20 0.9945 155.40 9
181 21 -1.0000 143.90 1
182 21 -0.7479 145.10 2
183 21 -0.4630 147.00 3
184 21 -0.1643 149.20 4
185 21 -0.0027 149.80 5
186 21 0.2466 151.50 6
187 21 0.5562 153.17 7
188 21 0.7781 156.90 8
189 21 0.9945 159.60 9
190 22 -1.0000 147.40 1
191 22 -0.7479 148.80 2
192 22 -0.4630 150.10 3
193 22 -0.1643 152.50 4
194 22 -0.0027 154.70 5
195 22 0.2466 156.00 6
196 22 0.5562 158.40 7
197 22 0.7781 161.50 8
198 22 0.9945 163.30 9
199 23 -1.0000 144.50 1
200 23 -0.7479 146.00 2
201 23 -0.4630 147.40 3
202 23 -0.1643 149.20 4
203 23 -0.0027 150.80 5
204 23 0.2466 152.50 6
205 23 0.5562 155.00 7
206 23 0.7781 156.80 8
207 23 0.9945 158.80 9
208 24 -1.0000 147.80 1
209 24 -0.7479 148.20 2
210 24 -0.4630 150.20 3
211 24 -0.1643 151.00 4
212 24 -0.0027 152.20 5
213 24 0.2466 153.60 6
214 24 0.5562 155.80 7
215 24 0.7781 159.20 8
216 24 0.9945 161.60 9
217 25 -1.0000 135.50 1
218 25 -0.7479 136.60 2
219 25 -0.4630 137.30 3
220 25 -0.1643 138.20 4
221 25 -0.0027 139.00 5
222 25 0.2466 139.50 6
223 25 0.5562 141.00 7
224 25 0.7808 142.70 8
225 25 0.9945 143.90 9
226 26 -1.0000 132.20 1
227 26 -0.7479 134.30 2
228 26 -0.4630 135.10 3
229 26 -0.1643 136.70 4
230 26 -0.0027 138.40 5
231 26 0.2466 138.90 6
232 26 0.5562 141.80 7
233 26 0.7781 142.60 8
234 26 1.0055 143.10 9
> unique( getGroups( Oxboys ) )
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
[21] 21 22 23 24 25 26
26 Levels: 10 < 26 < 25 < 9 < 2 < 6 < 7 < 17 < 16 < 15 < ... < 4
> plot( BodyWeight, outer = ~ Diet, aspect = 3 ) # Figure 3.3
> plot( BodyWeight, outer = TRUE, aspect = 3 )
> plot( Soybean, outer = ~ Year * Variety ) # Figure 6.10
> plot( Soybean, outer = ~ Variety * Year )
> gsummary( BodyWeight, invar = TRUE )
Rat Diet
2 2 1
3 3 1
4 4 1
1 1 1
8 8 1
5 5 1
6 6 1
7 7 1
11 11 2
9 9 2
10 10 2
12 12 2
13 13 3
15 15 3
14 14 3
16 16 3
> plot( PBG, inner = ~ Treatment, scales = list(x = list(log = 2)))
> ergoStool.mat <- asTable( ergoStool )
> ergoStool.mat
T1 T2 T3 T4
8 7 11 8 7
5 8 11 8 7
4 7 11 10 9
9 9 13 10 8
6 9 11 11 10
3 7 14 13 9
7 8 12 12 11
1 12 15 12 10
2 10 14 13 12
> ergoStool.new <- balancedGrouped( effort ~ Type | Subject,
+ data = ergoStool.mat )
> ergoStool.new
Grouped Data: effort ~ Type | Subject
Type Subject effort
1 T1 8 7
2 T2 8 11
3 T3 8 8
4 T4 8 7
5 T1 5 8
6 T2 5 11
7 T3 5 8
8 T4 5 7
9 T1 4 7
10 T2 4 11
11 T3 4 10
12 T4 4 9
13 T1 9 9
14 T2 9 13
15 T3 9 10
16 T4 9 8
17 T1 6 9
18 T2 6 11
19 T3 6 11
20 T4 6 10
21 T1 3 7
22 T2 3 14
23 T3 3 13
24 T4 3 9
25 T1 7 8
26 T2 7 12
27 T3 7 12
28 T4 7 11
29 T1 1 12
30 T2 1 15
31 T3 1 12
32 T4 1 10
33 T1 2 10
34 T2 2 14
35 T3 2 13
36 T4 2 12
> # 3.3 Controlling Trellis Graphics Presentations of Grouped Data
>
> plot(CO2, layout=c(6,2), between=list(x=c(0,0,0.5,0,0)))
> plot( Spruce, layout = c(7, 4, 3),
+ skip = c(rep(FALSE, 27), TRUE, rep(FALSE, 27), TRUE,
+ rep(FALSE, 12), rep(TRUE, 2), rep(FALSE,13)) )
> plot( Spruce, layout = c(9, 3, 3),
+ skip = c(rep(FALSE, 66), TRUE, TRUE, rep(FALSE, 13)) )
> unique( getCovariate(DNase) )
[1] 0.048828 0.195312 0.390625 0.781250 1.562500 3.125000
[7] 6.250000 12.500000
> log( unique(getCovariate(DNase)), 2 )
[1] -4.35614 -2.35614 -1.35614 -0.35614 0.64386 1.64386
[7] 2.64386 3.64386
> plot( DNase, layout=c(6,2), scales = list(x=list(log=2)) )
> plot(Pixel, layout = c(4,5),
+ between = list(x = c(0, 0.5, 0), y = 0.5))
> plot( Pixel, displayLevel = 1 )
> plot( Wafer, display = 1, collapse = 1 )
> plot( Wafer, display = 1, collapse = 1,
+ FUN = function(x) sqrt(var(x)), layout = c(10,1) )
> # 3.4 Summaries
>
> sapply( ergoStool, data.class )
effort Type Subject
"numeric" "factor" "ordered"
> gsummary( Theoph, inv = TRUE )
Subject Wt Dose
6 6 80.0 4.00
7 7 64.6 4.95
8 8 70.5 4.53
11 11 65.0 4.92
3 3 70.5 4.53
2 2 72.4 4.40
4 4 72.7 4.40
9 9 86.4 3.10
12 12 60.5 5.30
10 10 58.2 5.50
1 1 79.6 4.02
5 5 54.6 5.86
> gsummary( Theoph, omit = TRUE, inv = TRUE )
Wt Dose
6 80.0 4.00
7 64.6 4.95
8 70.5 4.53
11 65.0 4.92
3 70.5 4.53
2 72.4 4.40
4 72.7 4.40
9 86.4 3.10
12 60.5 5.30
10 58.2 5.50
1 79.6 4.02
5 54.6 5.86
> is.null(gsummary(Theoph, inv = TRUE, omit = TRUE)) # invariants present
[1] FALSE
> is.null(gsummary(Oxboys, inv = TRUE, omit = TRUE)) # no invariants
[1] TRUE
> gsummary( Theoph )
Subject Wt Dose Time conc
6 6 80.0 4.00 5.8882 3.5255
7 7 64.6 4.95 5.8655 3.9109
8 8 70.5 4.53 5.8900 4.2718
11 11 65.0 4.92 5.8718 4.5109
3 3 70.5 4.53 5.9073 5.0864
2 2 72.4 4.40 5.8691 4.8236
4 4 72.7 4.40 5.9400 4.9400
9 9 86.4 3.10 5.8682 4.8936
12 12 60.5 5.30 5.8764 5.4100
10 10 58.2 5.50 5.9155 5.9309
1 1 79.6 4.02 5.9500 6.4391
5 5 54.6 5.86 5.8936 5.7827
> gsummary( Theoph, FUN = max, omit = TRUE )
Wt Dose Time conc
6 80.0 4.00 23.85 6.44
7 64.6 4.95 24.22 7.09
8 70.5 4.53 24.12 7.56
11 65.0 4.92 24.08 8.00
3 70.5 4.53 24.17 8.20
2 72.4 4.40 24.30 8.33
4 72.7 4.40 24.65 8.60
9 86.4 3.10 24.43 9.03
12 60.5 5.30 24.15 9.75
10 58.2 5.50 23.70 10.21
1 79.6 4.02 24.37 10.50
5 54.6 5.86 24.35 11.40
> Quin.sum <- gsummary( Quinidine, omit = TRUE, FUN = mean )
> dim( Quin.sum )
[1] 136 13
> Quin.sum[1:10, ]
time conc dose interval Age Height Weight Race
109 30.2633 NA NA NA 70 67 58.000 Caucasian
70 0.7500 NA NA NA 68 69 75.000 Caucasian
23 52.0262 NA NA NA 75 72 108.000 Caucasian
92 8.8571 NA NA NA 68 72 65.000 Caucasian
111 18.1638 NA NA NA 68 66 56.000 Latin
5 24.3750 NA NA NA 62 71 66.000 Caucasian
18 196.8438 NA NA NA 87 69 85.375 Caucasian
24 31.2500 NA NA NA 55 69 89.000 Latin
2 12.2000 NA NA NA 58 69 85.000 Latin
88 4.7900 NA NA NA 85 72 77.000 Caucasian
Smoke Ethanol Heart Creatinine glyco
109 no none No/Mild >= 50 0.46000
70 no former No/Mild >= 50 1.15000
23 yes none No/Mild >= 50 0.83875
92 yes former No/Mild >= 50 1.27000
111 yes former No/Mild >= 50 1.23000
5 yes none Severe >= 50 1.39000
18 no none No/Mild < 50 1.26000
24 no former No/Mild >= 50 0.57000
2 no current Moderate >= 50 0.82000
88 no none Moderate >= 50 0.61000
> Quinidine[Quinidine[["Subject"]] == 3, 1:8]
Grouped Data: conc ~ time | Subject
Subject time conc dose interval Age Height Weight
17 3 0.00 NA 201 NA 67 69 69
18 3 8.00 NA 201 NA 67 69 69
19 3 16.00 NA 201 NA 67 69 69
20 3 24.00 NA 201 NA 67 69 69
21 3 32.00 NA 201 NA 67 69 69
22 3 41.25 2.4 NA NA 67 69 69
23 3 104.00 NA 201 8 67 69 69
24 3 113.00 2.3 NA NA 67 69 69
25 3 3865.00 NA 201 6 67 69 62
26 3 3873.00 NA 201 NA 67 69 62
27 3 3881.00 NA 201 NA 67 69 62
28 3 3889.00 NA 201 NA 67 69 62
29 3 3897.00 NA 201 NA 67 69 62
30 3 3900.00 NA NA NA 67 69 62
31 3 3905.00 NA 201 NA 67 69 62
32 3 3909.00 4.7 NA NA 67 69 62
33 3 4073.00 NA 201 8 67 69 62
> Quin.sum1 <- gsummary( Quinidine, omit = TRUE )
> Quin.sum1[1:10, 1:7]
time conc dose interval Age Height Weight
109 30.2633 0.50000 100.00 NaN 70 67 58.000
70 0.7500 0.60000 201.00 8 68 69 75.000
23 52.0262 0.56667 166.00 6 75 72 108.000
92 8.8571 0.70000 83.00 NaN 68 72 65.000
111 18.1638 0.90000 249.00 NaN 68 66 56.000
5 24.3750 0.70000 301.00 NaN 62 71 66.000
18 196.8438 0.93333 201.00 6 87 69 85.375
24 31.2500 1.10000 187.88 NaN 55 69 89.000
2 12.2000 1.20000 166.00 NaN 58 69 85.000
88 4.7900 1.20000 201.00 8 85 72 77.000
> summary( Quin.sum1 )
time conc dose interval
Min. : 0.1 Min. :0.50 Min. : 83 Min. : 5.00
1st Qu.: 19.3 1st Qu.:1.70 1st Qu.:198 1st Qu.: 6.00
Median : 47.2 Median :2.24 Median :201 Median : 6.00
Mean : 251.5 Mean :2.36 Mean :224 Mean : 6.99
3rd Qu.: 171.1 3rd Qu.:2.92 3rd Qu.:249 3rd Qu.: 8.00
Max. :5364.9 Max. :5.77 Max. :498 Max. :12.00
NA's :29
Age Height Weight Race
Min. :42.0 Min. :60.0 Min. : 41.0 Caucasian:91
1st Qu.:61.0 1st Qu.:67.0 1st Qu.: 67.8 Latin :35
Median :66.0 Median :70.0 Median : 79.2 Black :10
Mean :66.9 Mean :69.6 Mean : 79.2
3rd Qu.:73.0 3rd Qu.:72.0 3rd Qu.: 88.2
Max. :92.0 Max. :79.0 Max. :119.0
Smoke Ethanol Heart Creatinine glyco
no :94 none :90 No/Mild :55 < 50 : 36 Min. :0.390
yes:42 current:16 Moderate:40 >= 50:100 1st Qu.:0.885
former :30 Severe :41 Median :1.174
Mean :1.212
3rd Qu.:1.453
Max. :2.995
> summary( Quinidine )
Subject time conc dose
223 : 47 Min. : 0 Min. :0.40 Min. : 83
110 : 41 1st Qu.: 16 1st Qu.:1.60 1st Qu.:166
81 : 40 Median : 60 Median :2.30 Median :201
136 : 32 Mean : 373 Mean :2.45 Mean :225
7 : 31 3rd Qu.: 241 3rd Qu.:3.00 3rd Qu.:249
76 : 28 Max. :8096 Max. :9.40 Max. :603
(Other):1252 NA's :1110 NA's :443
interval Age Height Weight
Min. : 4.00 Min. :42.0 Min. :60.0 Min. : 41.0
1st Qu.: 6.00 1st Qu.:60.0 1st Qu.:67.0 1st Qu.: 69.5
Median : 6.00 Median :66.0 Median :69.0 Median : 78.0
Mean : 7.11 Mean :66.7 Mean :69.2 Mean : 79.7
3rd Qu.: 8.00 3rd Qu.:74.0 3rd Qu.:72.0 3rd Qu.: 89.0
Max. :12.00 Max. :92.0 Max. :79.0 Max. :119.0
NA's :1222
Race Smoke Ethanol Heart
Caucasian:968 no :1024 none :991 No/Mild :598
Latin :384 yes: 447 current:191 Moderate:375
Black :119 former :289 Severe :498
Creatinine glyco
< 50 : 418 Min. :0.39
>= 50:1053 1st Qu.:0.93
Median :1.23
Mean :1.28
3rd Qu.:1.54
Max. :3.16
> sum( ifelse(is.na(Quinidine[["conc"]]), 0, 1) )
[1] 361
> sum( !is.na(Quinidine[["conc"]]) )
[1] 361
> sum( !is.na(Quinidine[["dose"]]) )
[1] 1028
> gapply( Quinidine, "conc", function(x) sum(!is.na(x)) )
109 70 23 92 111 5 18 24 2 88 91 117 120 13 89 27
1 1 3 1 1 2 3 1 1 1 1 3 2 1 3 1
53 122 129 132 16 106 15 22 57 77 115 121 123 11 48 126
1 1 2 3 1 1 1 1 3 1 4 1 1 2 2 2
223 19 38 42 52 56 63 83 104 118 137 17 29 34 46 73
6 1 1 2 1 1 4 1 2 2 1 1 1 1 3 2
87 103 138 45 44 97 36 37 72 100 8 71 6 14 26 75
2 1 2 3 7 2 2 3 1 3 1 5 1 3 1 3
20 96 99 134 12 49 67 85 112 127 55 68 124 1 35 47
2 3 2 1 1 3 3 1 3 3 6 3 1 2 2 5
79 95 114 135 105 116 62 65 107 130 66 139 33 80 125 110
3 3 2 2 1 3 4 7 4 3 1 3 3 2 1 11
128 136 21 43 90 102 40 84 98 30 82 93 108 119 32 133
2 11 2 1 1 2 2 6 2 1 3 4 1 3 1 2
7 9 76 94 58 113 50 39 78 25 61 3 64 60 59 10
6 2 6 5 1 2 3 2 10 2 2 3 4 4 3 6
69 4 81 54 41 74 28 51
2 6 11 4 3 3 4 6
> table( gapply(Quinidine, "conc", function(x) sum(!is.na(x))) )
1 2 3 4 5 6 7 10 11
46 33 31 9 3 8 2 1 3
> changeRecords <- gapply( Quinidine, FUN = function(frm)
+ any(is.na(frm[["conc"]]) & is.na(frm[["dose"]])) )
> changeRecords
109 70 23 92 111 5 18 24 2 88
FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
91 117 120 13 89 27 53 122 129 132
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
16 106 15 22 57 77 115 121 123 11
FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
48 126 223 19 38 42 52 56 63 83
TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
104 118 137 17 29 34 46 73 87 103
FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
138 45 44 97 36 37 72 100 8 71
FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE TRUE
6 14 26 75 20 96 99 134 12 49
FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE
67 85 112 127 55 68 124 1 35 47
FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE
79 95 114 135 105 116 62 65 107 130
TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE
66 139 33 80 125 110 128 136 21 43
FALSE TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE FALSE
90 102 40 84 98 30 82 93 108 119
FALSE FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE TRUE
32 133 7 9 76 94 58 113 50 39
FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE FALSE
78 25 61 3 64 60 59 10 69 4
FALSE FALSE TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE
81 54 41 74 28 51
TRUE TRUE TRUE FALSE TRUE FALSE
> sort( as.numeric( names(changeRecords)[changeRecords] ) )
[1] 3 4 7 10 14 18 28 33 37 40 41 44 45 46 47
[16] 48 50 54 55 61 62 63 64 65 71 75 76 77 79 80
[31] 81 82 84 94 95 96 97 98 110 112 114 118 119 127 132
[46] 133 135 136 139 223
> Quinidine[29:31,]
Grouped Data: conc ~ time | Subject
Subject time conc dose interval Age Height Weight Race
29 3 3897 NA 201 NA 67 69 62 Caucasian
30 3 3900 NA NA NA 67 69 62 Caucasian
31 3 3905 NA 201 NA 67 69 62 Caucasian
Smoke Ethanol Heart Creatinine glyco
29 yes former Moderate < 50 1.71
30 yes former Moderate < 50 1.71
31 yes former Moderate < 50 1.71
> Quinidine[Quinidine[["Subject"]] == 4, ]
Grouped Data: conc ~ time | Subject
Subject time conc dose interval Age Height Weight Race
45 4 0.00 NA 332 NA 88 66 103 Black
46 4 7.00 NA 332 NA 88 66 103 Black
47 4 13.00 NA 332 NA 88 66 103 Black
48 4 19.00 NA 332 NA 88 66 103 Black
49 4 21.50 3.1 NA NA 88 66 103 Black
50 4 85.00 NA 249 6 88 66 103 Black
51 4 91.00 5.8 NA NA 88 66 103 Black
52 4 91.08 NA 249 NA 88 66 103 Black
53 4 97.00 NA 249 NA 88 66 103 Black
54 4 103.00 NA 249 NA 88 66 103 Black
55 4 105.00 NA NA NA 88 66 92 Black
56 4 109.00 NA 249 NA 88 66 92 Black
57 4 115.00 NA 249 NA 88 66 92 Black
58 4 145.00 NA 166 NA 88 66 92 Black
59 4 151.00 NA 166 NA 88 66 92 Black
60 4 156.00 3.1 NA NA 88 66 92 Black
61 4 157.00 NA 166 NA 88 66 92 Black
62 4 163.00 NA 166 NA 88 66 92 Black
63 4 169.00 NA 166 NA 88 66 92 Black
64 4 174.75 NA 201 NA 88 66 92 Black
65 4 177.00 NA NA NA 88 66 92 Black
66 4 181.50 3.1 NA NA 88 66 92 Black
67 4 245.00 NA 201 8 88 66 92 Black
68 4 249.00 NA NA NA 88 66 86 Black
69 4 252.50 3.2 NA NA 88 66 86 Black
70 4 317.00 NA 201 8 88 66 86 Black
71 4 326.00 1.9 NA NA 88 66 86 Black
Smoke Ethanol Heart Creatinine glyco
45 yes none Severe >= 50 1.48
46 yes none Severe >= 50 1.48
47 yes none Severe >= 50 1.48
48 yes none Severe >= 50 1.48
49 yes none Severe >= 50 1.48
50 yes none Severe >= 50 1.61
51 yes none Severe >= 50 1.61
52 yes none Severe >= 50 1.61
53 yes none Severe >= 50 1.61
54 yes none Severe >= 50 1.61
55 yes none Severe >= 50 1.61
56 yes none Severe >= 50 1.61
57 yes none Severe >= 50 1.61
58 yes none Severe >= 50 1.88
59 yes none Severe >= 50 1.88
60 yes none Severe >= 50 1.88
61 yes none Severe >= 50 1.88
62 yes none Severe >= 50 1.88
63 yes none Severe >= 50 1.88
64 yes none Severe >= 50 1.88
65 yes none Severe >= 50 1.68
66 yes none Severe >= 50 1.68
67 yes none Severe >= 50 1.87
68 yes none Severe >= 50 1.87
69 yes none Severe >= 50 1.87
70 yes none Severe >= 50 1.83
71 yes none Severe >= 50 1.83
> # cleanup
>
> summary(warnings())
No warnings
======
ch04.R
======
> #-*- R -*-
>
> # initialization
>
> library(nlme)
> library(lattice)
> options(width = 65,
+ ## reduce platform dependence in printed output when testing
+ digits = if(nzchar(Sys.getenv("R_TESTS"))) 3 else 5)
> options(contrasts = c(unordered = "contr.helmert", ordered = "contr.poly"))
> pdf(file = 'ch04.pdf')
> # Chapter 4 Fitting Linear Mixed-Effects Models
>
> # 4.1 Fitting Linear Models in S with lm and lmList
>
> fm1Orth.lm <- lm(distance ~ age, Orthodont)
> fm1Orth.lm
Call:
lm(formula = distance ~ age, data = Orthodont)
Coefficients:
(Intercept) age
16.76 0.66
> par(mfrow=c(2,2))
> plot(fm1Orth.lm) # Figure 4.1
> fm2Orth.lm <- update(fm1Orth.lm, formula = distance ~ Sex*age)
> summary(fm2Orth.lm)
Call:
lm(formula = distance ~ Sex + age + Sex:age, data = Orthodont)
Residuals:
Min 1Q Median 3Q Max
-5.616 -1.322 -0.168 1.330 5.247
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.8567 1.1094 15.19 < 2e-16 ***
Sex1 0.5161 1.1094 0.47 0.64
age 0.6320 0.0988 6.39 4.7e-09 ***
Sex1:age -0.1524 0.0988 -1.54 0.13
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.26 on 104 degrees of freedom
Multiple R-squared: 0.423, Adjusted R-squared: 0.406
F-statistic: 25.4 on 3 and 104 DF, p-value: 2.11e-12
> fm3Orth.lm <- update(fm2Orth.lm, formula = . ~ . - Sex)
> summary(fm3Orth.lm)
Call:
lm(formula = distance ~ age + Sex:age, data = Orthodont)
Residuals:
Min 1Q Median 3Q Max
-5.742 -1.242 -0.189 1.268 5.267
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.7611 1.0861 15.43 < 2e-16 ***
age 0.6403 0.0968 6.61 1.6e-09 ***
age:Sex1 -0.1074 0.0196 -5.47 3.0e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.25 on 105 degrees of freedom
Multiple R-squared: 0.422, Adjusted R-squared: 0.411
F-statistic: 38.3 on 2 and 105 DF, p-value: 3.31e-13
> bwplot(getGroups(Orthodont)~resid(fm2Orth.lm)) # Figure 4.2
> fm1Orth.lis <- lmList(distance ~ age | Subject, Orthodont)
> getGroupsFormula(Orthodont)
~Subject
> fm1Orth.lis <- lmList(distance ~ age, Orthodont)
> formula(Orthodont)
distance ~ age | Subject
> fm1Orth.lis <- lmList(Orthodont)
> fm1Orth.lis
Call:
Model: distance ~ age | Subject
Data: Orthodont
Coefficients:
(Intercept) age
M16 17.0 0.550
M05 13.7 0.850
M02 14.9 0.775
M11 20.1 0.325
M07 15.0 0.800
M08 19.8 0.375
M03 16.0 0.750
M12 13.2 1.000
M13 2.8 1.950
M14 19.1 0.525
M09 14.4 0.975
M15 13.5 1.125
M06 19.0 0.675
M04 24.7 0.175
M01 17.3 0.950
M10 21.2 0.750
F10 13.5 0.450
F09 18.1 0.275
F06 17.0 0.375
F01 17.2 0.375
F05 19.6 0.275
F07 16.9 0.550
F02 14.2 0.800
F08 21.4 0.175
F03 14.4 0.850
F04 19.7 0.475
F11 19.0 0.675
Degrees of freedom: 108 total; 54 residual
Residual standard error: 1.31
> summary(fm1Orth.lis)
Call:
Model: distance ~ age | Subject
Data: Orthodont
Coefficients:
(Intercept)
Estimate Std. Error t value Pr(>|t|)
M16 17.0 3.29 5.155 3.70e-06
M05 13.7 3.29 4.151 1.18e-04
M02 14.9 3.29 4.516 3.46e-05
M11 20.1 3.29 6.098 1.19e-07
M07 15.0 3.29 4.547 3.12e-05
M08 19.8 3.29 6.006 1.67e-07
M03 16.0 3.29 4.866 1.03e-05
M12 13.2 3.29 4.030 1.76e-04
M13 2.8 3.29 0.852 3.98e-01
M14 19.1 3.29 5.809 3.45e-07
M09 14.4 3.29 4.379 5.51e-05
M15 13.5 3.29 4.106 1.37e-04
M06 19.0 3.29 5.763 4.08e-07
M04 24.7 3.29 7.512 6.08e-10
M01 17.3 3.29 5.261 2.52e-06
M10 21.2 3.29 6.463 3.07e-08
F10 13.5 3.29 4.121 1.31e-04
F09 18.1 3.29 5.505 1.05e-06
F06 17.0 3.29 5.170 3.50e-06
F01 17.2 3.29 5.246 2.67e-06
F05 19.6 3.29 5.961 1.97e-07
F07 16.9 3.29 5.155 3.70e-06
F02 14.2 3.29 4.319 6.76e-05
F08 21.4 3.29 6.523 2.44e-08
F03 14.4 3.29 4.379 5.51e-05
F04 19.7 3.29 5.976 1.86e-07
F11 19.0 3.29 5.763 4.08e-07
age
Estimate Std. Error t value Pr(>|t|)
M16 0.550 0.293 1.878 6.58e-02
M05 0.850 0.293 2.902 5.36e-03
M02 0.775 0.293 2.646 1.07e-02
M11 0.325 0.293 1.109 2.72e-01
M07 0.800 0.293 2.731 8.51e-03
M08 0.375 0.293 1.280 2.06e-01
M03 0.750 0.293 2.560 1.33e-02
M12 1.000 0.293 3.414 1.22e-03
M13 1.950 0.293 6.657 1.49e-08
M14 0.525 0.293 1.792 7.87e-02
M09 0.975 0.293 3.328 1.58e-03
M15 1.125 0.293 3.840 3.25e-04
M06 0.675 0.293 2.304 2.51e-02
M04 0.175 0.293 0.597 5.53e-01
M01 0.950 0.293 3.243 2.03e-03
M10 0.750 0.293 2.560 1.33e-02
F10 0.450 0.293 1.536 1.30e-01
F09 0.275 0.293 0.939 3.52e-01
F06 0.375 0.293 1.280 2.06e-01
F01 0.375 0.293 1.280 2.06e-01
F05 0.275 0.293 0.939 3.52e-01
F07 0.550 0.293 1.878 6.58e-02
F02 0.800 0.293 2.731 8.51e-03
F08 0.175 0.293 0.597 5.53e-01
F03 0.850 0.293 2.902 5.36e-03
F04 0.475 0.293 1.622 1.11e-01
F11 0.675 0.293 2.304 2.51e-02
Residual standard error: 1.31 on 54 degrees of freedom
> pairs(fm1Orth.lis, id = 0.01, adj = -0.5) # Figure 4.3
> fm2Orth.lis <- update(fm1Orth.lis, distance ~ I(age-11))
> intervals(fm2Orth.lis)
, , (Intercept)
lower est. upper
M16 21.7 23.0 24.3
M05 21.7 23.0 24.3
M02 22.1 23.4 24.7
M11 22.3 23.6 24.9
M07 22.4 23.8 25.1
M08 22.6 23.9 25.2
M03 22.9 24.2 25.6
M12 22.9 24.2 25.6
M13 22.9 24.2 25.6
M14 23.6 24.9 26.2
M09 23.8 25.1 26.4
M15 24.6 25.9 27.2
M06 25.1 26.4 27.7
M04 25.3 26.6 27.9
M01 26.4 27.8 29.1
M10 28.2 29.5 30.8
F10 17.2 18.5 19.8
F09 19.8 21.1 22.4
F06 19.8 21.1 22.4
F01 20.1 21.4 22.7
F05 21.3 22.6 23.9
F07 21.7 23.0 24.3
F02 21.7 23.0 24.3
F08 22.1 23.4 24.7
F03 22.4 23.8 25.1
F04 23.6 24.9 26.2
F11 25.1 26.4 27.7
, , I(age - 11)
lower est. upper
M16 -0.0373 0.550 1.137
M05 0.2627 0.850 1.437
M02 0.1877 0.775 1.362
M11 -0.2623 0.325 0.912
M07 0.2127 0.800 1.387
M08 -0.2123 0.375 0.962
M03 0.1627 0.750 1.337
M12 0.4127 1.000 1.587
M13 1.3627 1.950 2.537
M14 -0.0623 0.525 1.112
M09 0.3877 0.975 1.562
M15 0.5377 1.125 1.712
M06 0.0877 0.675 1.262
M04 -0.4123 0.175 0.762
M01 0.3627 0.950 1.537
M10 0.1627 0.750 1.337
F10 -0.1373 0.450 1.037
F09 -0.3123 0.275 0.862
F06 -0.2123 0.375 0.962
F01 -0.2123 0.375 0.962
F05 -0.3123 0.275 0.862
F07 -0.0373 0.550 1.137
F02 0.2127 0.800 1.387
F08 -0.4123 0.175 0.762
F03 0.2627 0.850 1.437
F04 -0.1123 0.475 1.062
F11 0.0877 0.675 1.262
> plot(intervals(fm2Orth.lis)) # Figure 4.5
> IGF
Grouped Data: conc ~ age | Lot
Lot age conc
1 1 7 4.90
2 1 7 5.68
3 1 8 5.32
4 1 8 5.50
5 1 13 4.94
6 1 13 5.19
7 1 14 5.18
8 1 14 5.67
9 1 15 5.02
10 1 15 5.88
11 1 22 5.12
12 1 23 5.24
13 1 24 5.88
14 1 27 5.40
15 1 28 5.59
16 1 28 5.77
17 1 30 5.57
18 1 34 5.86
19 1 34 5.87
20 1 35 4.65
21 1 35 5.34
22 1 36 4.93
23 1 36 5.33
24 1 36 4.99
25 1 41 3.38
26 1 42 5.44
27 1 42 5.24
28 1 43 5.39
29 2 3 5.34
30 2 3 5.27
31 2 3 5.48
32 2 6 5.15
33 2 11 4.23
34 2 11 5.77
35 2 11 5.06
36 2 12 5.33
37 2 12 5.78
38 2 13 5.01
39 2 13 4.85
40 2 13 4.94
41 2 18 5.14
42 2 24 5.43
43 2 24 5.66
44 2 25 5.62
45 2 25 5.53
46 2 26 6.20
47 2 27 5.30
48 2 27 4.09
49 2 32 5.78
50 2 32 5.66
51 2 34 5.07
52 2 38 5.45
53 2 40 4.76
54 2 42 4.81
55 2 45 4.92
56 2 46 4.32
57 2 47 3.30
58 3 1 5.88
59 3 2 5.91
60 3 5 0.86
61 3 6 5.40
62 3 7 4.94
63 3 8 5.42
64 3 13 5.40
65 3 15 5.68
66 3 15 5.71
67 3 21 9.55
68 3 21 5.94
69 3 21 6.17
70 3 22 5.34
71 3 22 8.14
72 3 27 5.51
73 3 28 5.31
74 3 28 4.81
75 3 28 5.26
76 3 29 4.72
77 3 30 5.08
78 3 30 3.99
79 3 33 4.87
80 3 34 4.92
81 3 34 6.13
82 3 35 6.30
83 3 36 5.97
84 3 37 5.98
85 3 41 6.68
86 3 42 5.33
87 3 43 6.08
88 3 44 4.76
89 3 47 5.31
90 3 47 6.66
91 3 48 5.52
92 3 49 5.48
93 3 50 5.10
94 4 5 5.12
95 4 5 5.08
96 4 5 4.63
97 4 5 5.38
98 4 7 5.78
99 4 9 9.34
100 4 11 5.58
101 4 11 5.19
102 4 12 5.25
103 4 12 5.44
104 4 14 5.31
105 4 14 4.71
106 4 14 5.67
107 4 14 4.65
108 4 14 5.05
109 4 15 4.23
110 4 19 5.02
111 4 19 4.98
112 4 20 5.08
113 4 20 4.84
114 4 22 4.84
115 4 22 5.53
116 4 25 5.85
117 4 25 5.32
118 4 26 5.47
119 5 1 5.49
120 5 2 5.43
121 5 6 5.02
122 5 6 5.29
123 5 7 6.25
124 5 9 4.63
125 5 10 5.18
126 5 15 5.17
127 5 15 4.98
128 5 15 5.38
129 5 15 3.76
130 5 17 5.63
131 5 21 6.12
132 5 22 4.00
133 5 23 6.53
134 5 24 4.67
135 5 24 5.55
136 5 24 5.62
137 5 29 4.58
138 5 30 5.41
139 5 35 4.84
140 5 37 4.83
141 5 37 5.36
142 5 37 4.81
143 5 37 5.35
144 5 42 5.46
145 5 43 5.09
146 5 44 4.78
147 5 44 4.44
148 5 45 4.67
149 5 48 4.98
150 6 2 4.56
151 6 3 5.83
152 6 3 5.27
153 6 4 4.90
154 7 1 4.94
155 7 2 4.78
156 7 3 5.42
157 7 4 5.42
158 7 5 5.38
159 7 7 5.55
160 7 10 5.81
161 7 10 5.62
162 7 11 6.08
163 7 15 4.80
164 7 16 5.32
165 7 17 4.95
166 7 17 5.44
167 7 18 5.48
168 7 21 5.26
169 7 22 5.21
170 7 23 4.65
171 7 24 4.62
172 7 24 5.15
173 7 26 4.71
174 7 27 5.02
175 7 29 5.38
176 7 31 5.34
177 7 31 5.10
178 7 32 5.69
179 7 36 5.00
180 7 37 5.02
181 7 38 9.74
182 7 38 9.60
183 7 39 5.58
184 7 42 4.94
185 7 43 4.66
186 7 43 5.23
187 7 45 5.62
188 7 45 5.53
189 7 45 5.45
190 7 45 4.63
191 7 47 5.01
192 7 50 5.43
193 8 1 6.17
194 8 1 5.57
195 8 2 4.82
196 8 3 5.84
197 8 6 5.55
198 8 9 5.17
199 8 9 6.50
200 8 9 5.36
201 9 4 5.47
202 9 4 5.57
203 9 5 5.36
204 9 7 4.93
205 9 8 5.49
206 9 11 3.25
207 9 13 5.53
208 9 13 4.91
209 9 13 5.74
210 9 14 4.95
211 9 15 5.07
212 9 19 5.54
213 9 20 5.29
214 9 21 4.59
215 9 25 5.66
216 9 26 4.69
217 9 26 5.18
218 9 27 5.19
219 9 27 5.35
220 9 29 5.28
221 9 29 5.50
222 9 29 5.00
223 9 30 5.47
224 9 33 5.55
225 9 34 5.75
226 9 35 5.41
227 9 35 5.65
228 9 35 5.25
229 9 36 5.81
230 9 40 4.71
231 9 41 4.95
232 10 4 6.00
233 10 5 5.74
234 10 6 5.68
235 10 6 5.83
236 10 11 5.30
237 10 13 5.63
> plot(IGF) # Figure 4.6
> fm1IGF.lis <- lmList(IGF)
> coef(fm1IGF.lis)
(Intercept) age
9 5.10 0.00573
6 4.63 0.17000
1 5.49 -0.00779
10 6.05 -0.04733
2 5.48 -0.01443
8 5.59 0.00606
5 5.37 -0.00951
4 5.58 -0.01666
3 5.28 0.01008
7 5.21 0.00931
> plot(intervals(fm1IGF.lis)) # Figure 4.7
> fm1IGF.lm <- lm(conc ~ age, data = IGF)
> summary(fm1IGF.lm)
Call:
lm(formula = conc ~ age, data = IGF)
Residuals:
Min 1Q Median 3Q Max
-4.488 -0.374 -0.009 0.258 4.414
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.351059 0.103734 51.58 <2e-16 ***
age -0.000669 0.003943 -0.17 0.87
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.833 on 235 degrees of freedom
Multiple R-squared: 0.000123, Adjusted R-squared: -0.00413
F-statistic: 0.0288 on 1 and 235 DF, p-value: 0.865
> # 4.2 Fitting Linear Mixed-Effects Models with lme
>
> fm1Orth.lme <- lme(distance ~ I(age-11), data = Orthodont,
+ random = ~ I(age-11) | Subject)
> fm1Orth.lme <- lme(distance ~ I(age-11), data = Orthodont)
> fm1Orth.lme <- lme(fm2Orth.lis)
> fm1Orth.lme
Linear mixed-effects model fit by REML
Data: Orthodont
Log-restricted-likelihood: -221
Fixed: distance ~ I(age - 11)
(Intercept) I(age - 11)
24.02 0.66
Random effects:
Formula: ~I(age - 11) | Subject
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 2.134 (Intr)
I(age - 11) 0.226 0.503
Residual 1.310
Number of Observations: 108
Number of Groups: 27
> fm2Orth.lme <- update(fm1Orth.lme, distance~Sex*I(age-11))
> summary(fm2Orth.lme)
Linear mixed-effects model fit by REML
Data: Orthodont
AIC BIC logLik
451 473 -218
Random effects:
Formula: ~I(age - 11) | Subject
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 1.83 (Intr)
I(age - 11) 0.18 0.206
Residual 1.31
Fixed effects: distance ~ Sex + I(age - 11) + Sex:I(age - 11)
Value Std.Error DF t-value p-value
(Intercept) 23.81 0.381 79 62.5 0.0000
Sex1 -1.16 0.381 25 -3.0 0.0054
I(age - 11) 0.63 0.067 79 9.4 0.0000
Sex1:I(age - 11) -0.15 0.067 79 -2.3 0.0264
Correlation:
(Intr) Sex1 I(-11)
Sex1 0.185
I(age - 11) 0.102 0.019
Sex1:I(age - 11) 0.019 0.102 0.185
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-3.1681 -0.3859 0.0071 0.4452 3.8495
Number of Observations: 108
Number of Groups: 27
> fitted(fm2Orth.lme, level = 0:1)
fixed Subject
1 22.6 24.8
2 24.2 26.6
3 25.8 28.3
4 27.3 30.0
5 22.6 21.3
6 24.2 22.8
7 25.8 24.3
8 27.3 25.8
9 22.6 22.0
10 24.2 23.6
11 25.8 25.1
12 27.3 26.6
13 22.6 24.5
14 24.2 25.8
15 25.8 27.0
16 27.3 28.3
17 22.6 20.9
18 24.2 22.5
19 25.8 24.0
20 27.3 25.6
21 22.6 23.9
22 24.2 25.4
23 25.8 27.0
24 27.3 28.5
25 22.6 21.6
26 24.2 23.1
27 25.8 24.7
28 27.3 26.2
29 22.6 22.0
30 24.2 23.3
31 25.8 24.6
32 27.3 26.0
33 22.6 22.6
34 24.2 24.3
35 25.8 26.0
36 27.3 27.6
37 22.6 26.5
38 24.2 28.1
39 25.8 29.8
40 27.3 31.5
41 22.6 21.8
42 24.2 23.1
43 25.8 24.4
44 27.3 25.7
45 22.6 21.8
46 24.2 23.5
47 25.8 25.2
48 27.3 26.8
49 22.6 21.2
50 24.2 23.3
51 25.8 25.5
52 27.3 27.7
53 22.6 22.7
54 24.2 24.2
55 25.8 25.6
56 27.3 27.0
57 22.6 23.1
58 24.2 24.9
59 25.8 26.7
60 27.3 28.5
61 22.6 21.1
62 24.2 22.5
63 25.8 23.9
64 27.3 25.3
65 21.2 20.2
66 22.2 21.1
67 23.1 21.9
68 24.1 22.8
69 21.2 21.3
70 22.2 22.4
71 23.1 23.6
72 24.1 24.7
73 21.2 21.9
74 22.2 23.1
75 23.1 24.2
76 24.1 25.4
77 21.2 23.1
78 22.2 24.1
79 23.1 25.1
80 24.1 26.1
81 21.2 21.3
82 22.2 22.2
83 23.1 23.0
84 24.1 23.9
85 21.2 20.0
86 22.2 20.9
87 23.1 21.7
88 24.1 22.6
89 21.2 21.5
90 22.2 22.5
91 23.1 23.5
92 24.1 24.5
93 21.2 22.0
94 22.2 22.9
95 23.1 23.7
96 24.1 24.5
97 21.2 20.1
98 22.2 20.9
99 23.1 21.7
100 24.1 22.5
101 21.2 17.7
102 22.2 18.6
103 23.1 19.4
104 24.1 20.2
105 21.2 24.2
106 22.2 25.4
107 23.1 26.5
108 24.1 27.7
> resid(fm2Orth.lme, level = 1)
M01 M01 M01 M01 M02 M02 M02
1.15428 -1.57649 0.69275 0.96198 0.22522 -0.29641 -1.31803
M02 M03 M03 M03 M03 M04 M04
0.66034 0.96689 -1.06449 -1.09588 0.87274 1.03549 1.74867
M04 M04 M05 M05 M05 M05 M06
-0.53814 -1.32495 -0.90249 1.04571 -1.50610 0.44210 0.61473
M06 M06 M06 M07 M07 M07 M07
0.06728 0.01983 -0.02762 0.42649 -1.11840 -0.16330 0.29181
M08 M08 M08 M08 M09 M09 M09
2.00813 -1.81291 -0.13395 -0.45500 0.39248 -3.78229 5.04295
M09 M10 M10 M10 M10 M11 M11
-1.63182 1.02728 -0.14284 1.18705 0.01693 1.18276 -0.10495
M11 M11 M12 M12 M12 M12 M13
-0.89267 -0.68038 -0.34919 -0.01420 -1.17920 1.15579 -4.15031
M13 M13 M13 M14 M14 M14 M14
1.17692 0.50416 1.83139 -0.22716 1.34520 -0.08244 -1.01008
M15 M15 M15 M15 M16 M16 M16
-0.13140 -0.40616 -0.68091 1.54433 0.87681 -1.01465 -0.40610
M16 F01 F01 F01 F01 F02 F02
-0.29756 0.79027 -1.07931 -0.44889 0.18152 -0.27124 -0.91092
F02 F02 F03 F03 F03 F03 F04
0.44940 0.80973 -1.36869 0.94509 0.25887 0.57265 0.40409
F04 F04 F04 F05 F05 F05 F05
0.38858 -0.12694 0.35754 0.15965 0.81049 -0.53868 -0.38784
F06 F06 F06 F06 F07 F07 F07
0.00168 0.13870 -0.72427 -0.08725 0.04484 0.03879 -0.46727
F07 F08 F08 F08 F08 F09 F09
0.52667 0.95185 0.13632 -0.17921 -0.49475 -0.07189 0.11859
F09 F09 F10 F10 F10 F10 F11
0.30906 -1.00047 -1.22334 0.44296 -0.39073 -0.72443 0.28277
F11 F11 F11
-0.37929 1.45866 0.29661
attr(,"label")
[1] "Residuals (mm)"
> resid(fm2Orth.lme, level = 1, type = "pearson")
M01 M01 M01 M01 M02 M02 M02
0.88111 -1.20339 0.52880 0.73431 0.17192 -0.22626 -1.00610
M02 M03 M03 M03 M03 M04 M04
0.50406 0.73806 -0.81257 -0.83652 0.66619 0.79042 1.33482
M04 M04 M05 M05 M05 M05 M06
-0.41078 -1.01139 -0.68890 0.79822 -1.14966 0.33747 0.46925
M06 M06 M06 M07 M07 M07 M07
0.05136 0.01514 -0.02108 0.32556 -0.85372 -0.12465 0.22275
M08 M08 M08 M08 M09 M09 M09
1.53288 -1.38386 -0.10225 -0.34732 0.29959 -2.88715 3.84946
M09 M10 M10 M10 M10 M11 M11
-1.24562 0.78416 -0.10903 0.90612 0.01293 0.90284 -0.08012
M11 M11 M12 M12 M12 M12 M13
-0.68140 -0.51936 -0.26655 -0.01084 -0.90013 0.88226 -3.16808
M13 M13 M13 M14 M14 M14 M14
0.89839 0.38484 1.39796 -0.17340 1.02684 -0.06293 -0.77103
M15 M15 M15 M15 M16 M16 M16
-0.10030 -0.31003 -0.51977 1.17884 0.66930 -0.77452 -0.30999
M16 F01 F01 F01 F01 F02 F02
-0.22714 0.60324 -0.82388 -0.34266 0.13856 -0.20705 -0.69534
F02 F02 F03 F03 F03 F03 F04
0.34305 0.61809 -1.04477 0.72142 0.19761 0.43712 0.30846
F04 F04 F04 F05 F05 F05 F05
0.29661 -0.09690 0.27293 0.12187 0.61867 -0.41119 -0.29605
F06 F06 F06 F06 F07 F07 F07
0.00128 0.10588 -0.55286 -0.06660 0.03423 0.02961 -0.35668
F07 F08 F08 F08 F08 F09 F09
0.40203 0.72658 0.10406 -0.13680 -0.37766 -0.05488 0.09052
F09 F09 F10 F10 F10 F10 F11
0.23592 -0.76369 -0.93382 0.33813 -0.29826 -0.55298 0.21585
F11 F11 F11
-0.28952 1.11345 0.22641
attr(,"label")
[1] "Standardized residuals"
> newOrth <- data.frame(Subject = rep(c("M11","F03"), c(3, 3)),
+ Sex = rep(c("Male", "Female"), c(3, 3)),
+ age = rep(16:18, 2))
> predict(fm2Orth.lme, newdata = newOrth)
M11 M11 M11 F03 F03 F03
27.0 27.6 28.3 26.6 27.2 27.8
attr(,"label")
[1] "Predicted values (mm)"
> predict(fm2Orth.lme, newdata = newOrth, level = 0:1)
Subject predict.fixed predict.Subject
1 M11 28.9 27.0
2 M11 29.7 27.6
3 M11 30.5 28.3
4 F03 25.0 26.6
5 F03 25.5 27.2
6 F03 26.0 27.8
> fm2Orth.lmeM <- update(fm2Orth.lme, method = "ML")
> summary(fm2Orth.lmeM)
Linear mixed-effects model fit by maximum likelihood
Data: Orthodont
AIC BIC logLik
444 465 -214
Random effects:
Formula: ~I(age - 11) | Subject
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 1.752 (Intr)
I(age - 11) 0.154 0.234
Residual 1.310
Fixed effects: distance ~ Sex + I(age - 11) + Sex:I(age - 11)
Value Std.Error DF t-value p-value
(Intercept) 23.81 0.373 79 63.8 0.0000
Sex1 -1.16 0.373 25 -3.1 0.0046
I(age - 11) 0.63 0.066 79 9.6 0.0000
Sex1:I(age - 11) -0.15 0.066 79 -2.3 0.0237
Correlation:
(Intr) Sex1 I(-11)
Sex1 0.185
I(age - 11) 0.102 0.019
Sex1:I(age - 11) 0.019 0.102 0.185
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-3.3360 -0.4154 0.0104 0.4917 3.8582
Number of Observations: 108
Number of Groups: 27
> compOrth <-
+ compareFits(coef(fm2Orth.lis), coef(fm1Orth.lme))
> compOrth
, , (Intercept)
coef(fm2Orth.lis) coef(fm1Orth.lme)
M16 23.0 23.1
M05 23.0 23.1
M02 23.4 23.5
M11 23.6 23.6
M07 23.8 23.8
M08 23.9 23.8
M03 24.2 24.2
M12 24.2 24.3
M13 24.2 24.4
M14 24.9 24.8
M09 25.1 25.1
M15 25.9 25.8
M06 26.4 26.2
M04 26.6 26.3
M01 27.8 27.4
M10 29.5 29.0
F10 18.5 19.0
F09 21.1 21.3
F06 21.1 21.4
F01 21.4 21.6
F05 22.6 22.7
F07 23.0 23.1
F02 23.0 23.1
F08 23.4 23.4
F03 23.8 23.8
F04 24.9 24.8
F11 26.4 26.2
, , I(age - 11)
coef(fm2Orth.lis) coef(fm1Orth.lme)
M16 0.550 0.591
M05 0.850 0.686
M02 0.775 0.675
M11 0.325 0.541
M07 0.800 0.695
M08 0.375 0.565
M03 0.750 0.696
M12 1.000 0.775
M13 1.950 1.074
M14 0.525 0.646
M09 0.975 0.796
M15 1.125 0.868
M06 0.675 0.743
M04 0.175 0.594
M01 0.950 0.876
M10 0.750 0.871
F10 0.450 0.410
F09 0.275 0.442
F06 0.375 0.474
F01 0.375 0.482
F05 0.275 0.492
F07 0.550 0.591
F02 0.800 0.670
F08 0.175 0.486
F03 0.850 0.711
F04 0.475 0.630
F11 0.675 0.743
> plot(compOrth, mark = fixef(fm1Orth.lme)) # Figure 4.8
> ## Figure 4.9
> plot(comparePred(fm2Orth.lis, fm1Orth.lme, length.out = 2),
+ layout = c(8,4), between = list(y = c(0, 0.5, 0)))
> plot(compareFits(ranef(fm2Orth.lme), ranef(fm2Orth.lmeM)),
+ mark = c(0, 0))
> fm4Orth.lm <- lm(distance ~ Sex * I(age-11), Orthodont)
> summary(fm4Orth.lm)
Call:
lm(formula = distance ~ Sex * I(age - 11), data = Orthodont)
Residuals:
Min 1Q Median 3Q Max
-5.616 -1.322 -0.168 1.330 5.247
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 23.8082 0.2210 107.73 < 2e-16 ***
Sex1 -1.1605 0.2210 -5.25 8.1e-07 ***
I(age - 11) 0.6320 0.0988 6.39 4.7e-09 ***
Sex1:I(age - 11) -0.1524 0.0988 -1.54 0.13
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.26 on 104 degrees of freedom
Multiple R-squared: 0.423, Adjusted R-squared: 0.406
F-statistic: 25.4 on 3 and 104 DF, p-value: 2.11e-12
> anova(fm2Orth.lme, fm4Orth.lm)
Model df AIC BIC logLik Test L.Ratio p-value
fm2Orth.lme 1 8 451 473 -218
fm4Orth.lm 2 5 496 510 -243 1 vs 2 51 <.0001
> #fm1IGF.lme <- lme(fm1IGF.lis)
> #fm1IGF.lme
> #intervals(fm1IGF.lme)
> #summary(fm1IGF.lme)
> pd1 <- pdDiag(~ age)
> pd1
Uninitialized positive definite matrix structure of class pdDiag.
> formula(pd1)
~age
> #fm2IGF.lme <- update(fm1IGF.lme, random = pdDiag(~age))
> (fm2IGF.lme <- lme(conc ~ age, IGF,
+ random = pdDiag(~age)))
Linear mixed-effects model fit by REML
Data: IGF
Log-restricted-likelihood: -297
Fixed: conc ~ age
(Intercept) age
5.36904 -0.00193
Random effects:
Formula: ~age | Lot
Structure: Diagonal
(Intercept) age Residual
StdDev: 3.62e-05 0.00537 0.822
Number of Observations: 237
Number of Groups: 10
> #anova(fm1IGF.lme, fm2IGF.lme)
> anova(fm2IGF.lme)
numDF denDF F-value p-value
(Intercept) 1 226 6439 <.0001
age 1 226 0 0.673
> #update(fm1IGF.lme, random = list(Lot = pdDiag(~ age)))
> pd2 <- pdDiag(value = diag(2), form = ~ age)
> pd2
Positive definite matrix structure of class pdDiag representing
[,1] [,2]
[1,] 1 0
[2,] 0 1
> formula(pd2)
~age
> lme(conc ~ age, IGF, pdDiag(diag(2), ~age))
Linear mixed-effects model fit by REML
Data: IGF
Log-restricted-likelihood: -297
Fixed: conc ~ age
(Intercept) age
5.36904 -0.00193
Random effects:
Formula: ~age | Lot
Structure: Diagonal
(Intercept) age Residual
StdDev: 3.12e-05 0.00537 0.822
Number of Observations: 237
Number of Groups: 10
> fm4OatsB <- lme(yield ~ nitro, data = Oats,
+ random =list(Block = pdCompSymm(~ Variety - 1)))
> summary(fm4OatsB)
Linear mixed-effects model fit by REML
Data: Oats
AIC BIC logLik
603 614 -297
Random effects:
Formula: ~Variety - 1 | Block
Structure: Compound Symmetry
StdDev Corr
VarietyGolden Rain 18.2
VarietyMarvellous 18.2 0.635
VarietyVictory 18.2 0.635 0.635
Residual 12.9
Fixed effects: yield ~ nitro
Value Std.Error DF t-value p-value
(Intercept) 81.9 6.95 65 11.8 0
nitro 73.7 6.78 65 10.9 0
Correlation:
(Intr)
nitro -0.293
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.7438 -0.6648 0.0171 0.5430 1.8030
Number of Observations: 72
Number of Groups: 6
> corMatrix(fm4OatsB$modelStruct$reStruct$Block)[1,2]
[1] 0.635
> fm4OatsC <- lme(yield ~ nitro, data = Oats,
+ random=list(Block=pdBlocked(list(pdIdent(~ 1),
+ pdIdent(~ Variety-1)))))
> summary(fm4OatsC)
Linear mixed-effects model fit by REML
Data: Oats
AIC BIC logLik
603 614 -297
Random effects:
Composite Structure: Blocked
Block 1: (Intercept)
Formula: ~1 | Block
(Intercept)
StdDev: 14.5
Block 2: VarietyGolden Rain, VarietyMarvellous, VarietyVictory
Formula: ~Variety - 1 | Block
Structure: Multiple of an Identity
VarietyGolden Rain VarietyMarvellous VarietyVictory
StdDev: 11 11 11
Residual
StdDev: 12.9
Fixed effects: yield ~ nitro
Value Std.Error DF t-value p-value
(Intercept) 81.9 6.95 65 11.8 0
nitro 73.7 6.78 65 10.9 0
Correlation:
(Intr)
nitro -0.293
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.7438 -0.6648 0.0171 0.5430 1.8030
Number of Observations: 72
Number of Groups: 6
> ## establishing the desired parameterization for contrasts
> options(contrasts = c("contr.treatment", "contr.poly"))
> fm1Assay <- lme(logDens ~ sample * dilut, Assay,
+ random = pdBlocked(list(pdIdent(~ 1), pdIdent(~ sample - 1),
+ pdIdent(~ dilut - 1))))
> fm1Assay
Linear mixed-effects model fit by REML
Data: Assay
Log-restricted-likelihood: 38.5
Fixed: logDens ~ sample * dilut
(Intercept) sampleb samplec sampled
-0.18279 0.08075 0.13398 0.20770
samplee samplef dilut2 dilut3
-0.02367 0.07357 0.20443 0.40586
dilut4 dilut5 sampleb:dilut2 samplec:dilut2
0.57319 0.72064 0.00894 -0.00850
sampled:dilut2 samplee:dilut2 samplef:dilut2 sampleb:dilut3
0.00108 -0.04192 0.01935 -0.02507
samplec:dilut3 sampled:dilut3 samplee:dilut3 samplef:dilut3
0.01865 0.00399 -0.02771 0.05432
sampleb:dilut4 samplec:dilut4 sampled:dilut4 samplee:dilut4
0.06079 0.00526 -0.01649 0.04980
samplef:dilut4 sampleb:dilut5 samplec:dilut5 sampled:dilut5
0.06337 -0.04576 -0.07260 -0.17776
samplee:dilut5 samplef:dilut5
0.01361 0.00402
Random effects:
Composite Structure: Blocked
Block 1: (Intercept)
Formula: ~1 | Block
(Intercept)
StdDev: 0.00981
Block 2: samplea, sampleb, samplec, sampled, samplee, samplef
Formula: ~sample - 1 | Block
Structure: Multiple of an Identity
samplea sampleb samplec sampled samplee samplef
StdDev: 0.0253 0.0253 0.0253 0.0253 0.0253 0.0253
Block 3: dilut1, dilut2, dilut3, dilut4, dilut5
Formula: ~dilut - 1 | Block
Structure: Multiple of an Identity
dilut1 dilut2 dilut3 dilut4 dilut5 Residual
StdDev: 0.00913 0.00913 0.00913 0.00913 0.00913 0.0416
Number of Observations: 60
Number of Groups: 2
> anova(fm1Assay)
numDF denDF F-value p-value
(Intercept) 1 29 538 <.0001
sample 5 29 11 <.0001
dilut 4 29 421 <.0001
sample:dilut 20 29 2 0.119
> formula(Oxide)
Thickness ~ 1 | Lot/Wafer
> fm1Oxide <- lme(Thickness ~ 1, Oxide)
> fm1Oxide
Linear mixed-effects model fit by REML
Data: Oxide
Log-restricted-likelihood: -227
Fixed: Thickness ~ 1
(Intercept)
2000
Random effects:
Formula: ~1 | Lot
(Intercept)
StdDev: 11.4
Formula: ~1 | Wafer %in% Lot
(Intercept) Residual
StdDev: 5.99 3.55
Number of Observations: 72
Number of Groups:
Lot Wafer %in% Lot
8 24
> intervals(fm1Oxide, which = "var-cov")
Approximate 95% confidence intervals
Random Effects:
Level: Lot
lower est. upper
sd((Intercept)) 6.39 11.4 20.3
Level: Wafer
lower est. upper
sd((Intercept)) 4.06 5.99 8.82
Within-group standard error:
lower est. upper
2.90 3.55 4.33
> fm2Oxide <- update(fm1Oxide, random = ~ 1 | Lot)
> anova(fm1Oxide, fm2Oxide)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Oxide 1 4 462 471 -227
fm2Oxide 2 3 497 504 -246 1 vs 2 37.1 <.0001
> coef(fm1Oxide, level = 1)
(Intercept)
1 1997
2 1989
3 2001
4 1996
5 2014
6 2020
7 1992
8 1994
> coef(fm1Oxide, level = 2)
(Intercept)
1/1 2003
1/2 1985
1/3 2001
2/1 1990
2/2 1988
2/3 1986
3/1 2002
3/2 2000
3/3 2000
4/1 1996
4/2 1999
4/3 1991
5/1 2009
5/2 2017
5/3 2019
6/1 2031
6/2 2022
6/3 2011
7/1 1990
7/2 1991
7/3 1992
8/1 1994
8/2 1995
8/3 1991
> ranef(fm1Oxide, level = 1:2)
Level: Lot
(Intercept)
1 -3.463
2 -11.222
3 0.869
4 -4.471
5 13.463
6 19.408
7 -8.199
8 -6.385
Level: Wafer %in% Lot
(Intercept)
1/1 6.5460
1/2 -11.9589
1/3 4.4567
2/1 0.6586
2/2 -0.8337
2/3 -2.9230
3/1 1.4728
3/2 -0.6164
3/3 -0.6164
4/1 -0.0135
4/2 3.2696
4/3 -4.4905
5/1 -4.4318
5/2 3.0298
5/3 5.1191
6/1 11.7350
6/2 2.1841
6/3 -8.5607
7/1 -1.7494
7/2 -0.5556
7/3 0.0414
8/1 -0.0902
8/2 1.4021
8/3 -3.0749
> fm1Wafer <- lme(current ~ voltage + I(voltage^2), data = Wafer,
+ random = list(Wafer = pdDiag(~voltage + I(voltage^2)),
+ Site = pdDiag(~voltage + I(voltage^2))))
> ## IGNORE_RDIFF_BEGIN
> summary(fm1Wafer)
Linear mixed-effects model fit by REML
Data: Wafer
AIC BIC logLik
-282 -242 151
Random effects:
Formula: ~voltage + I(voltage^2) | Wafer
Structure: Diagonal
(Intercept) voltage I(voltage^2)
StdDev: 2.81e-05 0.187 0.025
Formula: ~voltage + I(voltage^2) | Site %in% Wafer
Structure: Diagonal
(Intercept) voltage I(voltage^2) Residual
StdDev: 8.17e-06 0.136 2.45e-08 0.115
Fixed effects: current ~ voltage + I(voltage^2)
Value Std.Error DF t-value p-value
(Intercept) -4.46 0.0513 318 -87.0 0
voltage 5.90 0.0927 318 63.7 0
I(voltage^2) 1.17 0.0230 318 51.0 0
Correlation:
(Intr) voltag
voltage -0.735
I(voltage^2) 0.884 -0.698
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.8966 -0.5354 0.0249 0.7985 1.7777
Number of Observations: 400
Number of Groups:
Wafer Site %in% Wafer
10 80
> ## IGNORE_RDIFF_END
> fitted(fm1Wafer, level = 0)
1 1 1 1 1 1 1 1 1 1
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
1 1 1 1 1 1 1 1 1 1
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
1 1 1 1 1 1 1 1 1 1
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
1 1 1 1 1 1 1 1 1 1
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
2 2 2 2 2 2 2 2 2 2
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
2 2 2 2 2 2 2 2 2 2
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
2 2 2 2 2 2 2 2 2 2
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
2 2 2 2 2 2 2 2 2 2
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
3 3 3 3 3 3 3 3 3 3
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
3 3 3 3 3 3 3 3 3 3
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
3 3 3 3 3 3 3 3 3 3
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
3 3 3 3 3 3 3 3 3 3
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
4 4 4 4 4 4 4 4 4 4
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
4 4 4 4 4 4 4 4 4 4
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
4 4 4 4 4 4 4 4 4 4
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
4 4 4 4 4 4 4 4 4 4
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
5 5 5 5 5 5 5 5 5 5
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
5 5 5 5 5 5 5 5 5 5
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
5 5 5 5 5 5 5 5 5 5
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
5 5 5 5 5 5 5 5 5 5
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
6 6 6 6 6 6 6 6 6 6
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
6 6 6 6 6 6 6 6 6 6
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
6 6 6 6 6 6 6 6 6 6
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
6 6 6 6 6 6 6 6 6 6
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
7 7 7 7 7 7 7 7 7 7
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
7 7 7 7 7 7 7 7 7 7
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
7 7 7 7 7 7 7 7 7 7
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
7 7 7 7 7 7 7 7 7 7
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
8 8 8 8 8 8 8 8 8 8
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
8 8 8 8 8 8 8 8 8 8
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
8 8 8 8 8 8 8 8 8 8
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
8 8 8 8 8 8 8 8 8 8
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
9 9 9 9 9 9 9 9 9 9
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
9 9 9 9 9 9 9 9 9 9
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
9 9 9 9 9 9 9 9 9 9
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
9 9 9 9 9 9 9 9 9 9
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
10 10 10 10 10 10 10 10 10 10
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
10 10 10 10 10 10 10 10 10 10
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
10 10 10 10 10 10 10 10 10 10
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
10 10 10 10 10 10 10 10 10 10
1.01 4.31 7.98 12.03 16.45 1.01 4.31 7.98 12.03 16.45
attr(,"label")
[1] "Fitted values (mA)"
> resid(fm1Wafer, level = 1:2)
Wafer Site
1 0.061492 0.068062
2 -0.189869 -0.180013
3 -0.015086 -0.001944
4 0.103762 0.120189
5 -0.053726 -0.034014
6 0.192612 0.073736
7 0.044131 -0.134183
8 0.275914 0.038163
9 0.431762 0.134573
10 0.306274 -0.050353
11 0.084612 0.060177
12 -0.150069 -0.186722
13 0.045314 -0.003556
14 0.185762 0.124675
15 0.054274 -0.019031
16 0.042212 0.073671
17 -0.237069 -0.189880
18 -0.077086 -0.014167
19 0.035762 0.114410
20 -0.121726 -0.027348
21 0.092692 0.076696
22 -0.149069 -0.173062
23 0.033314 0.001324
24 0.159762 0.119774
25 0.014274 -0.033712
26 -0.057768 0.111841
27 -0.453669 -0.199256
28 -0.379286 -0.040068
29 -0.339838 0.084185
30 -0.553726 -0.044899
31 0.047012 0.088048
32 -0.238069 -0.176514
33 -0.090886 -0.008812
34 0.007762 0.110354
35 -0.165726 -0.042616
36 0.079392 0.084841
37 -0.172269 -0.164095
38 -0.006486 0.004413
39 0.101762 0.115385
40 -0.063726 -0.047378
41 0.038702 0.065476
42 -0.209573 -0.169412
43 -0.048411 0.005137
44 0.036789 0.103724
45 -0.117373 -0.037052
46 0.266102 0.151852
47 0.114027 -0.057349
48 0.302789 0.074288
49 0.390789 0.105163
50 0.226627 -0.116125
51 0.299502 0.205135
52 0.129627 -0.011925
53 0.280989 0.092254
54 0.324789 0.088870
55 0.120627 -0.162477
56 -0.032838 0.072449
57 -0.343973 -0.186043
58 -0.225411 -0.014838
59 -0.171211 0.092005
60 -0.353373 -0.037514
61 0.262902 0.160786
62 0.095827 -0.057348
63 0.274189 0.069956
64 0.356789 0.101497
65 0.188627 -0.117724
66 0.000342 0.087867
67 -0.298573 -0.167286
68 -0.178211 -0.003161
69 -0.127211 0.091601
70 -0.315373 -0.052799
71 0.100502 0.127285
72 -0.153973 -0.113800
73 -0.025611 0.027954
74 0.022789 0.089745
75 -0.169373 -0.089027
76 0.032102 0.097186
77 -0.244373 -0.146748
78 -0.120611 0.009556
79 -0.071211 0.091498
80 -0.261373 -0.066123
81 -0.004099 0.052717
82 -0.278076 -0.192852
83 -0.127696 -0.014064
84 -0.029418 0.112622
85 -0.197444 -0.026995
86 0.052321 0.089249
87 -0.208276 -0.152884
88 -0.067296 0.006561
89 0.014582 0.106902
90 -0.171444 -0.060659
91 0.118641 0.062782
92 -0.064476 -0.148264
93 0.134904 0.023187
94 0.266582 0.126935
95 0.120556 -0.047019
96 -0.041079 0.051265
97 -0.346676 -0.208160
98 -0.212496 -0.027807
99 -0.121418 0.109442
100 -0.297444 -0.020411
101 0.128041 0.079868
102 -0.066076 -0.138336
103 0.121104 0.024758
104 0.240582 0.120149
105 0.088556 -0.055963
106 -0.091839 0.070304
107 -0.452476 -0.209261
108 -0.361896 -0.037608
109 -0.311418 0.093941
110 -0.519444 -0.033013
111 0.286041 0.146703
112 0.154524 -0.054483
113 0.353704 0.075028
114 0.468582 0.120237
115 0.298556 -0.119458
116 0.253641 0.183845
117 0.066124 -0.038569
118 0.211104 0.071514
119 0.274582 0.100094
120 0.062556 -0.146829
121 0.113168 0.059522
122 -0.082704 -0.163173
123 0.123749 0.016457
124 0.262907 0.128791
125 0.124569 -0.036370
126 0.199348 0.075597
127 0.057096 -0.128531
128 0.288549 0.041047
129 0.444907 0.135529
130 0.316569 -0.054685
131 0.010568 0.105606
132 -0.309104 -0.166546
133 -0.198251 -0.008174
134 -0.139093 0.098502
135 -0.349431 -0.064316
136 0.000368 0.076116
137 -0.314704 -0.201082
138 -0.178051 -0.026555
139 -0.083093 0.106277
140 -0.251431 -0.024187
141 0.016268 0.116152
142 -0.315904 -0.166078
143 -0.212251 -0.012483
144 -0.155093 0.094617
145 -0.363431 -0.063779
146 0.004348 0.054446
147 -0.286504 -0.211357
148 -0.125651 -0.025456
149 -0.009093 0.116151
150 -0.161431 -0.011138
151 0.096848 0.080552
152 -0.138304 -0.162749
153 0.039349 0.006756
154 0.158907 0.118165
155 0.006569 -0.042321
156 0.118788 0.080347
157 -0.096904 -0.154565
158 0.090949 0.014067
159 0.218907 0.122804
160 0.068569 -0.046754
161 -0.029651 0.042434
162 -0.299821 -0.191694
163 -0.157165 -0.012996
164 -0.067684 0.112527
165 -0.246778 -0.030524
166 0.116949 0.129128
167 -0.114421 -0.096153
168 0.013235 0.037592
169 0.072316 0.102762
170 -0.146778 -0.110243
171 0.197149 0.101805
172 0.049179 -0.093837
173 0.245235 0.054547
174 0.362316 0.123955
175 0.195222 -0.090810
176 0.048749 0.058063
177 -0.177021 -0.163051
178 -0.010365 0.008261
179 0.094316 0.117599
180 -0.072778 -0.044839
181 0.214149 0.102694
182 0.073779 -0.093404
183 0.277635 0.054723
184 0.402316 0.123676
185 0.249222 -0.085146
186 -0.092031 0.056118
187 -0.426021 -0.203798
188 -0.326965 -0.030668
189 -0.271684 0.098687
190 -0.478778 -0.034333
191 0.187949 0.129497
192 0.004979 -0.082699
193 0.168635 0.051730
194 0.256316 0.110185
195 0.069222 -0.106135
196 0.095349 0.120157
197 -0.145621 -0.108410
198 -0.019765 0.029849
199 0.040316 0.102333
200 -0.174778 -0.100357
201 0.115311 0.075105
202 -0.097595 -0.157904
203 0.094646 0.014234
204 0.223635 0.123120
205 0.077572 -0.043047
206 0.121051 0.100980
207 -0.110195 -0.140302
208 0.058846 0.018704
209 0.165635 0.115457
210 -0.004428 -0.064642
211 0.079591 0.081229
212 -0.172795 -0.170338
213 -0.001954 0.001323
214 0.113635 0.117730
215 -0.046428 -0.041514
216 0.007011 0.076714
217 -0.304595 -0.200040
218 -0.163954 -0.024547
219 -0.066365 0.107893
220 -0.234428 -0.025319
221 0.066991 0.085934
222 -0.202595 -0.174180
223 -0.042754 -0.004867
224 0.065635 0.112994
225 -0.096428 -0.039598
226 -0.020549 0.093776
227 -0.371395 -0.199907
228 -0.261754 -0.033103
229 -0.188365 0.097449
230 -0.376428 -0.033452
231 0.124251 0.092105
232 -0.097195 -0.145414
233 0.081646 0.017355
234 0.199635 0.119271
235 0.039572 -0.056865
236 0.104871 0.083043
237 -0.123995 -0.156738
238 0.055046 0.011389
239 0.173635 0.119064
240 0.017572 -0.047914
241 0.227356 0.097058
242 0.136724 -0.058724
243 0.348539 0.087942
244 0.457002 0.131256
245 0.268913 -0.121982
246 -0.049644 -0.001886
247 -0.250476 -0.178840
248 -0.082661 0.012853
249 0.007002 0.126395
250 -0.185087 -0.041815
251 0.491556 0.164445
252 0.535924 0.045257
253 0.814739 0.160517
254 0.963002 0.145224
255 0.798913 -0.182420
256 0.035556 -0.000644
257 -0.106476 -0.160777
258 0.103139 0.030738
259 0.229002 0.138501
260 0.066913 -0.041688
261 0.084356 0.047445
262 -0.064476 -0.119844
263 0.122139 0.048316
264 0.219002 0.126723
265 0.030913 -0.079821
266 -0.102844 -0.008156
267 -0.348676 -0.206645
268 -0.197861 -0.008486
269 -0.112998 0.123721
270 -0.311087 -0.027023
271 -0.104044 0.032614
272 -0.381676 -0.176689
273 -0.275861 -0.002545
274 -0.234998 0.106647
275 -0.471087 -0.061112
276 -0.127844 0.030339
277 -0.422076 -0.184802
278 -0.325461 -0.009095
279 -0.292998 0.102459
280 -0.531087 -0.056538
281 0.272748 0.047840
282 0.262060 -0.075302
283 0.546385 0.096569
284 0.718724 0.156454
285 0.586276 -0.088447
286 0.249948 0.062457
287 0.206660 -0.074577
288 0.464785 0.089803
289 0.616724 0.147996
290 0.466276 -0.096197
291 -0.032652 0.011344
292 -0.243540 -0.177547
293 -0.075615 0.012376
294 0.014724 0.124713
295 -0.175724 -0.043737
296 -0.108452 -0.012938
297 -0.355740 -0.212470
298 -0.201215 -0.010187
299 -0.113276 0.125508
300 -0.309724 -0.023182
301 -0.096052 0.018185
302 -0.362540 -0.191185
303 -0.234015 -0.005541
304 -0.171276 0.114316
305 -0.387724 -0.045013
306 -0.123652 -0.009999
307 -0.389340 -0.218861
308 -0.245215 -0.017909
309 -0.163276 0.120856
310 -0.359724 -0.018765
311 -0.108452 0.037755
312 -0.402940 -0.183630
313 -0.300215 -0.007802
314 -0.259276 0.106241
315 -0.497724 -0.059104
316 0.285348 0.119276
317 0.217660 -0.031449
318 0.435785 0.103641
319 0.548724 0.133543
320 0.356276 -0.141940
321 0.066249 0.061990
322 -0.106937 -0.113325
323 0.058058 0.049541
324 0.133235 0.122588
325 -0.084807 -0.097583
326 0.058049 0.013390
327 -0.080137 -0.147125
328 0.128858 0.039540
329 0.251235 0.139588
330 0.077193 -0.056784
331 0.004649 0.041019
332 -0.199737 -0.145182
333 -0.044542 0.028198
334 0.029235 0.120160
335 -0.182807 -0.073697
336 0.088449 -0.002738
337 -0.008937 -0.145718
338 0.230458 0.048083
339 0.377235 0.149266
340 0.225193 -0.048369
341 0.017249 0.032907
342 -0.167737 -0.144250
343 0.000858 0.032174
344 0.085235 0.124380
345 -0.116807 -0.069833
346 -0.084751 -0.026585
347 -0.303337 -0.216088
348 -0.124142 -0.007810
349 -0.012765 0.132649
350 -0.184807 -0.010310
351 -0.104351 0.042779
352 -0.394337 -0.173642
353 -0.296142 -0.001881
354 -0.264765 0.103060
355 -0.508807 -0.067416
356 0.278649 0.082220
357 0.247263 -0.047380
358 0.498058 0.105201
359 0.635235 0.144163
360 0.469193 -0.120093
361 -0.107404 -0.012451
362 -0.354401 -0.211972
363 -0.199807 -0.009901
364 -0.112820 0.124562
365 -0.307642 -0.022784
366 0.231396 0.061385
367 0.179399 -0.075617
368 0.428793 0.088772
369 0.571180 0.146153
370 0.410358 -0.099674
371 0.162596 0.050096
372 0.066399 -0.102351
373 0.292993 0.067994
374 0.421180 0.139931
375 0.252358 -0.085141
376 -0.022804 -0.020045
377 -0.198801 -0.194662
378 0.005393 0.010912
379 0.131180 0.138078
380 -0.027642 -0.019364
381 0.015396 0.011892
382 -0.160401 -0.165658
383 0.030993 0.023985
384 0.141180 0.132419
385 -0.035642 -0.046155
386 -0.105404 0.014675
387 -0.373401 -0.193283
388 -0.246407 -0.006248
389 -0.184820 0.115377
390 -0.405642 -0.045405
391 0.164196 0.113448
392 0.015399 -0.060723
393 0.177393 0.075897
394 0.243180 0.116310
395 0.016358 -0.135886
396 -0.008404 0.037007
397 -0.216401 -0.148285
398 -0.065007 0.025815
399 0.005180 0.118707
400 -0.207642 -0.071409
> newWafer <-
+ data.frame(Wafer = rep(1, 4), voltage = c(1, 1.5, 3, 3.5))
> predict(fm1Wafer, newWafer, level = 0:1)
Wafer predict.fixed predict.Wafer
1 1 2.61 2.40
2 1 7.03 6.72
3 1 23.78 23.23
4 1 30.54 29.92
> newWafer2 <- data.frame(Wafer = rep(1, 4), Site = rep(3, 4),
+ voltage = c(1, 1.5, 3, 3.5))
> predict(fm1Wafer, newWafer2, level = 0:2)
Wafer Site predict.fixed predict.Wafer predict.Site
1 1 1/3 2.61 2.40 2.43
2 1 1/3 7.03 6.72 6.77
3 1 1/3 23.78 23.23 23.32
4 1 1/3 30.54 29.92 30.03
> # 4.3 Examining a Fitted Model
>
> plot(fm2Orth.lme, Subject~resid(.), abline = 0)
> plot(fm2Orth.lme, resid(., type = "p") ~ fitted(.) | Sex,
+ id = 0.05, adj = -0.3)
> fm3Orth.lme <-
+ update(fm2Orth.lme, weights = varIdent(form = ~ 1 | Sex))
> fm3Orth.lme
Linear mixed-effects model fit by REML
Data: Orthodont
Log-restricted-likelihood: -206
Fixed: distance ~ Sex + I(age - 11) + Sex:I(age - 11)
(Intercept) SexFemale
24.969 -2.321
I(age - 11) SexFemale:I(age - 11)
0.784 -0.305
Random effects:
Formula: ~I(age - 11) | Subject
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 1.855 (Intr)
I(age - 11) 0.157 0.394
Residual 1.630
Variance function:
Structure: Different standard deviations per stratum
Formula: ~1 | Sex
Parameter estimates:
Male Female
1.000 0.409
Number of Observations: 108
Number of Groups: 27
> plot(fm3Orth.lme, distance ~ fitted(.),
+ id = 0.05, adj = -0.3)
> anova(fm2Orth.lme, fm3Orth.lme)
Model df AIC BIC logLik Test L.Ratio p-value
fm2Orth.lme 1 8 451 473 -218
fm3Orth.lme 2 9 430 453 -206 1 vs 2 23.8 <.0001
> qqnorm(fm3Orth.lme, ~resid(.) | Sex)
> plot(fm2IGF.lme, resid(., type = "p") ~ fitted(.) | Lot,
+ layout = c(5,2))
> qqnorm(fm2IGF.lme, ~ resid(.), id = 0.05, adj = -0.75)
> plot(fm1Oxide)
> qqnorm(fm1Oxide)
> plot(fm1Wafer, resid(.) ~ voltage | Wafer)
> plot(fm1Wafer, resid(.) ~ voltage | Wafer,
+ panel = function(x, y, ...) {
+ panel.grid()
+ panel.xyplot(x, y)
+ panel.loess(x, y, lty = 2)
+ panel.abline(0, 0)
+ })
> with(Wafer,
+ coef(lm(resid(fm1Wafer) ~ cos(4.19*voltage)+sin(4.19*voltage)-1)))
cos(4.19 * voltage) sin(4.19 * voltage)
-0.0519 0.1304
> nls(resid(fm1Wafer) ~ b3*cos(w*voltage) + b4*sin(w*voltage), Wafer,
+ start = list(b3 = -0.0519, b4 = 0.1304, w = 4.19))
Nonlinear regression model
model: resid(fm1Wafer) ~ b3 * cos(w * voltage) + b4 * sin(w * voltage)
data: Wafer
b3 b4 w
-0.1117 0.0777 4.5679
residual sum-of-squares: 0.729
Number of iterations to convergence: 6
Achieved convergence tolerance: 1.12e-06
> fm2Wafer <- update(fm1Wafer,
+ . ~ . + cos(4.5679*voltage) + sin(4.5679*voltage),
+ random = list(Wafer=pdDiag(~voltage+I(voltage^2)),
+ Site=pdDiag(~voltage+I(voltage^2))))
> summary(fm2Wafer)
Linear mixed-effects model fit by REML
Data: Wafer
AIC BIC logLik
-1233 -1185 628
Random effects:
Formula: ~voltage + I(voltage^2) | Wafer
Structure: Diagonal
(Intercept) voltage I(voltage^2)
StdDev: 0.129 0.349 0.0491
Formula: ~voltage + I(voltage^2) | Site %in% Wafer
Structure: Diagonal
(Intercept) voltage I(voltage^2) Residual
StdDev: 0.0397 0.234 0.0475 0.0113
Fixed effects: current ~ voltage + I(voltage^2) + cos(4.5679 * voltage) + sin(4.5679 * voltage)
Value Std.Error DF t-value p-value
(Intercept) -4.26 0.0422 316 -100.8 0
voltage 5.62 0.1142 316 49.2 0
I(voltage^2) 1.26 0.0170 316 74.2 0
cos(4.5679 * voltage) -0.10 0.0011 316 -85.0 0
sin(4.5679 * voltage) 0.10 0.0015 316 69.4 0
Correlation:
(Intr) voltag I(v^2) c(4.*v
voltage -0.029
I(voltage^2) 0.060 -0.031
cos(4.5679 * voltage) 0.162 -0.082 0.172
sin(4.5679 * voltage) 0.200 -0.101 0.212 0.567
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.4272 -0.4032 0.0253 0.3936 2.8427
Number of Observations: 400
Number of Groups:
Wafer Site %in% Wafer
10 80
> ## IGNORE_RDIFF_BEGIN
> intervals(fm2Wafer)
Approximate 95% confidence intervals
Fixed effects:
lower est. upper
(Intercept) -4.3385 -4.2554 -4.1723
voltage 5.3977 5.6224 5.8470
I(voltage^2) 1.2251 1.2585 1.2919
cos(4.5679 * voltage) -0.0978 -0.0956 -0.0933
sin(4.5679 * voltage) 0.1014 0.1043 0.1073
Random Effects:
Level: Wafer
lower est. upper
sd((Intercept)) 0.0802 0.1289 0.207
sd(voltage) 0.2135 0.3487 0.569
sd(I(voltage^2)) 0.0290 0.0491 0.083
Level: Site
lower est. upper
sd((Intercept)) 0.0220 0.0397 0.0717
sd(voltage) 0.1909 0.2344 0.2878
sd(I(voltage^2)) 0.0383 0.0475 0.0590
Within-group standard error:
lower est. upper
0.00927 0.01133 0.01383
> ## IGNORE_RDIFF_END
> qqnorm(fm2Wafer)
> qqnorm(fm2Orth.lme, ~ranef(.), id = 0.10, cex = 0.7)
> pairs(fm2Orth.lme, ~ranef(.) | Sex,
+ id = ~ Subject == "M13", adj = -0.3)
> fm2IGF.lme
Linear mixed-effects model fit by REML
Data: IGF
Log-restricted-likelihood: -297
Fixed: conc ~ age
(Intercept) age
5.36904 -0.00193
Random effects:
Formula: ~age | Lot
Structure: Diagonal
(Intercept) age Residual
StdDev: 3.62e-05 0.00537 0.822
Number of Observations: 237
Number of Groups: 10
> c(0.00031074, 0.0053722)/abs(fixef(fm2IGF.lme))
(Intercept) age
5.79e-05 2.78e+00
> fm3IGF.lme <- update(fm2IGF.lme, random = ~ age - 1)
> anova(fm2IGF.lme, fm3IGF.lme)
Model df AIC BIC logLik Test L.Ratio p-value
fm2IGF.lme 1 5 605 622 -297
fm3IGF.lme 2 4 603 617 -297 1 vs 2 1.47e-07 1
> qqnorm(fm1Oxide, ~ranef(., level = 1), id=0.10)
> qqnorm(fm1Oxide, ~ranef(., level = 2), id=0.10)
> #fm3Wafer <- update(fm2Wafer,
> # random = list(Wafer = ~voltage+I(voltage^2),
> # Site = pdDiag(~voltage+I(voltage^2))),
> # control = list(msVerbose = TRUE, msMaxIter = 200)
> # )
> #fm3Wafer
> #anova(fm2Wafer, fm3Wafer)
> #fm4Wafer <- update(fm2Wafer,
> # random = list(Wafer = ~ voltage + I(voltage^2),
> # Site = pdBlocked(list(~1,
> # ~voltage+I(voltage^2) - 1))),
> # control = list(msVerbose = TRUE,
> # msMaxIter = 200))
> #fm4Wafer
> #anova(fm3Wafer, fm4Wafer)
> #qqnorm(fm4Wafer, ~ranef(., level = 2), id = 0.05,
> # cex = 0.7, layout = c(3, 1))
>
> # The next line is not in the book but is needed to get fm1Machine
>
> fm1Machine <-
+ lme(score ~ Machine, data = Machines, random = ~ 1 | Worker)
> (fm3Machine <- update(fm1Machine, random = ~Machine-1|Worker))
Linear mixed-effects model fit by REML
Data: Machines
Log-restricted-likelihood: -104
Fixed: score ~ Machine
(Intercept) MachineB MachineC
52.36 7.97 13.92
Random effects:
Formula: ~Machine - 1 | Worker
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
MachineA 4.079 MachnA MachnB
MachineB 8.625 0.803
MachineC 4.389 0.623 0.771
Residual 0.962
Number of Observations: 54
Number of Groups: 6
> # cleanup
>
> summary(warnings())
No warnings
======
ch05.R
======
> #-*- R -*-
>
> # initialization
>
> library(nlme)
> options(width = 65,
+ ## reduce platform dependence in printed output when testing
+ digits = if(nzchar(Sys.getenv("R_TESTS"))) 3 else 5)
> options(contrasts = c(unordered = "contr.helmert", ordered = "contr.poly"))
> pdf(file = "ch05.pdf")
> # Chapter 5 Extending the Basic Linear Mixed-Effects Models
>
> # 5.1 General Formulation of the Extended Model
>
> vf1Fixed <- varFixed(~ age)
> vf1Fixed <- Initialize(vf1Fixed, data = Orthodont)
> varWeights(vf1Fixed)
[1] 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267 0.354 0.316
[11] 0.289 0.267 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267
[21] 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267 0.354 0.316
[31] 0.289 0.267 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267
[41] 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267 0.354 0.316
[51] 0.289 0.267 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267
[61] 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267 0.354 0.316
[71] 0.289 0.267 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267
[81] 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267 0.354 0.316
[91] 0.289 0.267 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267
[101] 0.354 0.316 0.289 0.267 0.354 0.316 0.289 0.267
> vf1Ident <- varIdent(c(Female = 0.5), ~ 1 | Sex)
> vf1Ident <- Initialize(vf1Ident, Orthodont)
> varWeights(vf1Ident)
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Female Female Female Female Female Female Female Female
1 2 2 2 2 2 2 2 2
Female Female Female Female Female Female Female Female Female
2 2 2 2 2 2 2 2 2
Female Female Female Female Female Female Female Female Female
2 2 2 2 2 2 2 2 2
Female Female Female Female Female Female Female Female Female
2 2 2 2 2 2 2 2 2
Female Female Female Female Female Female Female Female Female
2 2 2 2 2 2 2 2 2
> vf2Ident <- varIdent(form = ~ 1 | Sex, fixed = c(Female = 0.5))
> vf2Ident <- Initialize(vf2Ident, Orthodont)
> varWeights(vf2Ident)
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Male Male Male Male Male Male Male Male
1 1 1 1 1 1 1 1 1
Male Female Female Female Female Female Female Female Female
1 2 2 2 2 2 2 2 2
Female Female Female Female Female Female Female Female Female
2 2 2 2 2 2 2 2 2
Female Female Female Female Female Female Female Female Female
2 2 2 2 2 2 2 2 2
Female Female Female Female Female Female Female Female Female
2 2 2 2 2 2 2 2 2
Female Female Female Female Female Female Female Female Female
2 2 2 2 2 2 2 2 2
> vf3Ident <- varIdent(form = ~ 1 | Sex * age)
> vf3Ident <- Initialize(vf3Ident, Orthodont)
> varWeights(vf3Ident)
Male*8 Male*10 Male*12 Male*14 Male*8 Male*10
1 1 1 1 1 1
Male*12 Male*14 Male*8 Male*10 Male*12 Male*14
1 1 1 1 1 1
Male*8 Male*10 Male*12 Male*14 Male*8 Male*10
1 1 1 1 1 1
Male*12 Male*14 Male*8 Male*10 Male*12 Male*14
1 1 1 1 1 1
Male*8 Male*10 Male*12 Male*14 Male*8 Male*10
1 1 1 1 1 1
Male*12 Male*14 Male*8 Male*10 Male*12 Male*14
1 1 1 1 1 1
Male*8 Male*10 Male*12 Male*14 Male*8 Male*10
1 1 1 1 1 1
Male*12 Male*14 Male*8 Male*10 Male*12 Male*14
1 1 1 1 1 1
Male*8 Male*10 Male*12 Male*14 Male*8 Male*10
1 1 1 1 1 1
Male*12 Male*14 Male*8 Male*10 Male*12 Male*14
1 1 1 1 1 1
Male*8 Male*10 Male*12 Male*14 Female*8 Female*10
1 1 1 1 1 1
Female*12 Female*14 Female*8 Female*10 Female*12 Female*14
1 1 1 1 1 1
Female*8 Female*10 Female*12 Female*14 Female*8 Female*10
1 1 1 1 1 1
Female*12 Female*14 Female*8 Female*10 Female*12 Female*14
1 1 1 1 1 1
Female*8 Female*10 Female*12 Female*14 Female*8 Female*10
1 1 1 1 1 1
Female*12 Female*14 Female*8 Female*10 Female*12 Female*14
1 1 1 1 1 1
Female*8 Female*10 Female*12 Female*14 Female*8 Female*10
1 1 1 1 1 1
Female*12 Female*14 Female*8 Female*10 Female*12 Female*14
1 1 1 1 1 1
> vf1Power <- varPower(1)
> formula(vf1Power)
~fitted(.)
<environment: 0x55aa58bbc708>
> vf2Power <- varPower(fixed = 0.5)
> vf3Power <- varPower(form = ~ fitted(.) | Sex,
+ fixed = list(Male = 0.5, Female = 0))
> vf1Exp <- varExp(form = ~ age | Sex, fixed = c(Female = 0))
> vf1ConstPower <- varConstPower(power = 0.5,
+ fixed = list(const = 1))
> vf1Comb <- varComb(varIdent(c(Female = 0.5), ~ 1 | Sex),
+ varExp(1, ~ age))
> vf1Comb <- Initialize(vf1Comb, Orthodont)
> varWeights(vf1Comb)
[1] 3.35e-04 4.54e-05 6.14e-06 8.32e-07 3.35e-04 4.54e-05
[7] 6.14e-06 8.32e-07 3.35e-04 4.54e-05 6.14e-06 8.32e-07
[13] 3.35e-04 4.54e-05 6.14e-06 8.32e-07 3.35e-04 4.54e-05
[19] 6.14e-06 8.32e-07 3.35e-04 4.54e-05 6.14e-06 8.32e-07
[25] 3.35e-04 4.54e-05 6.14e-06 8.32e-07 3.35e-04 4.54e-05
[31] 6.14e-06 8.32e-07 3.35e-04 4.54e-05 6.14e-06 8.32e-07
[37] 3.35e-04 4.54e-05 6.14e-06 8.32e-07 3.35e-04 4.54e-05
[43] 6.14e-06 8.32e-07 3.35e-04 4.54e-05 6.14e-06 8.32e-07
[49] 3.35e-04 4.54e-05 6.14e-06 8.32e-07 3.35e-04 4.54e-05
[55] 6.14e-06 8.32e-07 3.35e-04 4.54e-05 6.14e-06 8.32e-07
[61] 3.35e-04 4.54e-05 6.14e-06 8.32e-07 6.71e-04 9.08e-05
[67] 1.23e-05 1.66e-06 6.71e-04 9.08e-05 1.23e-05 1.66e-06
[73] 6.71e-04 9.08e-05 1.23e-05 1.66e-06 6.71e-04 9.08e-05
[79] 1.23e-05 1.66e-06 6.71e-04 9.08e-05 1.23e-05 1.66e-06
[85] 6.71e-04 9.08e-05 1.23e-05 1.66e-06 6.71e-04 9.08e-05
[91] 1.23e-05 1.66e-06 6.71e-04 9.08e-05 1.23e-05 1.66e-06
[97] 6.71e-04 9.08e-05 1.23e-05 1.66e-06 6.71e-04 9.08e-05
[103] 1.23e-05 1.66e-06 6.71e-04 9.08e-05 1.23e-05 1.66e-06
> fm1Dial.lme <-
+ lme(rate ~(pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB,
+ Dialyzer, ~ pressure + I(pressure^2))
> fm1Dial.lme
Linear mixed-effects model fit by REML
Data: Dialyzer
Log-restricted-likelihood: -326
Fixed: rate ~ (pressure + I(pressure^2) + I(pressure^3) + I(pressure^4)) * QB
(Intercept) pressure I(pressure^2)
-16.5980 88.6733 -42.7320
I(pressure^3) I(pressure^4) QB1
9.2165 -0.7756 -0.6317
pressure:QB1 I(pressure^2):QB1 I(pressure^3):QB1
0.3104 1.5742 0.0509
I(pressure^4):QB1
-0.0860
Random effects:
Formula: ~pressure + I(pressure^2) | Subject
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 1.50 (Intr) pressr
pressure 4.91 -0.507
I(pressure^2) 1.47 0.311 -0.944
Residual 1.82
Number of Observations: 140
Number of Groups: 20
> plot(fm1Dial.lme, resid(.) ~ pressure, abline = 0)
> fm2Dial.lme <- update(fm1Dial.lme,
+ weights = varPower(form = ~ pressure))
> fm2Dial.lme
Linear mixed-effects model fit by REML
Data: Dialyzer
Log-restricted-likelihood: -310
Fixed: rate ~ (pressure + I(pressure^2) + I(pressure^3) + I(pressure^4)) * QB
(Intercept) pressure I(pressure^2)
-17.680 93.711 -49.187
I(pressure^3) I(pressure^4) QB1
12.245 -1.243 -0.921
pressure:QB1 I(pressure^2):QB1 I(pressure^3):QB1
1.353 0.480 0.491
I(pressure^4):QB1
-0.146
Random effects:
Formula: ~pressure + I(pressure^2) | Subject
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 1.86 (Intr) pressr
pressure 5.33 -0.522
I(pressure^2) 1.65 0.362 -0.954
Residual 1.26
Variance function:
Structure: Power of variance covariate
Formula: ~pressure
Parameter estimates:
power
0.749
Number of Observations: 140
Number of Groups: 20
> anova(fm1Dial.lme, fm2Dial.lme)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Dial.lme 1 17 687 736 -326
fm2Dial.lme 2 18 655 707 -310 1 vs 2 33.8 <.0001
> plot(fm2Dial.lme, resid(., type = "p") ~ pressure,
+ abline = 0)
> ## IGNORE_RDIFF_BEGIN
> intervals(fm2Dial.lme)
Approximate 95% confidence intervals
Fixed effects:
lower est. upper
(Intercept) -19.148 -17.680 -16.212
pressure 87.231 93.711 100.192
I(pressure^2) -57.616 -49.187 -40.757
I(pressure^3) 7.967 12.245 16.523
I(pressure^4) -1.953 -1.243 -0.533
QB1 -2.478 -0.921 0.636
pressure:QB1 -5.127 1.353 7.833
I(pressure^2):QB1 -7.949 0.480 8.910
I(pressure^3):QB1 -3.787 0.491 4.769
I(pressure^4):QB1 -0.856 -0.146 0.564
Random Effects:
Level: Subject
lower est. upper
sd((Intercept)) 1.256 1.857 2.7466
sd(pressure) 3.623 5.328 7.8363
sd(I(pressure^2)) 1.091 1.648 2.4909
cor((Intercept),pressure) -0.803 -0.522 -0.0525
cor((Intercept),I(pressure^2)) -0.166 0.362 0.7292
cor(pressure,I(pressure^2)) -0.985 -0.954 -0.8624
Variance function:
lower est. upper
power 0.508 0.749 0.991
Within-group standard error:
lower est. upper
1.06 1.26 1.50
> ## IGNORE_RDIFF_END
> plot(fm2Dial.lme, resid(.) ~ pressure|QB, abline = 0)
> fm3Dial.lme <- update(fm2Dial.lme,
+ weights=varPower(form = ~ pressure | QB))
> fm3Dial.lme
Linear mixed-effects model fit by REML
Data: Dialyzer
Log-restricted-likelihood: -309
Fixed: rate ~ (pressure + I(pressure^2) + I(pressure^3) + I(pressure^4)) * QB
(Intercept) pressure I(pressure^2)
-17.695 93.759 -49.231
I(pressure^3) I(pressure^4) QB1
12.260 -1.244 -1.017
pressure:QB1 I(pressure^2):QB1 I(pressure^3):QB1
1.840 -0.194 0.827
I(pressure^4):QB1
-0.200
Random effects:
Formula: ~pressure + I(pressure^2) | Subject
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 1.82 (Intr) pressr
pressure 5.24 -0.502
I(pressure^2) 1.64 0.338 -0.951
Residual 1.26
Variance function:
Structure: Power of variance covariate, different strata
Formula: ~pressure | QB
Parameter estimates:
200 300
0.648 0.838
Number of Observations: 140
Number of Groups: 20
> anova(fm2Dial.lme, fm3Dial.lme)
Model df AIC BIC logLik Test L.Ratio p-value
fm2Dial.lme 1 18 655 707 -310
fm3Dial.lme 2 19 656 711 -309 1 vs 2 0.711 0.399
> fm4Dial.lme <- update(fm2Dial.lme,
+ weights = varConstPower(form = ~ pressure))
> anova(fm2Dial.lme, fm4Dial.lme)
Model df AIC BIC logLik Test L.Ratio p-value
fm2Dial.lme 1 18 655 707 -310
fm4Dial.lme 2 19 657 711 -309 1 vs 2 0.159 0.69
> plot(augPred(fm2Dial.lme), grid = TRUE)
> anova(fm2Dial.lme)
numDF denDF F-value p-value
(Intercept) 1 112 553 <.0001
pressure 1 112 2329 <.0001
I(pressure^2) 1 112 1175 <.0001
I(pressure^3) 1 112 360 <.0001
I(pressure^4) 1 112 12 0.0006
QB 1 18 5 0.0414
pressure:QB 1 112 80 <.0001
I(pressure^2):QB 1 112 1 0.2476
I(pressure^3):QB 1 112 2 0.1370
I(pressure^4):QB 1 112 0 0.6839
> anova(fm2Dial.lme, Terms = 8:10)
F-test for: I(pressure^2):QB, I(pressure^3):QB, I(pressure^4):QB
numDF denDF F-value p-value
1 3 112 1.25 0.294
> options(contrasts = c("contr.treatment", "contr.poly"))
> fm1BW.lme <- lme(weight ~ Time * Diet, BodyWeight,
+ random = ~ Time)
> fm1BW.lme
Linear mixed-effects model fit by REML
Data: BodyWeight
Log-restricted-likelihood: -576
Fixed: weight ~ Time * Diet
(Intercept) Time Diet2 Diet3 Time:Diet2
251.652 0.360 200.665 252.072 0.606
Time:Diet3
0.298
Random effects:
Formula: ~Time | Rat
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 36.939 (Intr)
Time 0.248 -0.149
Residual 4.444
Number of Observations: 176
Number of Groups: 16
> fm2BW.lme <- update(fm1BW.lme, weights = varPower())
> fm2BW.lme
Linear mixed-effects model fit by REML
Data: BodyWeight
Log-restricted-likelihood: -571
Fixed: weight ~ Time * Diet
(Intercept) Time Diet2 Diet3 Time:Diet2
251.602 0.361 200.777 252.170 0.602
Time:Diet3
0.295
Random effects:
Formula: ~Time | Rat
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 36.898 (Intr)
Time 0.244 -0.145
Residual 0.175
Variance function:
Structure: Power of variance covariate
Formula: ~fitted(.)
Parameter estimates:
power
0.543
Number of Observations: 176
Number of Groups: 16
> anova(fm1BW.lme, fm2BW.lme)
Model df AIC BIC logLik Test L.Ratio p-value
fm1BW.lme 1 10 1172 1203 -576
fm2BW.lme 2 11 1164 1198 -571 1 vs 2 9.8 0.0017
> summary(fm2BW.lme)
Linear mixed-effects model fit by REML
Data: BodyWeight
AIC BIC logLik
1164 1198 -571
Random effects:
Formula: ~Time | Rat
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 36.898 (Intr)
Time 0.244 -0.145
Residual 0.175
Variance function:
Structure: Power of variance covariate
Formula: ~fitted(.)
Parameter estimates:
power
0.543
Fixed effects: weight ~ Time * Diet
Value Std.Error DF t-value p-value
(Intercept) 251.6 13.07 157 19.25 0.0000
Time 0.4 0.09 157 4.09 0.0001
Diet2 200.8 22.66 13 8.86 0.0000
Diet3 252.2 22.66 13 11.13 0.0000
Time:Diet2 0.6 0.16 157 3.87 0.0002
Time:Diet3 0.3 0.16 157 1.89 0.0601
Correlation:
(Intr) Time Diet2 Diet3 Tm:Dt2
Time -0.152
Diet2 -0.577 0.088
Diet3 -0.577 0.088 0.333
Time:Diet2 0.087 -0.569 -0.157 -0.050
Time:Diet3 0.086 -0.567 -0.050 -0.158 0.322
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.9374 -0.4439 0.0799 0.5808 2.2649
Number of Observations: 176
Number of Groups: 16
> anova(fm2BW.lme, L = c("Time:Diet2" = 1, "Time:Diet3" = -1))
F-test for linear combination(s)
Time:Diet2 Time:Diet3
1 -1
numDF denDF F-value p-value
1 1 157 2.86 0.0926
> cs1CompSymm <- corCompSymm(value = 0.3, form = ~ 1 | Subject)
> cs2CompSymm <- corCompSymm(value = 0.3, form = ~ age | Subject)
> cs1CompSymm <- Initialize(cs1CompSymm, data = Orthodont)
> corMatrix(cs1CompSymm)
$M01
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M02
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M03
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M04
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M05
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M06
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M07
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M08
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M09
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M10
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M11
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M12
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M13
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M14
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M15
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$M16
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F01
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F02
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F03
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F04
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F05
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F06
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F07
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F08
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F09
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F10
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
$F11
[,1] [,2] [,3] [,4]
[1,] 1.0 0.3 0.3 0.3
[2,] 0.3 1.0 0.3 0.3
[3,] 0.3 0.3 1.0 0.3
[4,] 0.3 0.3 0.3 1.0
> cs1Symm <- corSymm(value = c(0.2, 0.1, -0.1, 0, 0.2, 0),
+ form = ~ 1 | Subject)
> cs1Symm <- Initialize(cs1Symm, data = Orthodont)
> corMatrix(cs1Symm)
$M01
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M02
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M03
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M04
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M05
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M06
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M07
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M08
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M09
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M10
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M11
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M12
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M13
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M14
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M15
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$M16
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F01
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F02
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F03
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F04
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F05
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F06
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F07
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F08
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F09
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F10
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
$F11
[,1] [,2] [,3] [,4]
[1,] 1.0 2.00e-01 1.00e-01 -1.00e-01
[2,] 0.2 1.00e+00 9.02e-17 2.00e-01
[3,] 0.1 9.02e-17 1.00e+00 -1.04e-16
[4,] -0.1 2.00e-01 -1.04e-16 1.00e+00
> cs1AR1 <- corAR1(0.8, form = ~ 1 | Subject)
> cs1AR1 <- Initialize(cs1AR1, data = Orthodont)
> corMatrix(cs1AR1)
$M01
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M02
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M03
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M04
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M05
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M06
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M07
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M08
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M09
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M10
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M11
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M12
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M13
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M14
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M15
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$M16
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F01
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F02
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F03
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F04
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F05
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F06
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F07
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F08
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F09
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F10
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
$F11
[,1] [,2] [,3] [,4]
[1,] 1.000 0.80 0.64 0.512
[2,] 0.800 1.00 0.80 0.640
[3,] 0.640 0.80 1.00 0.800
[4,] 0.512 0.64 0.80 1.000
> cs1ARMA <- corARMA(0.4, form = ~ 1 | Subject, q = 1)
> cs1ARMA <- Initialize(cs1ARMA, data = Orthodont)
> corMatrix(cs1ARMA)
$M01
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M02
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M03
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M04
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M05
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M06
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M07
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M08
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M09
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M10
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M11
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M12
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M13
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M14
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M15
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$M16
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F01
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F02
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F03
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F04
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F05
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F06
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F07
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F08
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F09
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F10
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
$F11
[,1] [,2] [,3] [,4]
[1,] 1.000 0.345 0.000 0.000
[2,] 0.345 1.000 0.345 0.000
[3,] 0.000 0.345 1.000 0.345
[4,] 0.000 0.000 0.345 1.000
> cs2ARMA <- corARMA(c(0.8, 0.4), form = ~ 1 | Subject, p=1, q=1)
> cs2ARMA <- Initialize(cs2ARMA, data = Orthodont)
> corMatrix(cs2ARMA)
$M01
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M02
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M03
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M04
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M05
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M06
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M07
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M08
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M09
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M10
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M11
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M12
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M13
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M14
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M15
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$M16
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F01
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F02
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F03
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F04
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F05
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F06
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F07
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F08
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F09
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F10
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
$F11
[,1] [,2] [,3] [,4]
[1,] 1.000 0.880 0.704 0.563
[2,] 0.880 1.000 0.880 0.704
[3,] 0.704 0.880 1.000 0.880
[4,] 0.563 0.704 0.880 1.000
> spatDat <- data.frame(x = (0:4)/4, y = (0:4)/4)
> cs1Exp <- corExp(1, form = ~ x + y)
> cs1Exp <- Initialize(cs1Exp, spatDat)
> corMatrix(cs1Exp)
[,1] [,2] [,3] [,4] [,5]
[1,] 1.000 0.702 0.493 0.346 0.243
[2,] 0.702 1.000 0.702 0.493 0.346
[3,] 0.493 0.702 1.000 0.702 0.493
[4,] 0.346 0.493 0.702 1.000 0.702
[5,] 0.243 0.346 0.493 0.702 1.000
> cs2Exp <- corExp(1, form = ~ x + y, metric = "man")
> cs2Exp <- Initialize(cs2Exp, spatDat)
> corMatrix(cs2Exp)
[,1] [,2] [,3] [,4] [,5]
[1,] 1.000 0.607 0.368 0.223 0.135
[2,] 0.607 1.000 0.607 0.368 0.223
[3,] 0.368 0.607 1.000 0.607 0.368
[4,] 0.223 0.368 0.607 1.000 0.607
[5,] 0.135 0.223 0.368 0.607 1.000
> cs3Exp <- corExp(c(1, 0.2), form = ~ x + y, nugget = TRUE)
> cs3Exp <- Initialize(cs3Exp, spatDat)
> corMatrix(cs3Exp)
[,1] [,2] [,3] [,4] [,5]
[1,] 1.000 0.562 0.394 0.277 0.194
[2,] 0.562 1.000 0.562 0.394 0.277
[3,] 0.394 0.562 1.000 0.562 0.394
[4,] 0.277 0.394 0.562 1.000 0.562
[5,] 0.194 0.277 0.394 0.562 1.000
> fm1Ovar.lme <- lme(follicles ~ sin(2*pi*Time) + cos(2*pi*Time),
+ data = Ovary, random = pdDiag(~sin(2*pi*Time)))
> fm1Ovar.lme
Linear mixed-effects model fit by REML
Data: Ovary
Log-restricted-likelihood: -813
Fixed: follicles ~ sin(2 * pi * Time) + cos(2 * pi * Time)
(Intercept) sin(2 * pi * Time) cos(2 * pi * Time)
12.182 -3.299 -0.862
Random effects:
Formula: ~sin(2 * pi * Time) | Mare
Structure: Diagonal
(Intercept) sin(2 * pi * Time) Residual
StdDev: 3.05 2.08 3.11
Number of Observations: 308
Number of Groups: 11
> ACF(fm1Ovar.lme)
lag ACF
1 0 1.0000
2 1 0.3795
3 2 0.1797
4 3 0.0357
5 4 0.0598
6 5 0.0021
7 6 0.0643
8 7 0.0716
9 8 0.0486
10 9 0.0278
11 10 -0.0343
12 11 -0.0772
13 12 -0.1611
14 13 -0.1960
15 14 -0.2893
> plot(ACF(fm1Ovar.lme, maxLag = 10), alpha = 0.01)
> fm2Ovar.lme <- update(fm1Ovar.lme, correlation = corAR1())
> anova(fm1Ovar.lme, fm2Ovar.lme)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Ovar.lme 1 6 1638 1660 -813
fm2Ovar.lme 2 7 1563 1589 -775 1 vs 2 76.6 <.0001
> if (interactive()) intervals(fm2Ovar.lme)
> fm3Ovar.lme <- update(fm1Ovar.lme, correlation = corARMA(q = 2))
> fm3Ovar.lme
Linear mixed-effects model fit by REML
Data: Ovary
Log-restricted-likelihood: -778
Fixed: follicles ~ sin(2 * pi * Time) + cos(2 * pi * Time)
(Intercept) sin(2 * pi * Time) cos(2 * pi * Time)
12.194 -3.115 -0.869
Random effects:
Formula: ~sin(2 * pi * Time) | Mare
Structure: Diagonal
(Intercept) sin(2 * pi * Time) Residual
StdDev: 2.97 1.67 3.24
Correlation Structure: ARMA(0,2)
Formula: ~1 | Mare
Parameter estimate(s):
Theta1 Theta2
0.475 0.257
Number of Observations: 308
Number of Groups: 11
> anova(fm2Ovar.lme, fm3Ovar.lme, test = F)
Model df AIC BIC logLik
fm2Ovar.lme 1 7 1563 1589 -775
fm3Ovar.lme 2 8 1571 1601 -778
> fm4Ovar.lme <- update(fm1Ovar.lme,
+ correlation = corCAR1(form = ~Time))
> anova(fm2Ovar.lme, fm4Ovar.lme, test = F)
Model df AIC BIC logLik
fm2Ovar.lme 1 7 1563 1589 -775
fm4Ovar.lme 2 7 1566 1592 -776
> (fm5Ovar.lme <- update(fm1Ovar.lme,
+ corr = corARMA(p = 1, q = 1)))
Linear mixed-effects model fit by REML
Data: Ovary
Log-restricted-likelihood: -772
Fixed: follicles ~ sin(2 * pi * Time) + cos(2 * pi * Time)
(Intercept) sin(2 * pi * Time) cos(2 * pi * Time)
12.125 -2.920 -0.849
Random effects:
Formula: ~sin(2 * pi * Time) | Mare
Structure: Diagonal
(Intercept) sin(2 * pi * Time) Residual
StdDev: 2.61 1 3.73
Correlation Structure: ARMA(1,1)
Formula: ~1 | Mare
Parameter estimate(s):
Phi1 Theta1
0.787 -0.279
Number of Observations: 308
Number of Groups: 11
> anova(fm2Ovar.lme, fm5Ovar.lme)
Model df AIC BIC logLik Test L.Ratio p-value
fm2Ovar.lme 1 7 1563 1589 -775
fm5Ovar.lme 2 8 1560 1590 -772 1 vs 2 5.55 0.0184
> plot(ACF(fm5Ovar.lme, maxLag = 10, resType = "n"), alpha = 0.01)
> Variogram(fm2BW.lme, form = ~ Time)
variog dist n.pairs
1 0.345 1 16
2 0.993 6 16
3 0.762 7 144
4 0.685 8 16
5 0.682 13 16
6 0.951 14 128
7 0.900 15 16
8 1.694 20 16
9 1.125 21 112
10 1.088 22 16
11 0.897 28 96
12 0.932 29 16
13 0.851 35 80
14 0.755 36 16
15 1.082 42 64
16 1.567 43 16
17 0.644 49 48
18 0.674 56 32
19 0.587 63 16
> plot(Variogram(fm2BW.lme, form = ~ Time, maxDist = 42))
> fm3BW.lme <- update(fm2BW.lme,
+ correlation = corExp(form = ~ Time))
> ## IGNORE_RDIFF_BEGIN
> intervals(fm3BW.lme)
Approximate 95% confidence intervals
Fixed effects:
lower est. upper
(Intercept) 2.26e+02 251.487 277.336
Time 1.93e-01 0.363 0.532
Diet2 1.52e+02 200.786 249.841
Diet3 2.04e+02 252.590 301.667
Time:Diet2 3.22e-01 0.624 0.926
Time:Diet3 2.63e-03 0.307 0.610
Random Effects:
Level: Rat
lower est. upper
sd((Intercept)) 25.023 36.919 54.471
sd(Time) 0.147 0.233 0.368
cor((Intercept),Time) -0.637 -0.147 0.428
Correlation structure:
lower est. upper
range 2.46 4.89 9.7
Variance function:
lower est. upper
power 0.244 0.594 0.944
Within-group standard error:
lower est. upper
0.0181 0.1384 1.0593
> ## IGNORE_RDIFF_END
> anova(fm2BW.lme, fm3BW.lme)
Model df AIC BIC logLik Test L.Ratio p-value
fm2BW.lme 1 11 1164 1198 -571
fm3BW.lme 2 12 1145 1183 -561 1 vs 2 20.8 <.0001
> fm4BW.lme <-
+ update(fm3BW.lme, correlation = corExp(form = ~ Time,
+ nugget = TRUE))
> anova(fm3BW.lme, fm4BW.lme)
Model df AIC BIC logLik Test L.Ratio p-value
fm3BW.lme 1 12 1145 1183 -561
fm4BW.lme 2 13 1138 1178 -556 1 vs 2 9.5 0.0021
> plot(Variogram(fm3BW.lme, form = ~ Time, maxDist = 42))
> plot(Variogram(fm3BW.lme, form = ~ Time, maxDist = 42,
+ resType = "n", robust = TRUE))
> fm5BW.lme <- update(fm3BW.lme, correlation = corRatio(form = ~ Time))
> fm6BW.lme <- update(fm3BW.lme, correlation = corSpher(form = ~ Time))
> fm7BW.lme <- update(fm3BW.lme, correlation = corLin(form = ~ Time))
> fm8BW.lme <- update(fm3BW.lme, correlation = corGaus(form = ~ Time))
> anova(fm3BW.lme, fm5BW.lme, fm6BW.lme, fm7BW.lme, fm8BW.lme)
Model df AIC BIC logLik
fm3BW.lme 1 12 1145 1183 -561
fm5BW.lme 2 12 1149 1186 -562
fm6BW.lme 3 12 1151 1188 -563
fm7BW.lme 4 12 1151 1188 -563
fm8BW.lme 5 12 1151 1188 -563
> fm1Orth.gls <- gls(distance ~ Sex * I(age - 11), Orthodont,
+ correlation = corSymm(form = ~ 1 | Subject),
+ weights = varIdent(form = ~ 1 | age))
> fm1Orth.gls
Generalized least squares fit by REML
Model: distance ~ Sex * I(age - 11)
Data: Orthodont
Log-restricted-likelihood: -212
Coefficients:
(Intercept) SexFemale
24.937 -2.272
I(age - 11) SexFemale:I(age - 11)
0.827 -0.350
Correlation Structure: General
Formula: ~1 | Subject
Parameter estimate(s):
Correlation:
1 2 3
2 0.568
3 0.659 0.581
4 0.522 0.725 0.740
Variance function:
Structure: Different standard deviations per stratum
Formula: ~1 | age
Parameter estimates:
8 10 12 14
1.000 0.879 1.074 0.959
Degrees of freedom: 108 total; 104 residual
Residual standard error: 2.33
> ## IGNORE_RDIFF_BEGIN
> intervals(fm1Orth.gls)
Approximate 95% confidence intervals
Coefficients:
lower est. upper
(Intercept) 23.999 24.937 25.875
SexFemale -3.741 -2.272 -0.803
I(age - 11) 0.664 0.827 0.990
SexFemale:I(age - 11) -0.606 -0.350 -0.095
Correlation structure:
lower est. upper
cor(1,2) 0.253 0.568 0.774
cor(1,3) 0.385 0.659 0.826
cor(1,4) 0.184 0.522 0.749
cor(2,3) 0.272 0.581 0.781
cor(2,4) 0.481 0.725 0.865
cor(3,4) 0.512 0.740 0.870
Variance function:
lower est. upper
10 0.633 0.879 1.22
12 0.801 1.074 1.44
14 0.686 0.959 1.34
Residual standard error:
lower est. upper
1.77 2.33 3.07
> ## IGNORE_RDIFF_END
> fm2Orth.gls <-
+ update(fm1Orth.gls, corr = corCompSymm(form = ~ 1 | Subject))
> anova(fm1Orth.gls, fm2Orth.gls)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Orth.gls 1 14 453 490 -212
fm2Orth.gls 2 9 450 474 -216 1 vs 2 7.43 0.191
> intervals(fm2Orth.gls)
Approximate 95% confidence intervals
Coefficients:
lower est. upper
(Intercept) 23.930 24.868 25.8071
SexFemale -3.668 -2.197 -0.7266
I(age - 11) 0.642 0.794 0.9470
SexFemale:I(age - 11) -0.555 -0.316 -0.0763
Correlation structure:
lower est. upper
Rho 0.446 0.635 0.778
Variance function:
lower est. upper
10 0.638 0.862 1.17
12 0.771 1.034 1.39
14 0.683 0.920 1.24
Residual standard error:
lower est. upper
1.81 2.39 3.15
> fm3Orth.gls <- update(fm2Orth.gls, weights = NULL)
> anova(fm2Orth.gls, fm3Orth.gls)
Model df AIC BIC logLik Test L.Ratio p-value
fm2Orth.gls 1 9 450 474 -216
fm3Orth.gls 2 6 446 462 -217 1 vs 2 1.78 0.618
> plot(fm3Orth.gls, resid(., type = "n") ~ age | Sex)
> fm4Orth.gls <- update(fm3Orth.gls,
+ weights = varIdent(form = ~ 1 | Sex))
> anova(fm3Orth.gls, fm4Orth.gls)
Model df AIC BIC logLik Test L.Ratio p-value
fm3Orth.gls 1 6 446 462 -217
fm4Orth.gls 2 7 436 455 -211 1 vs 2 11.6 7e-04
> qqnorm(fm4Orth.gls, ~resid(., type = "n"))
> # not in book but needed for the following command
> fm3Orth.lme <-
+ lme(distance~Sex*I(age-11), data = Orthodont,
+ random = ~ I(age-11) | Subject,
+ weights = varIdent(form = ~ 1 | Sex))
> anova(fm3Orth.lme, fm4Orth.gls, test = FALSE)
Model df AIC BIC logLik
fm3Orth.lme 1 9 430 453 -206
fm4Orth.gls 2 7 436 455 -211
> fm1Dial.gls <-
+ gls(rate ~(pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB,
+ Dialyzer)
> plot(fm1Dial.gls, resid(.) ~ pressure, abline = 0)
> fm2Dial.gls <- update(fm1Dial.gls,
+ weights = varPower(form = ~ pressure))
> anova(fm1Dial.gls, fm2Dial.gls)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Dial.gls 1 11 761 793 -370
fm2Dial.gls 2 12 738 773 -357 1 vs 2 24.9 <.0001
> ACF(fm2Dial.gls, form = ~ 1 | Subject)
lag ACF
1 0 1.0000
2 1 0.7709
3 2 0.6323
4 3 0.4083
5 4 0.2007
6 5 0.0731
7 6 0.0778
> plot(ACF(fm2Dial.gls, form = ~ 1 | Subject), alpha = 0.01)
> (fm3Dial.gls <- update(fm2Dial.gls,
+ corr = corAR1(0.771, form = ~ 1 | Subject)))
Generalized least squares fit by REML
Model: rate ~ (pressure + I(pressure^2) + I(pressure^3) + I(pressure^4)) * QB
Data: Dialyzer
Log-restricted-likelihood: -308
Coefficients:
(Intercept) pressure I(pressure^2)
-16.818 92.334 -49.265
I(pressure^3) I(pressure^4) QB300
11.400 -1.020 -1.594
pressure:QB300 I(pressure^2):QB300 I(pressure^3):QB300
1.705 2.127 0.480
I(pressure^4):QB300
-0.221
Correlation Structure: AR(1)
Formula: ~1 | Subject
Parameter estimate(s):
Phi
0.753
Variance function:
Structure: Power of variance covariate
Formula: ~pressure
Parameter estimates:
power
0.518
Degrees of freedom: 140 total; 130 residual
Residual standard error: 3.05
> intervals(fm3Dial.gls)
Approximate 95% confidence intervals
Coefficients:
lower est. upper
(Intercept) -18.90 -16.818 -14.7401
pressure 81.91 92.334 102.7541
I(pressure^2) -63.10 -49.265 -35.4263
I(pressure^3) 4.56 11.400 18.2345
I(pressure^4) -2.12 -1.020 0.0856
QB300 -4.76 -1.594 1.5681
pressure:QB300 -13.64 1.705 17.0518
I(pressure^2):QB300 -17.95 2.127 22.2020
I(pressure^3):QB300 -9.35 0.480 10.3097
I(pressure^4):QB300 -1.80 -0.221 1.3608
Correlation structure:
lower est. upper
Phi 0.628 0.753 0.839
Variance function:
lower est. upper
power 0.381 0.518 0.656
Residual standard error:
lower est. upper
2.50 3.05 3.71
> anova(fm2Dial.gls, fm3Dial.gls)
Model df AIC BIC logLik Test L.Ratio p-value
fm2Dial.gls 1 12 738 773 -357
fm3Dial.gls 2 13 643 680 -308 1 vs 2 97.5 <.0001
> anova(fm3Dial.gls, fm2Dial.lme, test = FALSE)
Model df AIC BIC logLik
fm3Dial.gls 1 13 643 680 -308
fm2Dial.lme 2 18 655 707 -310
> fm1Wheat2 <- gls(yield ~ variety - 1, Wheat2)
> Variogram(fm1Wheat2, form = ~ latitude + longitude)
variog dist n.pairs
1 0.370 4.30 1143
2 0.396 5.61 1259
3 0.470 8.39 1263
4 0.508 9.32 1241
5 0.545 10.52 1242
6 0.640 12.75 1241
7 0.612 13.39 1283
8 0.657 14.76 1252
9 0.738 16.18 1221
10 0.728 17.37 1261
11 0.751 18.46 1288
12 0.875 20.24 1254
13 0.805 21.63 1256
14 0.871 22.67 1182
15 0.868 24.62 1257
16 0.859 26.24 1264
17 0.971 28.56 1235
18 0.993 30.79 1226
19 1.096 34.59 1263
20 1.341 39.36 1234
> plot(Variogram(fm1Wheat2, form = ~ latitude + longitude,
+ maxDist = 32), xlim = c(0,32))
> fm2Wheat2 <- update(fm1Wheat2, corr = corSpher(c(28, 0.2),
+ form = ~ latitude + longitude,
+ nugget = TRUE))
> fm2Wheat2
Generalized least squares fit by REML
Model: yield ~ variety - 1
Data: Wheat2
Log-restricted-likelihood: -534
Coefficients:
varietyARAPAHOE varietyBRULE varietyBUCKSKIN
26.7 25.8 34.8
varietyCENTURA varietyCENTURK78 varietyCHEYENNE
25.1 26.3 24.7
varietyCODY varietyCOLT varietyGAGE
22.5 25.2 24.3
varietyHOMESTEAD varietyKS831374 varietyLANCER
21.7 26.9 23.3
varietyLANCOTA varietyNE83404 varietyNE83406
21.3 24.0 25.3
varietyNE83407 varietyNE83432 varietyNE83498
25.2 21.8 28.7
varietyNE83T12 varietyNE84557 varietyNE85556
22.1 21.8 28.0
varietyNE85623 varietyNE86482 varietyNE86501
23.9 25.0 25.0
varietyNE86503 varietyNE86507 varietyNE86509
27.2 27.5 22.4
varietyNE86527 varietyNE86582 varietyNE86606
25.9 22.6 26.8
varietyNE86607 varietyNE86T666 varietyNE87403
25.9 16.8 21.5
varietyNE87408 varietyNE87409 varietyNE87446
24.3 26.3 22.2
varietyNE87451 varietyNE87457 varietyNE87463
24.2 23.5 23.2
varietyNE87499 varietyNE87512 varietyNE87513
22.2 22.6 21.8
varietyNE87522 varietyNE87612 varietyNE87613
19.5 27.4 27.6
varietyNE87615 varietyNE87619 varietyNE87627
23.8 28.5 18.5
varietyNORKAN varietyREDLAND varietyROUGHRIDER
22.1 28.0 25.7
varietySCOUT66 varietySIOUXLAND varietyTAM107
26.9 25.7 22.8
varietyTAM200 varietyVONA
18.8 24.8
Correlation Structure: Spherical spatial correlation
Formula: ~latitude + longitude
Parameter estimate(s):
range nugget
27.457 0.209
Degrees of freedom: 224 total; 168 residual
Residual standard error: 7.41
> fm3Wheat2 <- update(fm1Wheat2,
+ corr = corRatio(c(12.5, 0.2),
+ form = ~ latitude + longitude, nugget = TRUE))
> fm3Wheat2
Generalized least squares fit by REML
Model: yield ~ variety - 1
Data: Wheat2
Log-restricted-likelihood: -533
Coefficients:
varietyARAPAHOE varietyBRULE varietyBUCKSKIN
26.5 26.3 35.0
varietyCENTURA varietyCENTURK78 varietyCHEYENNE
24.9 26.7 24.4
varietyCODY varietyCOLT varietyGAGE
23.4 25.2 24.5
varietyHOMESTEAD varietyKS831374 varietyLANCER
21.5 26.5 23.0
varietyLANCOTA varietyNE83404 varietyNE83406
21.2 24.6 25.7
varietyNE83407 varietyNE83432 varietyNE83498
25.5 21.8 29.1
varietyNE83T12 varietyNE84557 varietyNE85556
21.6 21.3 27.9
varietyNE85623 varietyNE86482 varietyNE86501
23.7 24.4 24.9
varietyNE86503 varietyNE86507 varietyNE86509
27.3 27.4 22.2
varietyNE86527 varietyNE86582 varietyNE86606
25.0 23.3 27.3
varietyNE86607 varietyNE86T666 varietyNE87403
25.7 17.3 21.8
varietyNE87408 varietyNE87409 varietyNE87446
24.7 26.3 22.1
varietyNE87451 varietyNE87457 varietyNE87463
24.4 23.6 23.4
varietyNE87499 varietyNE87512 varietyNE87513
21.9 22.7 21.6
varietyNE87522 varietyNE87612 varietyNE87613
19.6 28.3 27.7
varietyNE87615 varietyNE87619 varietyNE87627
24.0 28.7 19.1
varietyNORKAN varietyREDLAND varietyROUGHRIDER
22.7 27.7 25.6
varietySCOUT66 varietySIOUXLAND varietyTAM107
26.3 25.7 22.5
varietyTAM200 varietyVONA
18.7 25.0
Correlation Structure: Rational quadratic spatial correlation
Formula: ~latitude + longitude
Parameter estimate(s):
range nugget
13.461 0.194
Degrees of freedom: 224 total; 168 residual
Residual standard error: 8.85
> anova(fm2Wheat2, fm3Wheat2)
Model df AIC BIC logLik
fm2Wheat2 1 59 1186 1370 -534
fm3Wheat2 2 59 1183 1368 -533
> anova(fm1Wheat2, fm3Wheat2)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Wheat2 1 57 1355 1533 -620
fm3Wheat2 2 59 1183 1368 -533 1 vs 2 176 <.0001
> plot(Variogram(fm3Wheat2, resType = "n"))
> plot(fm3Wheat2, resid(., type = "n") ~ fitted(.), abline = 0)
> qqnorm(fm3Wheat2, ~ resid(., type = "n"))
> fm4Wheat2 <- update(fm3Wheat2, model = yield ~ variety)
> anova(fm4Wheat2)
Denom. DF: 168
numDF F-value p-value
(Intercept) 1 30.40 <.0001
variety 55 1.85 0.0015
> anova(fm3Wheat2, L = c(-1, 0, 1))
Denom. DF: 168
F-test for linear combination(s)
varietyARAPAHOE varietyBUCKSKIN
-1 1
numDF F-value p-value
1 1 7.7 0.0062
> # cleanup
>
> summary(warnings())
No warnings
======
ch06.R
======
> #-*- R -*-
>
> # initialization
>
> library(nlme)
> options(width = 65,
+ ## reduce platform dependence in printed output when testing
+ digits = if(nzchar(Sys.getenv("R_TESTS"))) 3 else 5)
> options(contrasts = c(unordered = "contr.helmert", ordered = "contr.poly"))
> pdf(file = "ch06.pdf")
> # Chapter 6 Nonlinear Mixed-Effects Models:
> # Basic Concepts and Motivating Examples
>
> # 6.2 Indomethicin Kinetics
>
> plot(Indometh)
> fm1Indom.nls <- nls(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2),
+ data = Indometh)
> summary(fm1Indom.nls)
Formula: conc ~ SSbiexp(time, A1, lrc1, A2, lrc2)
Parameters:
Estimate Std. Error t value Pr(>|t|)
A1 2.773 0.253 10.95 4e-16 ***
lrc1 0.886 0.222 3.99 0.00018 ***
A2 0.607 0.267 2.27 0.02660 *
lrc2 -1.092 0.409 -2.67 0.00966 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.174 on 62 degrees of freedom
Number of iterations to convergence: 0
Achieved convergence tolerance: 3.3e-07
> plot(fm1Indom.nls, Subject ~ resid(.), abline = 0)
> (fm1Indom.lis <- nlsList(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2),
+ data = Indometh))
Call:
Model: conc ~ SSbiexp(time, A1, lrc1, A2, lrc2) | Subject
Data: Indometh
Coefficients:
A1 lrc1 A2 lrc2
1 2.03 0.579 0.192 -1.788
4 2.20 0.242 0.255 -1.603
2 2.83 0.801 0.499 -1.635
5 3.57 1.041 0.291 -1.507
6 3.00 1.088 0.969 -0.873
3 5.47 1.750 1.676 -0.412
Degrees of freedom: 66 total; 42 residual
Residual standard error: 0.0756
> plot(intervals(fm1Indom.lis))
> ## IGNORE_RDIFF_BEGIN
> (fm1Indom.nlme <- nlme(fm1Indom.lis,
+ random = pdDiag(A1 + lrc1 + A2 + lrc2 ~ 1),
+ control = list(tolerance = 0.0001)))
Nonlinear mixed-effects model fit by maximum likelihood
Model: conc ~ SSbiexp(time, A1, lrc1, A2, lrc2)
Data: Indometh
Log-likelihood: 54.6
Fixed: list(A1 ~ 1, lrc1 ~ 1, A2 ~ 1, lrc2 ~ 1)
A1 lrc1 A2 lrc2
2.828 0.774 0.461 -1.344
Random effects:
Formula: list(A1 ~ 1, lrc1 ~ 1, A2 ~ 1, lrc2 ~ 1)
Level: Subject
Structure: Diagonal
A1 lrc1 A2 lrc2 Residual
StdDev: 0.571 0.158 0.112 7.32e-06 0.0815
Number of Observations: 66
Number of Groups: 6
> ## IGNORE_RDIFF_END
> fm2Indom.nlme <- update(fm1Indom.nlme,
+ random = pdDiag(A1 + lrc1 + A2 ~ 1))
> anova(fm1Indom.nlme, fm2Indom.nlme)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Indom.nlme 1 9 -91.2 -71.5 54.6
fm2Indom.nlme 2 8 -93.2 -75.7 54.6 1 vs 2 0.00871 0.926
> (fm3Indom.nlme <- update(fm2Indom.nlme, random = A1+lrc1+A2 ~ 1))
Warning in (function (model, data = sys.frame(sys.parent()), fixed, random, :
Iteration 1, LME step: nlminb() did not converge (code = 1). Do increase 'msMaxIter'!
Nonlinear mixed-effects model fit by maximum likelihood
Model: conc ~ SSbiexp(time, A1, lrc1, A2, lrc2)
Data: Indometh
Log-likelihood: 58.5
Fixed: list(A1 ~ 1, lrc1 ~ 1, A2 ~ 1, lrc2 ~ 1)
A1 lrc1 A2 lrc2
2.815 0.829 0.561 -1.141
Random effects:
Formula: list(A1 ~ 1, lrc1 ~ 1, A2 ~ 1)
Level: Subject
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
A1 0.6904 A1 lrc1
lrc1 0.1790 0.932
A2 0.1537 0.471 0.118
Residual 0.0781
Number of Observations: 66
Number of Groups: 6
> fm4Indom.nlme <-
+ update(fm3Indom.nlme,
+ random = pdBlocked(list(A1 + lrc1 ~ 1, A2 ~ 1)))
> ## IGNORE_RDIFF_BEGIN
> anova(fm3Indom.nlme, fm4Indom.nlme)
Model df AIC BIC logLik Test L.Ratio p-value
fm3Indom.nlme 1 11 -94.9 -70.9 58.5
fm4Indom.nlme 2 9 -98.2 -78.4 58.1 1 vs 2 0.789 0.674
> ## IGNORE_RDIFF_END
> anova(fm2Indom.nlme, fm4Indom.nlme)
Model df AIC BIC logLik Test L.Ratio p-value
fm2Indom.nlme 1 8 -93.2 -75.7 54.6
fm4Indom.nlme 2 9 -98.2 -78.4 58.1 1 vs 2 6.97 0.0083
> plot(fm4Indom.nlme, id = 0.05, adj = -1)
> qqnorm(fm4Indom.nlme)
> plot(augPred(fm4Indom.nlme, level = 0:1))
> summary(fm4Indom.nlme)
Nonlinear mixed-effects model fit by maximum likelihood
Model: conc ~ SSbiexp(time, A1, lrc1, A2, lrc2)
Data: Indometh
AIC BIC logLik
-98.2 -78.4 58.1
Random effects:
Composite Structure: Blocked
Block 1: A1, lrc1
Formula: list(A1 ~ 1, lrc1 ~ 1)
Level: Subject
Structure: General positive-definite
StdDev Corr
A1 0.720 A1
lrc1 0.149 1
Block 2: A2
Formula: A2 ~ 1 | Subject
A2 Residual
StdDev: 0.213 0.0782
Fixed effects: list(A1 ~ 1, lrc1 ~ 1, A2 ~ 1, lrc2 ~ 1)
Value Std.Error DF t-value p-value
A1 2.783 0.327 57 8.51 0
lrc1 0.898 0.111 57 8.11 0
A2 0.658 0.143 57 4.61 0
lrc2 -1.000 0.150 57 -6.67 0
Correlation:
A1 lrc1 A2
lrc1 0.602
A2 -0.058 0.556
lrc2 -0.109 0.570 0.702
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-3.459 -0.437 0.110 0.504 3.057
Number of Observations: 66
Number of Groups: 6
> # 6.3 Growth of Soybean Plants
>
> head(Soybean)
Grouped Data: weight ~ Time | Plot
Plot Variety Year Time weight
1 1988F1 F 1988 14 0.106
2 1988F1 F 1988 21 0.261
3 1988F1 F 1988 28 0.666
4 1988F1 F 1988 35 2.110
5 1988F1 F 1988 42 3.560
6 1988F1 F 1988 49 6.230
> plot(Soybean, outer = ~ Year * Variety)
> (fm1Soy.lis <- nlsList(weight ~ SSlogis(Time, Asym, xmid, scal),
+ data = Soybean,
+ ## in R >= 3.4.3, more iterations are needed for "1989P5"
+ ## due to a change of initial values in SSlogis();
+ ## control is passed to getInitial() only since R 4.1.0
+ control = list(maxiter = 60)))
Warning: 1 error caught in nls(y ~ 1/(1 + exp((xmid - x)/scal)), data = xy, start = list(xmid = aux[[1L]], scal = aux[[2L]]), algorithm = "plinear", ...): step factor 0.000488281 reduced below 'minFactor' of 0.000976562
Call:
Model: weight ~ SSlogis(Time, Asym, xmid, scal) | Plot
Data: Soybean
Coefficients:
Asym xmid scal
1988F4 15.15 52.8 5.18
1988F2 19.75 56.6 8.41
1988F1 20.34 57.4 9.60
1988F7 19.87 56.2 8.07
1988F5 30.65 64.1 11.26
1988F8 22.78 59.3 9.00
1988F6 23.29 59.6 9.72
1988F3 23.70 56.4 7.64
1988P1 17.30 48.8 6.36
1988P5 17.70 51.3 6.81
1988P4 24.01 57.8 11.74
1988P8 28.25 63.0 10.95
1988P7 27.49 61.5 10.18
1988P3 24.94 56.3 8.32
1988P2 36.66 66.6 11.92
1988P6 163.70 105.0 17.93
1989F6 8.51 55.3 8.86
1989F5 9.67 51.3 7.21
1989F4 11.25 53.8 6.49
1989F1 11.25 56.6 6.07
1989F2 11.23 52.2 7.02
1989F7 10.07 51.4 5.50
1989F8 10.61 48.0 5.96
1989F3 18.42 66.1 9.22
1989P7 15.47 46.3 5.39
1989P4 18.18 57.2 8.40
1989P6 20.50 58.2 10.61
1989P5 17.89 54.1 6.05
1989P1 21.68 59.7 9.97
1989P3 22.28 53.4 7.90
1989P2 28.30 67.2 12.52
1989P8 NA NA NA
1990F2 19.46 66.3 13.16
1990F3 19.87 58.3 12.80
1990F4 27.44 70.3 14.56
1990F5 18.72 51.3 7.76
1990F1 19.79 55.7 9.62
1990F8 20.29 55.5 7.77
1990F7 19.84 54.7 6.79
1990F6 21.20 54.6 9.26
1990P8 18.51 52.4 8.58
1990P7 19.16 54.8 10.85
1990P3 19.20 49.7 9.32
1990P1 18.45 47.9 6.61
1990P6 17.69 50.2 6.63
1990P5 19.54 51.2 7.29
1990P2 25.79 62.4 11.66
1990P4 26.13 61.2 10.97
Degrees of freedom: 404 total; 263 residual
Residual standard error: 1.04
> ## IGNORE_RDIFF_BEGIN
> (fm1Soy.nlme <- nlme(fm1Soy.lis))
Nonlinear mixed-effects model fit by maximum likelihood
Model: weight ~ SSlogis(Time, Asym, xmid, scal)
Data: Soybean
Log-likelihood: -740
Fixed: list(Asym ~ 1, xmid ~ 1, scal ~ 1)
Asym xmid scal
19.3 55.0 8.4
Random effects:
Formula: list(Asym ~ 1, xmid ~ 1, scal ~ 1)
Level: Plot
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
Asym 5.20 Asym xmid
xmid 4.20 0.721
scal 1.40 0.711 0.959
Residual 1.12
Number of Observations: 412
Number of Groups: 48
> ## IGNORE_RDIFF_END
> fm2Soy.nlme <- update(fm1Soy.nlme, weights = varPower())
Warning in (function (model, data = sys.frame(sys.parent()), fixed, random, :
Iteration 1, LME step: nlminb() did not converge (code = 1). Do increase 'msMaxIter'!
Warning in (function (model, data = sys.frame(sys.parent()), fixed, random, :
Iteration 6, LME step: nlminb() did not converge (code = 1). PORT message: false convergence (8)
> anova(fm1Soy.nlme, fm2Soy.nlme)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Soy.nlme 1 10 1500 1540 -740
fm2Soy.nlme 2 11 746 790 -362 1 vs 2 756 <.0001
> plot(ranef(fm2Soy.nlme, augFrame = TRUE),
+ form = ~ Year * Variety, layout = c(3,1))
> soyFix <- fixef(fm2Soy.nlme)
> options(contrasts = c("contr.treatment", "contr.poly"))
> ## IGNORE_RDIFF_BEGIN
> (fm3Soy.nlme <-
+ update(fm2Soy.nlme,
+ fixed = Asym + xmid + scal ~ Year,
+ start = c(soyFix[1], 0, 0, soyFix[2], 0, 0, soyFix[3], 0, 0)))
Warning in (function (model, data = sys.frame(sys.parent()), fixed, random, :
Iteration 1, LME step: nlminb() did not converge (code = 1). Do increase 'msMaxIter'!
Warning in (function (model, data = sys.frame(sys.parent()), fixed, random, :
Iteration 6, LME step: nlminb() did not converge (code = 1). PORT message: false convergence (8)
Nonlinear mixed-effects model fit by maximum likelihood
Model: weight ~ SSlogis(Time, Asym, xmid, scal)
Data: Soybean
Log-likelihood: -326
Fixed: Asym + xmid + scal ~ Year
Asym.(Intercept) Asym.Year1989 Asym.Year1990
20.208 -6.303 -3.465
xmid.(Intercept) xmid.Year1989 xmid.Year1990
54.099 -2.480 -4.848
scal.(Intercept) scal.Year1989 scal.Year1990
8.051 -0.932 -0.662
Random effects:
Formula: list(Asym ~ 1, xmid ~ 1, scal ~ 1)
Level: Plot
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
Asym.(Intercept) 2.71e+00 As.(I) xm.(I)
xmid.(Intercept) 8.34e-12 0.992
scal.(Intercept) 1.08e-01 0.999 0.993
Residual 2.16e-01
Variance function:
Structure: Power of variance covariate
Formula: ~fitted(.)
Parameter estimates:
power
0.95
Number of Observations: 412
Number of Groups: 48
> ## IGNORE_RDIFF_END
> anova(fm3Soy.nlme)
numDF denDF F-value p-value
Asym.(Intercept) 1 356 2057 <.0001
Asym.Year 2 356 103 <.0001
xmid.(Intercept) 1 356 11420 <.0001
xmid.Year 2 356 9 1e-04
scal.(Intercept) 1 356 7967 <.0001
scal.Year 2 356 11 <.0001
> # The following line is not in the book but needed to fit the model
> fm4Soy.nlme <-
+ nlme(weight ~ SSlogis(Time, Asym, xmid, scal),
+ data = Soybean,
+ fixed = list(Asym ~ Year*Variety, xmid ~ Year + Variety, scal ~ Year),
+ random = Asym ~ 1,
+ start = c(17, 0, 0, 0, 0, 0, 52, 0, 0, 0, 7.5, 0, 0),
+ weights = varPower(0.95), control = list(verbose = TRUE))
> # FIXME: An update doesn't work for the fixed argument when fixed is a list
> ## p. 293-4 :
> summary(fm4Soy.nlme)
Nonlinear mixed-effects model fit by maximum likelihood
Model: weight ~ SSlogis(Time, Asym, xmid, scal)
Data: Soybean
AIC BIC logLik
616 681 -292
Random effects:
Formula: Asym ~ 1 | Plot
Asym.(Intercept) Residual
StdDev: 1.04 0.218
Variance function:
Structure: Power of variance covariate
Formula: ~fitted(.)
Parameter estimates:
power
0.943
Fixed effects: list(Asym ~ Year * Variety, xmid ~ Year + Variety, scal ~ Year)
Value Std.Error DF t-value p-value
Asym.(Intercept) 19.4 0.954 352 20.4 0.0000
Asym.Year1989 -8.8 1.072 352 -8.2 0.0000
Asym.Year1990 -3.7 1.177 352 -3.1 0.0018
Asym.VarietyP 1.6 1.038 352 1.6 0.1189
Asym.Year1989:VarietyP 5.6 1.171 352 4.8 0.0000
Asym.Year1990:VarietyP 0.1 1.176 352 0.1 0.9004
xmid.(Intercept) 54.8 0.755 352 72.6 0.0000
xmid.Year1989 -2.2 0.972 352 -2.3 0.0218
xmid.Year1990 -5.0 0.974 352 -5.1 0.0000
xmid.VarietyP -1.3 0.414 352 -3.1 0.0019
scal.(Intercept) 8.1 0.147 352 54.8 0.0000
scal.Year1989 -0.9 0.201 352 -4.4 0.0000
scal.Year1990 -0.7 0.212 352 -3.2 0.0016
Correlation:
As.(I) As.Y1989 As.Y1990 Asy.VP A.Y1989:
Asym.Year1989 -0.831
Asym.Year1990 -0.736 0.646
Asym.VarietyP -0.532 0.374 0.304
Asym.Year1989:VarietyP 0.339 -0.403 -0.249 -0.662
Asym.Year1990:VarietyP 0.318 -0.273 -0.447 -0.627 0.533
xmid.(Intercept) 0.729 -0.595 -0.523 -0.144 0.007
xmid.Year1989 -0.488 0.603 0.394 -0.021 0.133
xmid.Year1990 -0.489 0.433 0.661 -0.016 0.020
xmid.VarietyP -0.337 0.127 0.052 0.572 -0.114
scal.(Intercept) 0.432 -0.381 -0.345 0.023 -0.029
scal.Year1989 -0.311 0.369 0.252 -0.025 0.090
scal.Year1990 -0.296 0.263 0.398 -0.023 0.022
A.Y1990: xm.(I) x.Y198 x.Y199 xmd.VP
Asym.Year1989
Asym.Year1990
Asym.VarietyP
Asym.Year1989:VarietyP
Asym.Year1990:VarietyP
xmid.(Intercept) -0.011
xmid.Year1989 0.021 -0.705
xmid.Year1990 0.054 -0.706 0.545
xmid.VarietyP -0.057 -0.308 0.006 0.015
scal.(Intercept) -0.031 0.817 -0.629 -0.628 -0.022
scal.Year1989 0.023 -0.593 0.855 0.459 0.002
scal.Year1990 0.048 -0.563 0.437 0.840 0.004
sc.(I) s.Y198
Asym.Year1989
Asym.Year1990
Asym.VarietyP
Asym.Year1989:VarietyP
Asym.Year1990:VarietyP
xmid.(Intercept)
xmid.Year1989
xmid.Year1990
xmid.VarietyP
scal.(Intercept)
scal.Year1989 -0.731
scal.Year1990 -0.694 0.507
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.628 -0.608 -0.124 0.570 3.919
Number of Observations: 412
Number of Groups: 48
> plot(augPred(fm4Soy.nlme))# Fig 6.14, p. 295
> # 6.4 Clinical Study of Phenobarbital Kinetics
>
> (fm1Pheno.nlme <-
+ nlme(conc ~ phenoModel(Subject, time, dose, lCl, lV),
+ data = Phenobarb, fixed = lCl + lV ~ 1,
+ random = pdDiag(lCl + lV ~ 1), start = c(-5, 0),
+ na.action = NULL, naPattern = ~ !is.na(conc)))
Nonlinear mixed-effects model fit by maximum likelihood
Model: conc ~ phenoModel(Subject, time, dose, lCl, lV)
Data: Phenobarb
Log-likelihood: -505
Fixed: lCl + lV ~ 1
lCl lV
-5.093 0.343
Random effects:
Formula: list(lCl ~ 1, lV ~ 1)
Level: Subject
Structure: Diagonal
lCl lV Residual
StdDev: 0.44 0.45 2.79
Number of Observations: 155
Number of Groups: 59
> fm1Pheno.ranef <- ranef(fm1Pheno.nlme, augFrame = TRUE)
> # (These plots used to encounter difficulties, now fine):
> plot(fm1Pheno.ranef, form = lCl ~ Wt + ApgarInd)
> plot(fm1Pheno.ranef, form = lV ~ Wt + ApgarInd)
> options(contrasts = c("contr.treatment", "contr.poly"))
> if(FALSE)## This fit just "ping-pongs" until max.iterations error
+ fm2Pheno.nlme <-
+ update(fm1Pheno.nlme,
+ fixed = list(lCl ~ Wt, lV ~ Wt + ApgarInd),
+ start = c(-5.0935, 0, 0.34259, 0, 0),
+ control = list(pnlsTol = 1e-4, maxIter = 500,
+ msVerbose = TRUE, opt = "nlm"))
> ##summary(fm2Pheno.nlme)
> ##fm3Pheno.nlme <-
> ## update(fm2Pheno.nlme,
> ## fixed = lCl + lV ~ Wt,
> ## start = fixef(fm2Pheno.nlme)[-5])
> ##plot(fm3Pheno.nlme, conc ~ fitted(.), abline = c(0,1))
>
> # cleanup
>
> summary(warnings())
No warnings
======
ch08.R
======
> #-*- R -*-
>
> # initialization
>
> library(nlme)
> library(lattice)
> options(width = 65,
+ ## reduce platform dependence in printed output when testing
+ digits = if(nzchar(Sys.getenv("R_TESTS"))) 3 else 5)
> options(contrasts = c(unordered = "contr.helmert", ordered = "contr.poly"))
> pdf(file = "ch08.pdf")
> # Chapter 8 Fitting Nonlinear Mixed-Effects Models
>
> # 8.1 Fitting Nonlinear Models in S with nls and nlsList
>
> ## outer = ~1 is used to display all five curves in one panel
> plot(Orange, outer = ~1)
> logist <-
+ function(x, Asym, xmid, scal) Asym/(1 + exp(-(x - xmid)/scal))
> logist <- deriv(~Asym/(1+exp(-(x-xmid)/scal)),
+ c("Asym", "xmid", "scal"), function(x, Asym, xmid, scal){})
> Asym <- 180; xmid <- 700; scal <- 300
> logist(Orange$age[1:7], Asym, xmid, scal)
[1] 22.6 58.9 84.6 132.1 153.8 162.7 171.0
attr(,"gradient")
Asym xmid scal
[1,] 0.126 -0.0659 0.1279
[2,] 0.327 -0.1321 0.0951
[3,] 0.470 -0.1495 0.0179
[4,] 0.734 -0.1172 -0.1188
[5,] 0.854 -0.0746 -0.1321
[6,] 0.904 -0.0522 -0.1169
[7,] 0.950 -0.0286 -0.0841
> fm1Oran.nls <- nls(circumference ~ logist(age, Asym, xmid, scal),
+ data = Orange, start = c(Asym = 170, xmid = 700, scal = 500))
> summary(fm1Oran.nls)
Formula: circumference ~ logist(age, Asym, xmid, scal)
Parameters:
Estimate Std. Error t value Pr(>|t|)
Asym 192.7 20.2 9.52 7.5e-11 ***
xmid 728.8 107.3 6.79 1.1e-07 ***
scal 353.5 81.5 4.34 0.00013 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 23.4 on 32 degrees of freedom
Number of iterations to convergence: 5
Achieved convergence tolerance: 4.39e-06
> plot(fm1Oran.nls)
> plot(fm1Oran.nls, Tree ~ resid(.), abline = 0)
> Orange.sortAvg <- sortedXyData("age", "circumference", Orange)
> Orange.sortAvg
x y
1 118 31.0
2 484 57.8
3 664 93.2
4 1004 134.2
5 1231 145.6
6 1372 173.4
7 1582 175.8
> NLSstClosestX(Orange.sortAvg, 130)
[1] 969
> logistInit <- function(mCall, LHS, data) {
+ xy <- sortedXyData(mCall[["x"]], LHS, data)
+ if(nrow(xy) < 3) {
+ stop("Too few distinct input values to fit a logistic")
+ }
+ Asym <- max(abs(xy[,"y"]))
+ if (Asym != max(xy[,"y"])) Asym <- -Asym # negative asymptote
+ xmid <- NLSstClosestX(xy, 0.5 * Asym)
+ scal <- NLSstClosestX(xy, 0.75 * Asym) - xmid
+ value <- c(Asym, xmid, scal)
+ names(value) <- mCall[c("Asym", "xmid", "scal")]
+ value
+ }
> logist <- selfStart(logist, initial = logistInit)
> class(logist)
[1] "selfStart"
> logist <- selfStart(~ Asym/(1 + exp(-(x - xmid)/scal)),
+ initial = logistInit, parameters = c("Asym", "xmid", "scal"))
> getInitial(circumference ~ logist(age, Asym, xmid, scal), Orange)
Warning in getInitial.selfStart(func, data, mCall = as.list(match.call(func, :
selfStart initializing functions should have a final '...' argument since R 4.1.0
Asym xmid scal
176 637 347
> nls(circumference ~ logist(age, Asym, xmid, scal), Orange)
Warning in getInitial.selfStart(func, data, mCall = as.list(match.call(func, :
selfStart initializing functions should have a final '...' argument since R 4.1.0
Nonlinear regression model
model: circumference ~ logist(age, Asym, xmid, scal)
data: Orange
Asym xmid scal
193 729 354
residual sum-of-squares: 17480
Number of iterations to convergence: 4
Achieved convergence tolerance: 8.63e-07
> getInitial(circumference ~ SSlogis(age,Asym,xmid,scal), Orange)
Asym xmid scal
193 729 354
> nls(circumference ~ SSlogis(age, Asym, xmid, scal), Orange)
Nonlinear regression model
model: circumference ~ SSlogis(age, Asym, xmid, scal)
data: Orange
Asym xmid scal
193 729 354
residual sum-of-squares: 17480
Number of iterations to convergence: 0
Achieved convergence tolerance: 2.2e-06
> fm1Oran.lis <-
+ nlsList(circumference ~ SSlogis(age, Asym, xmid, scal) | Tree,
+ data = Orange)
> fm1Oran.lis <- nlsList(SSlogis, Orange)
> fm1Oran.lis.noSS <-
+ nlsList(circumference ~ Asym/(1+exp(-(age-xmid)/scal)),
+ data = Orange,
+ start = c(Asym = 170, xmid = 700, scal = 500))
> fm1Oran.lis
Call:
Model: circumference ~ SSlogis(age, Asym, xmid, scal) | Tree
Data: Orange
Coefficients:
Asym xmid scal
3 159 735 401
1 154 627 363
5 207 861 380
2 219 700 332
4 225 711 303
Degrees of freedom: 35 total; 20 residual
Residual standard error: 7.98
> summary(fm1Oran.lis)
Call:
Model: circumference ~ SSlogis(age, Asym, xmid, scal) | Tree
Data: Orange
Coefficients:
Asym
Estimate Std. Error t value Pr(>|t|)
3 159 19.2 8.26 0.000460
1 154 13.6 11.34 0.000169
5 207 22.0 9.41 0.000738
2 219 13.4 16.39 0.000105
4 225 11.8 19.03 0.000104
xmid
Estimate Std. Error t value Pr(>|t|)
3 735 130.8 5.62 0.002011
1 627 92.9 6.75 0.001263
5 861 108.0 7.98 0.001389
2 700 61.4 11.42 0.000435
4 711 51.2 13.89 0.000358
scal
Estimate Std. Error t value Pr(>|t|)
3 401 94.8 4.23 0.00571
1 363 81.2 4.46 0.00586
5 380 66.8 5.69 0.00487
2 332 49.4 6.73 0.00324
4 303 41.6 7.29 0.00415
Residual standard error: 7.98 on 20 degrees of freedom
> plot(intervals(fm1Oran.lis), layout = c(3,1))
> plot(fm1Oran.lis, Tree ~ resid(.), abline = 0)
> Theoph[1:4,]
Grouped Data: conc ~ Time | Subject
Subject Wt Dose Time conc
1 1 79.6 4.02 0.00 0.74
2 1 79.6 4.02 0.25 2.84
3 1 79.6 4.02 0.57 6.57
4 1 79.6 4.02 1.12 10.50
> fm1Theo.lis <- nlsList(conc ~ SSfol(Dose, Time, lKe, lKa, lCl),
+ data = Theoph)
> fm1Theo.lis
Call:
Model: conc ~ SSfol(Dose, Time, lKe, lKa, lCl) | Subject
Data: Theoph
Coefficients:
lKe lKa lCl
6 -2.31 0.152 -2.97
7 -2.28 -0.386 -2.96
8 -2.39 0.319 -3.07
11 -2.32 1.348 -2.86
3 -2.51 0.898 -3.23
2 -2.29 0.664 -3.11
4 -2.44 0.158 -3.29
9 -2.45 2.182 -3.42
12 -2.25 -0.183 -3.17
10 -2.60 -0.363 -3.43
1 -2.92 0.575 -3.92
5 -2.43 0.386 -3.13
Degrees of freedom: 132 total; 96 residual
Residual standard error: 0.7
> plot(intervals(fm1Theo.lis), layout = c(3,1))
> pairs(fm1Theo.lis, id = 0.1)
> # 8.2 Fitting Nonlinear Mixed-Effects Models with nlme
>
> ## no need to specify groups, as Orange is a groupedData object
> ## random is omitted - by default it is equal to fixed
> (fm1Oran.nlme <-
+ nlme(circumference ~ SSlogis(age, Asym, xmid, scal),
+ data = Orange,
+ fixed = Asym + xmid + scal ~ 1,
+ start = fixef(fm1Oran.lis)))
Warning in nlme.formula(circumference ~ SSlogis(age, Asym, xmid, scal), :
Iteration 1, LME step: nlminb() did not converge (code = 1). Do increase 'msMaxIter'!
Nonlinear mixed-effects model fit by maximum likelihood
Model: circumference ~ SSlogis(age, Asym, xmid, scal)
Data: Orange
Log-likelihood: -130
Fixed: Asym + xmid + scal ~ 1
Asym xmid scal
192 728 357
Random effects:
Formula: list(Asym ~ 1, xmid ~ 1, scal ~ 1)
Level: Tree
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
Asym 27.05 Asym xmid
xmid 24.25 -0.328
scal 36.60 -0.992 0.443
Residual 7.32
Number of Observations: 35
Number of Groups: 5
> summary(fm1Oran.nlme)
Nonlinear mixed-effects model fit by maximum likelihood
Model: circumference ~ SSlogis(age, Asym, xmid, scal)
Data: Orange
AIC BIC logLik
280 296 -130
Random effects:
Formula: list(Asym ~ 1, xmid ~ 1, scal ~ 1)
Level: Tree
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
Asym 27.05 Asym xmid
xmid 24.25 -0.328
scal 36.60 -0.992 0.443
Residual 7.32
Fixed effects: Asym + xmid + scal ~ 1
Value Std.Error DF t-value p-value
Asym 192 14.1 28 13.7 0
xmid 728 34.6 28 21.0 0
scal 357 30.5 28 11.7 0
Correlation:
Asym xmid
xmid 0.277
scal -0.193 0.665
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.819 -0.522 0.174 0.518 1.645
Number of Observations: 35
Number of Groups: 5
> summary(fm1Oran.nls)
Formula: circumference ~ logist(age, Asym, xmid, scal)
Parameters:
Estimate Std. Error t value Pr(>|t|)
Asym 192.7 20.2 9.52 7.5e-11 ***
xmid 728.8 107.3 6.79 1.1e-07 ***
scal 353.5 81.5 4.34 0.00013 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 23.4 on 32 degrees of freedom
Number of iterations to convergence: 5
Achieved convergence tolerance: 4.39e-06
> pairs(fm1Oran.nlme)
> fm2Oran.nlme <- update(fm1Oran.nlme, random = Asym ~ 1)
> anova(fm1Oran.nlme, fm2Oran.nlme)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Oran.nlme 1 10 280 296 -130
fm2Oran.nlme 2 5 273 281 -132 1 vs 2 3.19 0.671
> plot(fm1Oran.nlme)
> ## level = 0:1 requests fixed (0) and within-group (1) predictions
> plot(augPred(fm2Oran.nlme, level = 0:1),
+ layout = c(5,1))
> qqnorm(fm2Oran.nlme, abline = c(0,1))
> (fm1Theo.nlme <- nlme(fm1Theo.lis))
Warning in (function (model, data = sys.frame(sys.parent()), fixed, random, :
Iteration 2, LME step: nlminb() did not converge (code = 1). Do increase 'msMaxIter'!
Nonlinear mixed-effects model fit by maximum likelihood
Model: conc ~ SSfol(Dose, Time, lKe, lKa, lCl)
Data: Theoph
Log-likelihood: -173
Fixed: list(lKe ~ 1, lKa ~ 1, lCl ~ 1)
lKe lKa lCl
-2.433 0.451 -3.214
Random effects:
Formula: list(lKe ~ 1, lKa ~ 1, lCl ~ 1)
Level: Subject
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
lKe 0.131 lKe lKa
lKa 0.638 0.012
lCl 0.251 0.995 -0.089
Residual 0.682
Number of Observations: 132
Number of Groups: 12
> ## IGNORE_RDIFF_BEGIN
> try( intervals(fm1Theo.nlme, which="var-cov") ) ## could fail: Non-positive definite...
Approximate 95% confidence intervals
Random Effects:
Level: Subject
lower est. upper
sd(lKe) 0.0574 0.1310 0.299
sd(lKa) 0.3845 0.6378 1.058
sd(lCl) 0.1557 0.2512 0.405
cor(lKe,lKa) -0.9302 0.0116 0.933
cor(lKe,lCl) -0.9950 0.9948 1.000
cor(lKa,lCl) -0.7711 -0.0892 0.688
Within-group standard error:
lower est. upper
0.596 0.682 0.780
> ## IGNORE_RDIFF_END
> (fm2Theo.nlme <- update(fm1Theo.nlme,
+ random = pdDiag(lKe + lKa + lCl ~ 1)))
Nonlinear mixed-effects model fit by maximum likelihood
Model: conc ~ SSfol(Dose, Time, lKe, lKa, lCl)
Data: Theoph
Log-likelihood: -177
Fixed: list(lKe ~ 1, lKa ~ 1, lCl ~ 1)
lKe lKa lCl
-2.455 0.466 -3.227
Random effects:
Formula: list(lKe ~ 1, lKa ~ 1, lCl ~ 1)
Level: Subject
Structure: Diagonal
lKe lKa lCl Residual
StdDev: 1.93e-05 0.644 0.167 0.709
Number of Observations: 132
Number of Groups: 12
> fm3Theo.nlme <-
+ update(fm2Theo.nlme, random = pdDiag(lKa + lCl ~ 1))
> anova(fm1Theo.nlme, fm3Theo.nlme, fm2Theo.nlme)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Theo.nlme 1 10 367 395 -173
fm3Theo.nlme 2 6 366 383 -177 1 vs 2 7.4 0.116
fm2Theo.nlme 3 7 368 388 -177 2 vs 3 0.0 0.949
> plot(fm3Theo.nlme)
> qqnorm(fm3Theo.nlme, ~ ranef(.))
> CO2
Grouped Data: uptake ~ conc | Plant
Plant Type Treatment conc uptake
1 Qn1 Quebec nonchilled 95 16.0
2 Qn1 Quebec nonchilled 175 30.4
3 Qn1 Quebec nonchilled 250 34.8
4 Qn1 Quebec nonchilled 350 37.2
5 Qn1 Quebec nonchilled 500 35.3
6 Qn1 Quebec nonchilled 675 39.2
7 Qn1 Quebec nonchilled 1000 39.7
8 Qn2 Quebec nonchilled 95 13.6
9 Qn2 Quebec nonchilled 175 27.3
10 Qn2 Quebec nonchilled 250 37.1
11 Qn2 Quebec nonchilled 350 41.8
12 Qn2 Quebec nonchilled 500 40.6
13 Qn2 Quebec nonchilled 675 41.4
14 Qn2 Quebec nonchilled 1000 44.3
15 Qn3 Quebec nonchilled 95 16.2
16 Qn3 Quebec nonchilled 175 32.4
17 Qn3 Quebec nonchilled 250 40.3
18 Qn3 Quebec nonchilled 350 42.1
19 Qn3 Quebec nonchilled 500 42.9
20 Qn3 Quebec nonchilled 675 43.9
21 Qn3 Quebec nonchilled 1000 45.5
22 Qc1 Quebec chilled 95 14.2
23 Qc1 Quebec chilled 175 24.1
24 Qc1 Quebec chilled 250 30.3
25 Qc1 Quebec chilled 350 34.6
26 Qc1 Quebec chilled 500 32.5
27 Qc1 Quebec chilled 675 35.4
28 Qc1 Quebec chilled 1000 38.7
29 Qc2 Quebec chilled 95 9.3
30 Qc2 Quebec chilled 175 27.3
31 Qc2 Quebec chilled 250 35.0
32 Qc2 Quebec chilled 350 38.8
33 Qc2 Quebec chilled 500 38.6
34 Qc2 Quebec chilled 675 37.5
35 Qc2 Quebec chilled 1000 42.4
36 Qc3 Quebec chilled 95 15.1
37 Qc3 Quebec chilled 175 21.0
38 Qc3 Quebec chilled 250 38.1
39 Qc3 Quebec chilled 350 34.0
40 Qc3 Quebec chilled 500 38.9
41 Qc3 Quebec chilled 675 39.6
42 Qc3 Quebec chilled 1000 41.4
43 Mn1 Mississippi nonchilled 95 10.6
44 Mn1 Mississippi nonchilled 175 19.2
45 Mn1 Mississippi nonchilled 250 26.2
46 Mn1 Mississippi nonchilled 350 30.0
47 Mn1 Mississippi nonchilled 500 30.9
48 Mn1 Mississippi nonchilled 675 32.4
49 Mn1 Mississippi nonchilled 1000 35.5
50 Mn2 Mississippi nonchilled 95 12.0
51 Mn2 Mississippi nonchilled 175 22.0
52 Mn2 Mississippi nonchilled 250 30.6
53 Mn2 Mississippi nonchilled 350 31.8
54 Mn2 Mississippi nonchilled 500 32.4
55 Mn2 Mississippi nonchilled 675 31.1
56 Mn2 Mississippi nonchilled 1000 31.5
57 Mn3 Mississippi nonchilled 95 11.3
58 Mn3 Mississippi nonchilled 175 19.4
59 Mn3 Mississippi nonchilled 250 25.8
60 Mn3 Mississippi nonchilled 350 27.9
61 Mn3 Mississippi nonchilled 500 28.5
62 Mn3 Mississippi nonchilled 675 28.1
63 Mn3 Mississippi nonchilled 1000 27.8
64 Mc1 Mississippi chilled 95 10.5
65 Mc1 Mississippi chilled 175 14.9
66 Mc1 Mississippi chilled 250 18.1
67 Mc1 Mississippi chilled 350 18.9
68 Mc1 Mississippi chilled 500 19.5
69 Mc1 Mississippi chilled 675 22.2
70 Mc1 Mississippi chilled 1000 21.9
71 Mc2 Mississippi chilled 95 7.7
72 Mc2 Mississippi chilled 175 11.4
73 Mc2 Mississippi chilled 250 12.3
74 Mc2 Mississippi chilled 350 13.0
75 Mc2 Mississippi chilled 500 12.5
76 Mc2 Mississippi chilled 675 13.7
77 Mc2 Mississippi chilled 1000 14.4
78 Mc3 Mississippi chilled 95 10.6
79 Mc3 Mississippi chilled 175 18.0
80 Mc3 Mississippi chilled 250 17.9
81 Mc3 Mississippi chilled 350 17.9
82 Mc3 Mississippi chilled 500 17.9
83 Mc3 Mississippi chilled 675 18.9
84 Mc3 Mississippi chilled 1000 19.9
> plot(CO2, outer = ~Treatment*Type, layout = c(4,1))
> (fm1CO2.lis <- nlsList(SSasympOff, CO2))
Call:
Model: uptake ~ SSasympOff(conc, Asym, lrc, c0) | Plant
Data: CO2
Coefficients:
Asym lrc c0
Qn1 38.1 -4.38 51.2
Qn2 42.9 -4.67 55.9
Qn3 44.2 -4.49 54.6
Qc1 36.4 -4.86 31.1
Qc3 40.7 -4.95 35.1
Qc2 39.8 -4.46 72.1
Mn3 28.5 -4.59 47.0
Mn2 32.1 -4.47 56.0
Mn1 34.1 -5.06 36.4
Mc2 13.6 -4.56 13.1
Mc3 18.5 -3.47 67.8
Mc1 21.8 -5.14 -20.4
Degrees of freedom: 84 total; 48 residual
Residual standard error: 1.8
> ## IGNORE_RDIFF_BEGIN
> (fm1CO2.nlme <- nlme(fm1CO2.lis))
Warning in (function (model, data = sys.frame(sys.parent()), fixed, random, :
Iteration 1, LME step: nlminb() did not converge (code = 1). Do increase 'msMaxIter'!
Nonlinear mixed-effects model fit by maximum likelihood
Model: uptake ~ SSasympOff(conc, Asym, lrc, c0)
Data: CO2
Log-likelihood: -201
Fixed: list(Asym ~ 1, lrc ~ 1, c0 ~ 1)
Asym lrc c0
32.47 -4.64 43.55
Random effects:
Formula: list(Asym ~ 1, lrc ~ 1, c0 ~ 1)
Level: Plant
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
Asym 9.51 Asym lrc
lrc 0.13 -0.165
c0 10.33 0.999 -0.133
Residual 1.77
Number of Observations: 84
Number of Groups: 12
> ## IGNORE_RDIFF_END
> (fm2CO2.nlme <- update(fm1CO2.nlme, random = Asym + lrc ~ 1))
Nonlinear mixed-effects model fit by maximum likelihood
Model: uptake ~ SSasympOff(conc, Asym, lrc, c0)
Data: CO2
Log-likelihood: -203
Fixed: list(Asym ~ 1, lrc ~ 1, c0 ~ 1)
Asym lrc c0
32.41 -4.56 49.34
Random effects:
Formula: list(Asym ~ 1, lrc ~ 1)
Level: Plant
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
Asym 9.66 Asym
lrc 0.20 -0.777
Residual 1.81
Number of Observations: 84
Number of Groups: 12
> anova(fm1CO2.nlme, fm2CO2.nlme)
Model df AIC BIC logLik Test L.Ratio p-value
fm1CO2.nlme 1 10 423 447 -201
fm2CO2.nlme 2 7 420 437 -203 1 vs 2 2.9 0.408
> plot(fm2CO2.nlme,id = 0.05,cex = 0.8,adj = -0.5)
> fm2CO2.nlmeRE <- ranef(fm2CO2.nlme, augFrame = TRUE)
> fm2CO2.nlmeRE
Asym lrc Type Treatment conc uptake
Qn1 6.172 0.04836 Quebec nonchilled 435 33.2
Qn2 10.533 -0.17284 Quebec nonchilled 435 35.2
Qn3 12.218 -0.05799 Quebec nonchilled 435 37.6
Qc1 3.352 -0.07559 Quebec chilled 435 30.0
Qc3 7.474 -0.19242 Quebec chilled 435 32.6
Qc2 7.928 -0.18032 Quebec chilled 435 32.7
Mn3 -4.073 0.03345 Mississippi nonchilled 435 24.1
Mn2 -0.142 0.00565 Mississippi nonchilled 435 27.3
Mn1 0.241 -0.19386 Mississippi nonchilled 435 26.4
Mc2 -18.799 0.31937 Mississippi chilled 435 12.1
Mc3 -13.117 0.29943 Mississippi chilled 435 17.3
Mc1 -11.787 0.16676 Mississippi chilled 435 18.0
> class(fm2CO2.nlmeRE)
[1] "ranef.lme" "data.frame"
> plot(fm2CO2.nlmeRE, form = ~ Type * Treatment)
> contrasts(CO2$Type)
[,1]
Quebec -1
Mississippi 1
> contrasts(CO2$Treatment)
[,1]
nonchilled -1
chilled 1
> fm3CO2.nlme <- update(fm2CO2.nlme,
+ fixed = list(Asym ~ Type * Treatment, lrc + c0 ~ 1),
+ start = c(32.412, 0, 0, 0, -4.5603, 49.344))
> summary(fm3CO2.nlme)
Nonlinear mixed-effects model fit by maximum likelihood
Model: uptake ~ SSasympOff(conc, Asym, lrc, c0)
Data: CO2
AIC BIC logLik
394 418 -187
Random effects:
Formula: list(Asym ~ 1, lrc ~ 1)
Level: Plant
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
Asym.(Intercept) 2.930 As.(I)
lrc 0.164 -0.906
Residual 1.850
Fixed effects: list(Asym ~ Type * Treatment, lrc + c0 ~ 1)
Value Std.Error DF t-value p-value
Asym.(Intercept) 32.4 0.94 67 34.7 0.0000
Asym.Type1 -7.1 0.60 67 -11.9 0.0000
Asym.Treatment1 -3.8 0.59 67 -6.5 0.0000
Asym.Type1:Treatment1 -1.2 0.59 67 -2.0 0.0462
lrc -4.6 0.08 67 -54.1 0.0000
c0 49.5 4.46 67 11.1 0.0000
Correlation:
As.(I) Asym.Ty1 Asym.Tr1 A.T1:T lrc
Asym.Type1 -0.044
Asym.Treatment1 -0.021 0.151
Asym.Type1:Treatment1 -0.023 0.161 0.225
lrc -0.660 0.202 0.113 0.132
c0 -0.113 0.060 0.018 0.063 0.653
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.8929 -0.4616 -0.0328 0.5208 2.8877
Number of Observations: 84
Number of Groups: 12
> anova(fm3CO2.nlme, Terms = 2:4)
F-test for: Asym.Type, Asym.Treatment, Asym.Type:Treatment
numDF denDF F-value p-value
1 3 67 54.8 <.0001
> fm3CO2.nlmeRE <- ranef(fm3CO2.nlme, aug = TRUE)
> plot(fm3CO2.nlmeRE, form = ~ Type * Treatment)
> fm3CO2.fix <- fixef(fm3CO2.nlme)
> fm4CO2.nlme <- update(fm3CO2.nlme,
+ fixed = list(Asym + lrc ~ Type * Treatment, c0 ~ 1),
+ start = c(fm3CO2.fix[1:5], 0, 0, 0, fm3CO2.fix[6]))
Warning in (function (model, data = sys.frame(sys.parent()), fixed, random, :
Iteration 1, LME step: nlminb() did not converge (code = 1). Do increase 'msMaxIter'!
> ## IGNORE_RDIFF_BEGIN
> summary(fm4CO2.nlme)
Nonlinear mixed-effects model fit by maximum likelihood
Model: uptake ~ SSasympOff(conc, Asym, lrc, c0)
Data: CO2
AIC BIC logLik
388 420 -181
Random effects:
Formula: list(Asym ~ 1, lrc ~ 1)
Level: Plant
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
Asym.(Intercept) 2.3496 As.(I)
lrc.(Intercept) 0.0796 -0.92
Residual 1.7920
Fixed effects: list(Asym + lrc ~ Type * Treatment, c0 ~ 1)
Value Std.Error DF t-value p-value
Asym.(Intercept) 32.3 0.78 64 41.2 0.0000
Asym.Type1 -8.0 0.78 64 -10.3 0.0000
Asym.Treatment1 -4.2 0.78 64 -5.4 0.0000
Asym.Type1:Treatment1 -2.7 0.78 64 -3.5 0.0008
lrc.(Intercept) -4.5 0.08 64 -55.7 0.0000
lrc.Type1 0.1 0.06 64 2.4 0.0185
lrc.Treatment1 0.1 0.06 64 1.8 0.0746
lrc.Type1:Treatment1 0.2 0.06 64 3.3 0.0014
c0 50.5 4.36 64 11.6 0.0000
Correlation:
As.(I) Asym.Ty1 Asym.Tr1 A.T1:T lr.(I)
Asym.Type1 -0.017
Asym.Treatment1 -0.010 -0.017
Asym.Type1:Treatment1 -0.020 -0.006 -0.011
lrc.(Intercept) -0.471 0.004 0.001 0.009
lrc.Type1 -0.048 -0.548 -0.005 -0.018 0.402
lrc.Treatment1 -0.031 -0.004 -0.551 -0.033 0.322
lrc.Type1:Treatment1 -0.026 -0.015 -0.032 -0.547 0.351
c0 -0.133 0.038 0.020 0.019 0.735
lrc.Ty1 lrc.Tr1 l.T1:T
Asym.Type1
Asym.Treatment1
Asym.Type1:Treatment1
lrc.(Intercept)
lrc.Type1
lrc.Treatment1 0.375
lrc.Type1:Treatment1 0.395 0.487
c0 0.104 0.083 0.140
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.8621 -0.4944 -0.0422 0.5661 3.0405
Number of Observations: 84
Number of Groups: 12
> ## IGNORE_RDIFF_END
> fm5CO2.nlme <- update(fm4CO2.nlme, random = Asym ~ 1)
> anova(fm4CO2.nlme, fm5CO2.nlme)
Model df AIC BIC logLik Test L.Ratio p-value
fm4CO2.nlme 1 13 388 420 -181
fm5CO2.nlme 2 11 387 414 -182 1 vs 2 2.64 0.268
> CO2$type <- 2 * (as.integer(CO2$Type) - 1.5)
> CO2$treatment <- 2 * (as.integer(CO2$Treatment) - 1.5)
> fm1CO2.nls <- nls(uptake ~ SSasympOff(conc, Asym.Intercept +
+ Asym.Type * type + Asym.Treatment * treatment +
+ Asym.TypeTreatment * type * treatment, lrc.Intercept +
+ lrc.Type * type + lrc.Treatment * treatment +
+ lrc.TypeTreatment * type * treatment, c0), data = CO2,
+ start = c(Asym.Intercept = 32.371, Asym.Type = -8.0086,
+ Asym.Treatment = -4.2001, Asym.TypeTreatment = -2.7253,
+ lrc.Intercept = -4.5267, lrc.Type = 0.13112,
+ lrc.Treatment = 0.093928, lrc.TypeTreatment = 0.17941,
+ c0 = 50.126))
> anova(fm5CO2.nlme, fm1CO2.nls)
Model df AIC BIC logLik Test L.Ratio p-value
fm5CO2.nlme 1 11 387 414 -182
fm1CO2.nls 2 10 418 443 -199 1 vs 2 33.3 <.0001
> # plot(augPred(fm5CO2.nlme, level = 0:1), ## FIXME: problem with levels
> # layout = c(6,2)) ## Actually a problem with contrasts.
> ## This fit just ping-pongs.
> #fm1Quin.nlme <-
> # nlme(conc ~ quinModel(Subject, time, conc, dose, interval,
> # lV, lKa, lCl),
> # data = Quinidine, fixed = lV + lKa + lCl ~ 1,
> # random = pdDiag(lV + lCl ~ 1), groups = ~ Subject,
> # start = list(fixed = c(5, -0.3, 2)),
> # na.action = NULL, naPattern = ~ !is.na(conc), verbose = TRUE)
> #fm1Quin.nlme
> #fm1Quin.nlmeRE <- ranef(fm1Quin.nlme, aug = TRUE)
> #fm1Quin.nlmeRE[1:3,]
> # plot(fm1Quin.nlmeRE, form = lCl ~ Age + Smoke + Ethanol + ## FIXME: problem in max
> # Weight + Race + Height + glyco + Creatinine + Heart,
> # control = list(cex.axis = 0.7))
> #fm1Quin.fix <- fixef(fm1Quin.nlme)
> #fm2Quin.nlme <- update(fm1Quin.nlme,
> # fixed = list(lCl ~ glyco, lKa + lV ~ 1),
> # start = c(fm1Quin.fix[3], 0, fm1Quin.fix[2:1]))
> fm2Quin.nlme <-
+ nlme(conc ~ quinModel(Subject, time, conc, dose, interval,
+ lV, lKa, lCl),
+ data = Quinidine, fixed = list(lCl ~ glyco, lV + lKa ~ 1),
+ random = pdDiag(diag(c(0.3,0.3)), form = lV + lCl ~ 1),
+ groups = ~ Subject,
+ start = list(fixed = c(2.5, 0, 5.4, -0.2)),
+ na.action = NULL, naPattern = ~ !is.na(conc))
> summary(fm2Quin.nlme) # wrong values
Nonlinear mixed-effects model fit by maximum likelihood
Model: conc ~ quinModel(Subject, time, conc, dose, interval, lV, lKa, lCl)
Data: Quinidine
AIC BIC logLik
892 919 -439
Random effects:
Formula: list(lV ~ 1, lCl ~ 1)
Level: Subject
Structure: Diagonal
lV lCl.(Intercept) Residual
StdDev: 0.000263 0.271 0.651
Fixed effects: list(lCl ~ glyco, lV + lKa ~ 1)
Value Std.Error DF t-value p-value
lCl.(Intercept) 3.12 0.0655 222 47.7 0.000
lCl.glyco -0.50 0.0428 222 -11.7 0.000
lV 5.27 0.0948 222 55.6 0.000
lKa -0.84 0.3039 222 -2.8 0.006
Correlation:
lC.(I) lCl.gl lV
lCl.glyco -0.880
lV -0.072 0.027
lKa -0.272 0.149 0.538
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.5458 -0.5342 -0.0221 0.5053 3.5016
Number of Observations: 361
Number of Groups: 136
> options(contrasts = c("contr.treatment", "contr.poly"))
> fm2Quin.fix <- fixef(fm2Quin.nlme)
> ## subsequent fits don't work
> #fm3Quin.nlme <- update(fm2Quin.nlme,
> # fixed = list(lCl ~ glyco + Creatinine, lKa + lV ~ 1),
> # start = c(fm2Quin.fix[1:2], 0.2, fm2Quin.fix[3:4]))
> #summary(fm3Quin.nlme)
> #fm3Quin.fix <- fixef(fm3Quin.nlme)
> #fm4Quin.nlme <- update(fm3Quin.nlme,
> # fixed = list(lCl ~ glyco + Creatinine + Weight, lKa + lV ~ 1),
> # start = c(fm3Quin.fix[1:3], 0, fm3Quin.fix[4:5]))
> #summary(fm4Quin.nlme)
> ## This fit just ping-pongs
> ##fm1Wafer.nlmeR <-
> ## nlme(current ~ A + B * cos(4.5679 * voltage) +
> ## C * sin(4.5679 * voltage), data = Wafer,
> ## fixed = list(A ~ voltage + I(voltage^2), B + C ~ 1),
> ## random = list(Wafer = A ~ voltage + I(voltage^2),
> ## Site = pdBlocked(list(A~1, A~voltage+I(voltage^2)-1))),
> ### start = fixef(fm4Wafer), method = "REML", control = list(tolerance=1e-2))
> ## start = c(-4.255, 5.622, 1.258, -0.09555, 0.10434),
> ## method = "REML", control = list(tolerance = 1e-2))
> ##fm1Wafer.nlmeR
> ##fm1Wafer.nlme <- update(fm1Wafer.nlmeR, method = "ML")
>
> (fm2Wafer.nlme <-
+ nlme(current ~ A + B * cos(w * voltage + pi/4),
+ data = Wafer,
+ fixed = list(A ~ voltage + I(voltage^2), B + w ~ 1),
+ random = list(Wafer = pdDiag(list(A ~ voltage + I(voltage^2), B + w ~ 1)),
+ Site = pdDiag(list(A ~ voltage+I(voltage^2), B ~ 1))),
+ start = c(-4.255, 5.622, 1.258, -0.09555, 4.5679)))
Nonlinear mixed-effects model fit by maximum likelihood
Model: current ~ A + B * cos(w * voltage + pi/4)
Data: Wafer
Log-likelihood: 663
Fixed: list(A ~ voltage + I(voltage^2), B + w ~ 1)
A.(Intercept) A.voltage A.I(voltage^2) B
-4.265 5.633 1.256 -0.141
w
4.593
Random effects:
Formula: list(A ~ voltage + I(voltage^2), B ~ 1, w ~ 1)
Level: Wafer
Structure: Diagonal
A.(Intercept) A.voltage A.I(voltage^2) B w
StdDev: 0.127 0.337 0.0488 0.00506 5.44e-05
Formula: list(A ~ voltage + I(voltage^2), B ~ 1)
Level: Site %in% Wafer
Structure: Diagonal
A.(Intercept) A.voltage A.I(voltage^2) B Residual
StdDev: 0.0618 0.269 0.0559 4.46e-06 0.00786
Number of Observations: 400
Number of Groups:
Wafer Site %in% Wafer
10 80
> plot(fm2Wafer.nlme, resid(.) ~ voltage | Wafer,
+ panel = function(x, y, ...) {
+ panel.grid()
+ panel.xyplot(x, y)
+ panel.loess(x, y, lty = 2)
+ panel.abline(0, 0)
+ })
> ## anova(fm1Wafer.nlme, fm2Wafer.nlme, test = FALSE)
> # intervals(fm2Wafer.nlme)
>
> # 8.3 Extending the Basic nlme Model
>
> #fm4Theo.nlme <- update(fm3Theo.nlme,
> # weights = varConstPower(power = 0.1))
> # this fit is way off
> #fm4Theo.nlme
> #anova(fm3Theo.nlme, fm4Theo.nlme)
> #plot(fm4Theo.nlme)
> ## xlim used to hide an unusually high fitted value and enhance
> ## visualization of the heteroscedastic pattern
> # plot(fm4Quin.nlme, xlim = c(0, 6.2))
> #fm5Quin.nlme <- update(fm4Quin.nlme, weights = varPower())
> #summary(fm5Quin.nlme)
> #anova(fm4Quin.nlme, fm5Quin.nlme)
> #plot(fm5Quin.nlme, xlim = c(0, 6.2))
> var.nlme <- nlme(follicles ~ A + B * sin(2 * pi * w * Time) +
+ C * cos(2 * pi * w *Time), data = Ovary,
+ fixed = A + B + C + w ~ 1, random = pdDiag(A + B + w ~ 1),
+ # start = c(fixef(fm5Ovar.lme), 1))
+ start = c(12.18, -3.298, -0.862, 1))
> ##fm1Ovar.nlme
> ##ACF(fm1Ovar.nlme)
> ##plot(ACF(fm1Ovar.nlme, maxLag = 10), alpha = 0.05)
> ##fm2Ovar.nlme <- update(fm1Ovar.nlme, correlation = corAR1(0.311))
> ##fm3Ovar.nlme <- update(fm1Ovar.nlme, correlation = corARMA(p=0, q=2))
> ##anova(fm2Ovar.nlme, fm3Ovar.nlme, test = FALSE)
> ##intervals(fm2Ovar.nlme)
> ##fm4Ovar.nlme <- update(fm2Ovar.nlme, random = A ~ 1)
> ##anova(fm2Ovar.nlme, fm4Ovar.nlme)
> ##if (interactive()) fm5Ovar.nlme <- update(fm4Ovar.nlme, correlation = corARMA(p=1, q=1))
> # anova(fm4Ovar.nlme, fm5Ovar.nlme)
> # plot(ACF(fm5Ovar.nlme, maxLag = 10, resType = "n"),
> # alpha = 0.05)
> # fm5Ovar.lmeML <- update(fm5Ovar.lme, method = "ML")
> # intervals(fm5Ovar.lmeML)
> # fm6Ovar.lmeML <- update(fm5Ovar.lmeML, random = ~1)
> # anova(fm5Ovar.lmeML, fm6Ovar.lmeML)
> # anova(fm6Ovar.lmeML, fm5Ovar.nlme)
> # intervals(fm5Ovar.nlme, which = "fixed")
> fm1Dial.lis <-
+ nlsList(rate ~ SSasympOff(pressure, Asym, lrc, c0) | QB,
+ data = Dialyzer)
> fm1Dial.lis
Call:
Model: rate ~ SSasympOff(pressure, Asym, lrc, c0) | QB
Data: Dialyzer
Coefficients:
Asym lrc c0
200 45.0 0.765 0.224
300 62.2 0.253 0.225
Degrees of freedom: 140 total; 134 residual
Residual standard error: 3.8
> plot(intervals(fm1Dial.lis))
> fm1Dial.gnls <- gnls(rate ~ SSasympOff(pressure, Asym, lrc, c0),
+ data = Dialyzer, params = list(Asym + lrc ~ QB, c0 ~ 1),
+ start = c(53.6, 8.6, 0.51, -0.26, 0.225))
> fm1Dial.gnls
Generalized nonlinear least squares fit
Model: rate ~ SSasympOff(pressure, Asym, lrc, c0)
Data: Dialyzer
Log-likelihood: -383
Coefficients:
Asym.(Intercept) Asym.QB300 lrc.(Intercept)
44.986 17.240 0.766
lrc.QB300 c0
-0.514 0.224
Degrees of freedom: 140 total; 135 residual
Residual standard error: 3.79
> Dialyzer$QBcontr <- 2 * (Dialyzer$QB == 300) - 1
> fm1Dial.nls <-
+ nls(rate ~ SSasympOff(pressure, Asym.Int + Asym.QB * QBcontr,
+ lrc.Int + lrc.QB * QBcontr, c0), data = Dialyzer,
+ start = c(Asym.Int = 53.6, Asym.QB = 8.6, lrc.Int = 0.51,
+ lrc.QB = -0.26, c0 = 0.225))
> ## IGNORE_RDIFF_BEGIN
> summary(fm1Dial.nls)
Formula: rate ~ SSasympOff(pressure, Asym.Int + Asym.QB * QBcontr, lrc.Int +
lrc.QB * QBcontr, c0)
Parameters:
Estimate Std. Error t value Pr(>|t|)
Asym.Int 53.6065 0.7054 75.99 < 2e-16 ***
Asym.QB 8.6201 0.6792 12.69 < 2e-16 ***
lrc.Int 0.5087 0.0552 9.21 5.5e-16 ***
lrc.QB -0.2568 0.0450 -5.70 7.0e-08 ***
c0 0.2245 0.0106 21.13 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 3.79 on 135 degrees of freedom
Number of iterations to convergence: 4
Achieved convergence tolerance: 7.24e-06
> ## IGNORE_RDIFF_END
> logLik(fm1Dial.nls)
'log Lik.' -383 (df=6)
> plot(fm1Dial.gnls, resid(.) ~ pressure, abline = 0)
> fm2Dial.gnls <- update(fm1Dial.gnls,
+ weights = varPower(form = ~ pressure))
> anova(fm1Dial.gnls, fm2Dial.gnls)
Model df AIC BIC logLik Test L.Ratio p-value
fm1Dial.gnls 1 6 777 795 -383
fm2Dial.gnls 2 7 748 769 -367 1 vs 2 30.8 <.0001
> ACF(fm2Dial.gnls, form = ~ 1 | Subject)
lag ACF
1 0 1.00000
2 1 0.71567
3 2 0.50454
4 3 0.29481
5 4 0.20975
6 5 0.13857
7 6 -0.00202
> plot(ACF(fm2Dial.gnls, form = ~ 1 | Subject), alpha = 0.05)
> fm3Dial.gnls <-
+ update(fm2Dial.gnls, corr = corAR1(0.716, form = ~ 1 | Subject))
> fm3Dial.gnls
Generalized nonlinear least squares fit
Model: rate ~ SSasympOff(pressure, Asym, lrc, c0)
Data: Dialyzer
Log-likelihood: -323
Coefficients:
Asym.(Intercept) Asym.QB300 lrc.(Intercept)
46.911 16.400 0.542
lrc.QB300 c0
-0.339 0.215
Correlation Structure: AR(1)
Formula: ~1 | Subject
Parameter estimate(s):
Phi
0.744
Variance function:
Structure: Power of variance covariate
Formula: ~pressure
Parameter estimates:
power
0.572
Degrees of freedom: 140 total; 135 residual
Residual standard error: 3.18
> intervals(fm3Dial.gnls)
Approximate 95% confidence intervals
Coefficients:
lower est. upper
Asym.(Intercept) 43.877 46.911 49.945
Asym.QB300 11.633 16.400 21.167
lrc.(Intercept) 0.435 0.542 0.648
lrc.QB300 -0.487 -0.339 -0.192
c0 0.206 0.215 0.223
Correlation structure:
lower est. upper
Phi 0.622 0.744 0.831
Variance function:
lower est. upper
power 0.443 0.572 0.702
Residual standard error:
lower est. upper
2.59 3.13 3.77
> anova(fm2Dial.gnls, fm3Dial.gnls)
Model df AIC BIC logLik Test L.Ratio p-value
fm2Dial.gnls 1 7 748 769 -367
fm3Dial.gnls 2 8 661 685 -323 1 vs 2 89.4 <.0001
> # restore two fitted models
> fm2Dial.lme <-
+ lme(rate ~(pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB,
+ Dialyzer, ~ pressure + I(pressure^2),
+ weights = varPower(form = ~ pressure))
> fm2Dial.lmeML <- update(fm2Dial.lme, method = "ML")
> fm3Dial.gls <-
+ gls(rate ~(pressure + I(pressure^2) + I(pressure^3) + I(pressure^4))*QB,
+ Dialyzer, weights = varPower(form = ~ pressure),
+ corr = corAR1(0.771, form = ~ 1 | Subject))
> fm3Dial.glsML <- update(fm3Dial.gls, method = "ML")
> anova( fm2Dial.lmeML, fm3Dial.glsML, fm3Dial.gnls, test = FALSE)
Model df AIC BIC logLik
fm2Dial.lmeML 1 18 652 705 -308
fm3Dial.glsML 2 13 648 686 -311
fm3Dial.gnls 3 8 661 685 -323
> # cleanup
>
> summary(warnings())
No warnings
>
> proc.time()
user system elapsed
61.627 0.112 61.765