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 > 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(.) > 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