R version 4.4.0 alpha (2024-03-26 r86209 ucrt) Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 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. > library(lme4) Loading required package: Matrix > > allEQ <- function(x,y, tolerance = 4e-4, ...) + all.equal.numeric(x,y, tolerance=tolerance, ...) > > (nm1 <- nlmer(circumference ~ SSlogis(age, Asym, xmid, scal) ~ (Asym|Tree), + Orange, start = c(Asym = 200, xmid = 725, scal = 350))) Nonlinear mixed model fit by maximum likelihood ['nlmerMod'] Formula: circumference ~ SSlogis(age, Asym, xmid, scal) ~ (Asym | Tree) Data: Orange AIC BIC logLik deviance df.resid 273.1438 280.9205 -131.5719 263.1438 30 Random effects: Groups Name Std.Dev. Tree Asym 31.646 Residual 7.843 Number of obs: 35, groups: Tree, 5 Fixed Effects: Asym xmid scal 192.1 727.9 348.1 > fixef(nm1) Asym xmid scal 192.0528 727.9045 348.0721 > > if (lme4:::testLevel() > 2) { + ## 'Theoph' Data modeling + Th.start <- c(lKe = -2.5, lKa = 0.5, lCl = -3) + + system.time(nm2 <- nlmer(conc ~ SSfol(Dose, Time,lKe, lKa, lCl) ~ + (lKe+lKa+lCl|Subject), + Theoph, start = Th.start, + control=nlmerControl(tolPwrss=1e-8))) + print(nm2, corr=FALSE) + + system.time(nm3 <- nlmer(conc ~ SSfol(Dose, Time,lKe, lKa, lCl) ~ + (lKe|Subject) + (lKa|Subject) + (lCl|Subject), + Theoph, start = Th.start)) + print(nm3, corr=FALSE) + + ## dropping lKe from random effects: + system.time(nm4 <- nlmer(conc ~ SSfol(Dose, Time,lKe, lKa, lCl) ~ (lKa+lCl|Subject), + Theoph, start = Th.start, + control=nlmerControl(tolPwrss=1e-8))) + print(nm4, corr=FALSE) + + system.time(nm5 <- nlmer(conc ~ SSfol(Dose, Time,lKe, lKa, lCl) ~ + (lKa|Subject) + (lCl|Subject), + Theoph, + start = Th.start, + control=nlmerControl(tolPwrss=1e-8))) + print(nm5, corr=FALSE) + + ## this has not worked in a *long* time anyway, and PKPDmodels is currently archived, so ... + + ## if (require("PKPDmodels")) { + ## oral1cptSdlkalVlCl <- + ## PKmod("oral", "sd", list(ka ~ exp(lka), Cl ~ exp(lCl), V ~ exp(lV))) + ## if (FALSE) { + ## ## FIXME: Error in get(nm, envir = nlenv) : object 'k' not found + ## ## probably with environments/call stack etc.? + ## ## 'pnames' is c("lV","lka","k") -- not ("lV","lka","lCl") + ## ## nlmer -> nlformula -> MkRespMod + ## ## pnames are OK in nlformula, but in MkRespMod we try to recover + ## ## them from the column names of the gradient attribute of the + ## ## model evaluated in nlenv -- which are wrong. + ## system.time(nm2a <- nlmer(conc ~ oral1cptSdlkalVlCl(Dose, Time, lV, lka, lCl) ~ + ## (lV+lka+lCl|Subject), + ## Theoph, start = c(lV=-1, lka=-0.5, lCl=-3), tolPwrss=1e-8)) + ## print(nm2a, corr=FALSE) + ## } + ## } + + } ## testLevel > 2 > > proc.time() user system elapsed 1.70 0.23 1.92