tests/nlme.R

library(nlme)
fm1 <- nlsList(SSasymp, Loblolly)
fm1
system.time(cnL1 <- confint(fm1)) # 0.48 sec

stopifnot(
    all.equal(as.matrix(coef(fm1)),
              array(c(94.1282, 94.9406, 89.8849, 110.699, 111.003, 109.986, 101.056,
                      127.134, 101.087, 95.6669, 95.5563, 113.514, 105.718, 99.1719,
                      -8.25075, -7.75749, -8.75902, -8.16943, -8.46261, -8.55854, -8.44363,
                      -7.67936, -8.50234, -9.07824, -9.66503, -7.59562, -8.90608, -9.91665,
                      -3.21758, -3.22932, -3.08622, -3.39034, -3.39757, -3.36252, -3.23282,
                      -3.57533, -3.21402, -3.11638, -3.09227, -3.35282, -3.22296, -3.08484),
                    dim = c(14L, 3L),
                    dimnames = list(c("329", "327", "325", "307", "331", "311", "315",
                                      "321", "319", "301", "323", "309", "303", "305"),
                                    c("Asym", "R0", "lrc"))),
              tol = 1e-5)
    ,
    all.equal(pooledSD(fm1), structure(0.70039649, df = 42), tol = 1e-5)
    ,
    84 == sum(vapply(lapply(fm1, fitted), length, 1L)) # total deg.freedom
   , ## confint() :
    is.list(cnL1), identical(names(cnL1), names(fm1)),
    vapply(cnL1, is.matrix, NA),
    vapply(cnL1, dim, c(NA,0L)) == 3:2,
    identical(unname(sapply(cnL1, dim)), matrix(3:2, 2, length(fm1))),
    sapply(cnL1, is.finite)
    )

fm2 <- nlme(fm1, random = Asym ~ 1)
fm2
stopifnot(
    all.equal(fixef(fm2),
              c(Asym = 101.4483, R0 = -8.6274937, lrc = -3.2337304), tol = 4e-7)
    ,
    all.equal(logLik(fm2),
              structure(-114.743, class = "logLik", nall = 84, nobs = 84, df = 5),
              tol = 4e-6)
    ,
    all.equal(sigma(fm2), 0.71886244, tol = 1e-6)
    )

pm2.0 <- predict(fm2, Loblolly, level=0)## failed in nlme 3.1-123
stopifnot(all.equal(head(pm2.0),
		    c(3.64694, 11.0597, 27.2258, 40.5006, 51.4012, 60.3522),
		    tol = 1e-5)) # 4e-7 {64b nb-mm4}

## same as fm2 but fitted via nlme's formula interface
fm3 <- nlme(height ~ SSasymp(age, Asym, R0, lrc),
            data = Loblolly,
            fixed = Asym + R0 + lrc ~ 1,
            random = Asym ~ 1, groups = ~Seed)
## explicitly specifying 'groups' failed in 3.1-153 with
## Error in nlme::nlsList(model = height ~ SSasymp(age, Asym, R0, lrc), data = Loblolly,  : 
##   unused argument (groups = ~Seed)
fm2$origCall <- NULL
stopifnot(all.equal(fm2, fm3))

Try the nlme package in your browser

Any scripts or data that you put into this service are public.

nlme documentation built on Nov. 27, 2023, 5:09 p.m.