Title: | Nonlinear Mixed Effects Models in Population PK/PD, Extra Support Functions |
---|---|
Description: | Fit and compare nonlinear mixed-effects models in differential equations with flexible dosing information commonly seen in pharmacokinetics and pharmacodynamics (Almquist, Leander, and Jirstrand 2015 <doi:10.1007/s10928-015-9409-1>). Differential equation solving is by compiled C code provided in the 'rxode2' package (Wang, Hallow, and James 2015 <doi:10.1002/psp4.12052>). This package is for support functions like preconditioned fits <doi:10.1208/s12248-016-9866-5>, boostrap and stepwise covariate selection. |
Authors: | Matthew Fidler [aut, cre] |
Maintainer: | Matthew Fidler <[email protected]> |
License: | GPL (>= 3) |
Version: | 2.0.10 |
Built: | 2024-08-13 19:01:02 UTC |
Source: | https://github.com/nlmixr2/nlmixr2extra |
Return Adaptive lasso coefficients after finding optimal t
adaptivelassoCoefficients( fit, varsVec, covarsVec, catvarsVec, constraint = 1e-08, stratVar = NULL, ... )
adaptivelassoCoefficients( fit, varsVec, covarsVec, catvarsVec, constraint = 1e-08, stratVar = NULL, ... )
fit |
nlmixr2 fit. |
varsVec |
character vector of variables that need to be added |
covarsVec |
character vector of covariates that need to be added |
catvarsVec |
character vector of categorical covariates that need to be added |
constraint |
theta cutoff. below cutoff then the theta will be fixed to zero. |
stratVar |
A variable to stratify on for cross-validation. |
... |
Other parameters to be passed to optimalTvaluelasso |
return data frame of final lasso coefficients
Vishal Sarsani
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 fit <- nlmixr2( one.cmt, d, est = "saem", control = list(print = 0) ) varsVec <- c("ka","cl","v") covarsVec <- c("WT") catvarsVec <- c("SEX") # Adaptive Lasso coefficients: lassoDf <- adaptivelassoCoefficients(fit, varsVec, covarsVec, catvarsVec) ## End(Not run)
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 fit <- nlmixr2( one.cmt, d, est = "saem", control = list(print = 0) ) varsVec <- c("ka","cl","v") covarsVec <- c("WT") catvarsVec <- c("SEX") # Adaptive Lasso coefficients: lassoDf <- adaptivelassoCoefficients(fit, varsVec, covarsVec, catvarsVec) ## End(Not run)
Make dummy variable cols and updated covarsVec
addCatCovariates(data, covarsVec, catcovarsVec)
addCatCovariates(data, covarsVec, catcovarsVec)
data |
data frame used in the analysis |
covarsVec |
character vector of covariates that need to be added |
catcovarsVec |
character vector of categorical covariates that need to be added |
return updated Data along with the updated covarsVec
Vishal Sarsani
Add covariate
addorremoveCovariate(ui, varName, covariate, add = TRUE)
addorremoveCovariate(ui, varName, covariate, add = TRUE)
ui |
compiled rxode2 nlmir2 model or fit |
varName |
the variable name to which the given covariate is to be added |
covariate |
the covariate that needs string to be constructed |
add |
boolean indicating if the covariate needs to be added or removed. |
Matthew Fidler, Vishal Sarsani
Return Adjusted adaptive lasso coefficients after finding optimal t
adjustedlassoCoefficients( fit, varsVec, covarsVec, catvarsVec, constraint = 1e-08, stratVar = NULL, ... )
adjustedlassoCoefficients( fit, varsVec, covarsVec, catvarsVec, constraint = 1e-08, stratVar = NULL, ... )
fit |
nlmixr2 fit. |
varsVec |
character vector of variables that need to be added |
covarsVec |
character vector of covariates that need to be added |
catvarsVec |
character vector of categorical covariates that need to be added |
constraint |
theta cutoff. below cutoff then the theta will be fixed to zero. |
stratVar |
A variable to stratify on for cross-validation. |
... |
Other parameters to be passed to optimalTvaluelasso |
return data frame of final lasso coefficients
Vishal Sarsani
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) varsVec <- c("ka","cl","v") covarsVec <- c("WT") catvarsVec <- c("SEX") # Adaptive Lasso coefficients: lassoDf <- adjustedlassoCoefficients(fit,varsVec,covarsVec,catvarsVec) ## End(Not run)
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) varsVec <- c("ka","cl","v") covarsVec <- c("WT") catvarsVec <- c("SEX") # Adaptive Lasso coefficients: lassoDf <- adjustedlassoCoefficients(fit,varsVec,covarsVec,catvarsVec) ## End(Not run)
Backward covariate search
backwardSearch( varsVec, covarsVec, catvarsVec = NULL, fitorig, fitupdated, pVal = 0.01, reFitCovars = FALSE, outputDir, restart = FALSE )
backwardSearch( varsVec, covarsVec, catvarsVec = NULL, fitorig, fitupdated, pVal = 0.01, reFitCovars = FALSE, outputDir, restart = FALSE )
varsVec |
character vector of variables that need to be added |
covarsVec |
character vector of covariates that need to be added |
catvarsVec |
character vector of categorical covariates that need to be added |
fitorig |
the original 'fit' object before forward search |
fitupdated |
the updated 'fit' object, if any, after the forward search |
pVal |
p-value that should be used for selecting covariates in the forward search |
reFitCovars |
if the covariates should be added before performing backward search - useful for directly performing backward search without forward search; default is FALSE |
outputDir |
the name of the output directory that stores the covariate search result |
restart |
a boolean that controls if the search should be restarted; default is FALSE |
returns the updated 'fit' object at the end of the backward search and a table of information for all the covariates tested
Vipul Mann, Matthew Fidler, Vishal Sarsani
Produce delta objective function for boostrap
bootplot(x, ...) ## S3 method for class 'nlmixr2FitCore' bootplot(x, ...)
bootplot(x, ...) ## S3 method for class 'nlmixr2FitCore' bootplot(x, ...)
x |
fit object |
... |
other parameters |
Fit traceplot or nothing.
Vipul Mann, Matthew L. Fidler
R Niebecker, MO Karlsson. (2013) Are datasets for NLME models large enough for a bootstrap to provide reliable parameter uncertainty distributions? PAGE 2013. https://www.page-meeting.org/?abstract=2899
Bootstrap input dataset and rerun the model to get confidence bounds and aggregated parameters
bootstrapFit( fit, nboot = 200, nSampIndiv, stratVar, stdErrType = c("perc", "sd", "se"), ci = 0.95, pvalues = NULL, restart = FALSE, plotHist = FALSE, fitName = as.character(substitute(fit)) )
bootstrapFit( fit, nboot = 200, nSampIndiv, stratVar, stdErrType = c("perc", "sd", "se"), ci = 0.95, pvalues = NULL, restart = FALSE, plotHist = FALSE, fitName = as.character(substitute(fit)) )
fit |
the nlmixr2 fit object |
nboot |
an integer giving the number of bootstrapped models to be fit; default value is 200 |
nSampIndiv |
an integer specifying the number of samples in each bootstrapped sample; default is the number of unique subjects in the original dataset |
stratVar |
Variable in the original dataset to stratify on; This is useful to distinguish between sparse and full sampling and other features you may wish to keep distinct in your bootstrap |
stdErrType |
This gives the standard error type for the
updated standard errors; The current possibilities are: |
ci |
Confidence interval level to calculate. Default is 0.95 for a 95 percent confidence interval |
pvalues |
a vector of pvalues indicating the probability of
each subject to get selected; default value is |
restart |
A boolean to try to restart an interrupted or
incomplete boostrap. By default this is |
plotHist |
A boolean indicating if a histogram plot to assess
how well the bootstrap is doing. By default this is turned off
( |
fitName |
is the fit name that is used for the name of the boostrap files. By default it is the fit provided though it could be something else. |
Nothing, called for the side effects; The original fit is updated with the bootstrap confidence bands
Vipul Mann, Matthew Fidler
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- 1; label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } fit <- nlmixr2(one.cmt, nlmixr2data::theo_sd, est = "saem", control = list(print = 0)) withr::with_tempdir({ # Run example in temp dir bootstrapFit(fit, nboot = 5, restart = TRUE) # overwrites any of the existing data or model files bootstrapFit(fit, nboot = 7) # resumes fitting using the stored data and model files # Note this resumes because the total number of bootstrap samples is not 10 bootstrapFit(fit, nboot=10) # Note the boostrap standard error and variance/covariance matrix is retained. # If you wish to switch back you can change the covariance matrix by nlmixr2est::setCov(fit, "linFim") # And change it back again nlmixr2est::setCov(fit, "boot10") # This change will affect any simulations with uncertainty in their parameters # You may also do a chi-square diagnostic plot check for the bootstrap with bootplot(fit) }) ## End(Not run)
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- 1; label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } fit <- nlmixr2(one.cmt, nlmixr2data::theo_sd, est = "saem", control = list(print = 0)) withr::with_tempdir({ # Run example in temp dir bootstrapFit(fit, nboot = 5, restart = TRUE) # overwrites any of the existing data or model files bootstrapFit(fit, nboot = 7) # resumes fitting using the stored data and model files # Note this resumes because the total number of bootstrap samples is not 10 bootstrapFit(fit, nboot=10) # Note the boostrap standard error and variance/covariance matrix is retained. # If you wish to switch back you can change the covariance matrix by nlmixr2est::setCov(fit, "linFim") # And change it back again nlmixr2est::setCov(fit, "boot10") # This change will affect any simulations with uncertainty in their parameters # You may also do a chi-square diagnostic plot check for the bootstrap with bootplot(fit) }) ## End(Not run)
Build covInfo list from varsVec and covarsVec
buildcovInfo(varsVec, covarsVec)
buildcovInfo(varsVec, covarsVec)
varsVec |
character vector of variables that need to be added |
covarsVec |
character vector of covariates that need to be added |
covInfo list of covariate info
Vishal Sarsani
Build updated from the covariate and variable vector list
buildupatedUI(ui, varsVec, covarsVec, add = TRUE, indep = FALSE)
buildupatedUI(ui, varsVec, covarsVec, add = TRUE, indep = FALSE)
ui |
compiled rxode2 nlmir2 model or fit |
varsVec |
character vector of variables that need to be added |
covarsVec |
character vector of covariates that need to be added |
add |
boolean indicating if the covariate needs to be added or removed |
indep |
a boolean indicating if the covariates should be added independently, or sequentially (append to the previous model). only applicable to adding covariate |
updated ui with added covariates
Vishal Sarsani
Stepwise Covariate Model-selection (SCM) method
covarSearchAuto( fit, varsVec, covarsVec, pVal = list(fwd = 0.05, bck = 0.01), catvarsVec = NULL, searchType = c("scm", "forward", "backward"), restart = FALSE )
covarSearchAuto( fit, varsVec, covarsVec, pVal = list(fwd = 0.05, bck = 0.01), catvarsVec = NULL, searchType = c("scm", "forward", "backward"), restart = FALSE )
fit |
an nlmixr2 'fit' object |
varsVec |
a list of candidate variables to which the covariates could be added |
covarsVec |
a list of candidate covariates that need to be tested |
pVal |
a named list with names 'fwd' and 'bck' for specifying the p-values for the forward and backward searches, respectively |
catvarsVec |
character vector of categorical covariates that need to be added |
searchType |
one of 'scm', 'forward' and 'backward' to specify the covariate search method; default is 'scm' |
restart |
a boolean that controls if the search should be restarted; default is FALSE |
A list summarizing the covariate selection steps and output; This list has the "summaryTable" for the overall summary of the covariate selection as well as "resFwd" for the forward selection method and "resBck" for the backward selection method.
Vipul Mann, Matthew Fidler, Vishal Sarsani
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } fit <- nlmixr2(one.cmt, nlmixr2data::theo_sd, est = "saem", control = list(print = 0)) rxode2::.rxWithWd(tempdir(), {# with temporary directory auto1 <- covarSearchAuto(fit, varsVec = c("ka", "cl"), covarsVec = c("WT")) }) ## Note that this didn't include sex, add it to dataset and restart model d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) # This would restart if for some reason the search crashed: rxode2::.rxWithWd(tempdir(), {# with temporary directory auto2 <- covarSearchAuto(fit, varsVec = c("ka", "cl"), covarsVec = c("WT"), catvarsVec= c("SEX"), restart = TRUE) auto3 <- covarSearchAuto(fit, varsVec = c("ka", "cl"), covarsVec = c("WT"), catvarsVec= c("SEX"), restart = TRUE, searchType = "forward") }) ## End(Not run)
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } fit <- nlmixr2(one.cmt, nlmixr2data::theo_sd, est = "saem", control = list(print = 0)) rxode2::.rxWithWd(tempdir(), {# with temporary directory auto1 <- covarSearchAuto(fit, varsVec = c("ka", "cl"), covarsVec = c("WT")) }) ## Note that this didn't include sex, add it to dataset and restart model d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) # This would restart if for some reason the search crashed: rxode2::.rxWithWd(tempdir(), {# with temporary directory auto2 <- covarSearchAuto(fit, varsVec = c("ka", "cl"), covarsVec = c("WT"), catvarsVec= c("SEX"), restart = TRUE) auto3 <- covarSearchAuto(fit, varsVec = c("ka", "cl"), covarsVec = c("WT"), catvarsVec= c("SEX"), restart = TRUE, searchType = "forward") }) ## End(Not run)
Stratified cross-validation fold generator function, inspired from the caret
foldgen(data, nfold = 5, stratVar = NULL)
foldgen(data, nfold = 5, stratVar = NULL)
data |
data frame used in the analysis |
nfold |
number of k-fold cross validations. Default is 5 |
stratVar |
Stratification Variable. Default is NULL and ID is used for CV |
return data.frame with the fold column attached
Vishal Sarsani, caret
d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 covarsVec <- c("WT") # Stratified cross-validation data with CMT df1 <- foldgen(d, nfold=5, stratVar="CMT") # Stratified cross-validation data with ID (individual) df2 <- foldgen(d, nfold=5, stratVar=NULL)
d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 covarsVec <- c("WT") # Stratified cross-validation data with CMT df1 <- foldgen(d, nfold=5, stratVar="CMT") # Stratified cross-validation data with ID (individual) df2 <- foldgen(d, nfold=5, stratVar=NULL)
Forward covariate search
forwardSearch( varsVec, covarsVec, catvarsVec = NULL, fit, pVal = 0.05, outputDir, restart = FALSE )
forwardSearch( varsVec, covarsVec, catvarsVec = NULL, fit, pVal = 0.05, outputDir, restart = FALSE )
varsVec |
character vector of variables that need to be added |
covarsVec |
character vector of covariates that need to be added |
catvarsVec |
character vector of categorical covariates that need to be added |
fit |
an nlmixr2 'fit' object |
pVal |
p-value that should be used for selecting covariates in the forward search |
outputDir |
the name of the output directory that stores the covariate search result |
restart |
a boolean that controls if the search should be restarted; default is FALSE |
returns the updated 'fit' object at the end of the forward search and a table of information for all the covariates tested
Vipul Mann, Matthew Fidler, Vishal Sarsani
Create Horseshoe summary posterior estimates
horseshoeSummardf(fit, covarsVec, ...)
horseshoeSummardf(fit, covarsVec, ...)
fit |
compiled rxode2 nlmir2 model fit |
covarsVec |
character vector of covariates that need to be added |
... |
other parameters passed to brm(): warmup = 1000, iter = 2000, chains = 4, cores = 4, control = list(adapt_delta = 0.99, max_treedepth = 15) |
Horse shoe Summary data frame of all covariates
Vishal Sarsani, Christian Bartels
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) covarsVec <- c("WT") # Horseshoe summary posterior estimates: #hsDf <- horseshoeSummardf(fit,covarsVec,cores=2) #brms sometimes may throw a Error in sink(type = “output”) #Issue Should be fixed by uninstalling and re-installing rstan ## End(Not run)
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) covarsVec <- c("WT") # Horseshoe summary posterior estimates: #hsDf <- horseshoeSummardf(fit,covarsVec,cores=2) #brms sometimes may throw a Error in sink(type = “output”) #Issue Should be fixed by uninstalling and re-installing rstan ## End(Not run)
Extract the equations from an nlmixr2/rxode2 model to produce a 'LaTeX' equation.
## S3 method for class 'nlmixr2FitCore' knit_print(x, ..., output = "equations") ## S3 method for class 'rxUi' knit_print(x, ...)
## S3 method for class 'nlmixr2FitCore' knit_print(x, ..., output = "equations") ## S3 method for class 'rxUi' knit_print(x, ...)
x |
The model to extract equations from |
... |
Ignored |
output |
The type of output to request (currently, just "equations") |
Return Final lasso coefficients after finding optimal t
lassoCoefficients( fit, varsVec, covarsVec, catvarsVec, constraint = 1e-08, stratVar = NULL, ... )
lassoCoefficients( fit, varsVec, covarsVec, catvarsVec, constraint = 1e-08, stratVar = NULL, ... )
fit |
nlmixr2 fit. |
varsVec |
character vector of variables that need to be added |
covarsVec |
character vector of covariates that need to be added |
catvarsVec |
character vector of categorical covariates that need to be added |
constraint |
theta cutoff. below cutoff then the theta will be fixed to zero |
stratVar |
A variable to stratify on for cross-validation |
... |
Other parameters to be passed to optimalTvaluelasso |
return data frame of final lasso coefficients
Vishal Sarsani
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) varsVec <- c("ka","cl","v") covarsVec <- c("WT") catvarsVec <- c("SEX") # Lasso coefficients: lassoDf <- lassoCoefficients(fit, varsVec, covarsVec, catvarsVec, constraint=1e-08, stratVar = NULL) ## End(Not run)
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) varsVec <- c("ka","cl","v") covarsVec <- c("WT") catvarsVec <- c("SEX") # Lasso coefficients: lassoDf <- lassoCoefficients(fit, varsVec, covarsVec, catvarsVec, constraint=1e-08, stratVar = NULL) ## End(Not run)
Create Lasso summary posterior estimates
lassoSummardf(fit, covarsVec, ...)
lassoSummardf(fit, covarsVec, ...)
fit |
compiled rxode2 nlmir2 model fit |
covarsVec |
character vector of covariates that need to be added |
... |
other parameters passed to brm(): warmup = 1000, iter = 2000, chains = 4, cores = 4, control = list(adapt_delta = 0.99, max_treedepth = 15) |
Horse shoe Summary data frame of all covariates
Vishal Sarsani, Christian Bartels
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) covarsVec <- c("WT") # Horseshoe summary posterior estimates: #lassoDf <- lassoSummardf(fit,covarsVec,cores=2) #brms sometimes may throw a Error in sink(type = “output”) #Issue Should be fixed by uninstalling and re-installing rstan ## End(Not run)
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) covarsVec <- c("WT") # Horseshoe summary posterior estimates: #lassoDf <- lassoSummardf(fit,covarsVec,cores=2) #brms sometimes may throw a Error in sink(type = “output”) #Issue Should be fixed by uninstalling and re-installing rstan ## End(Not run)
Function to return data of normalized covariates
normalizedData(data, covarsVec, replace = TRUE)
normalizedData(data, covarsVec, replace = TRUE)
data |
a dataframe with covariates to normalize |
covarsVec |
a list of covariate names (parameters) that need to be estimates |
replace |
replace the original covariate data with normalized data for easier updated model. |
data frame with all normalized covariates
Vishal Sarsani
d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 covarsVec <- c("WT") # Normalized covariate (replaced) df1 <- normalizedData(d,covarsVec,replace=TRUE) # Normalized covariate (without replacement) df2 <- normalizedData(d,covarsVec,replace=FALSE)
d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 covarsVec <- c("WT") # Normalized covariate (replaced) df1 <- normalizedData(d,covarsVec,replace=TRUE) # Normalized covariate (without replacement) df2 <- normalizedData(d,covarsVec,replace=FALSE)
Sample from uniform distribution by optim
optimUnisampling(xvec, N = 1000, medValue, floorT = TRUE)
optimUnisampling(xvec, N = 1000, medValue, floorT = TRUE)
xvec |
A vector of min,max values . Ex:c(10,20) |
N |
Desired number of values |
medValue |
Desired Median |
floorT |
boolean indicating whether to round up |
Samples with approx desired median.
Vishal Sarsani
# Simulate 1000 creatine clearance values with median of 71.7 within range of c(6.7,140) creatCl <- optimUnisampling(xvec=c(6.7,140), N=1000, medValue = 71.7, floorT=FALSE)
# Simulate 1000 creatine clearance values with median of 71.7 within range of c(6.7,140) creatCl <- optimUnisampling(xvec=c(6.7,140), N=1000, medValue = 71.7, floorT=FALSE)
Linearly re-parameterize the model to be less sensitive to rounding errors
preconditionFit(fit, estType = c("full", "posthoc", "none"), ntry = 10L)
preconditionFit(fit, estType = c("full", "posthoc", "none"), ntry = 10L)
fit |
A nlmixr2 fit to be preconditioned |
estType |
Once the fit has been linearly reparameterized, should a "full" estimation, "posthoc" estimation or simply a estimation of the covariance matrix "none" before the fit is updated |
ntry |
number of tries before giving up on a pre-conditioned covariance estimate |
A nlmixr2 fit object that was preconditioned to stabilize the variance/covariance calculation
Aoki Y, Nordgren R, Hooker AC. Preconditioning of Nonlinear Mixed Effects Models for Stabilisation of Variance-Covariance Matrix Computations. AAPS J. 2016;18(2):505-518. doi:10.1208/s12248-016-9866-5
Regular lasso model
regularmodel( fit, varsVec, covarsVec, catvarsVec, constraint = 1e-08, lassotype = c("regular", "adaptive", "adjusted"), stratVar = NULL, ... )
regularmodel( fit, varsVec, covarsVec, catvarsVec, constraint = 1e-08, lassotype = c("regular", "adaptive", "adjusted"), stratVar = NULL, ... )
fit |
nlmixr2 fit. |
varsVec |
character vector of variables that need to be added |
covarsVec |
character vector of covariates that need to be added |
catvarsVec |
character vector of categorical covariates that need to be added |
constraint |
theta cutoff. below cutoff then the theta will be fixed to zero. |
lassotype |
must be 'regular' , 'adaptive', 'adjusted' |
stratVar |
A variable to stratify on for cross-validation. |
... |
Other parameters to be passed to optimalTvaluelasso |
return fit of the selected lasso coefficients
Vishal Sarsani
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) varsVec <- c("ka","cl","v") covarsVec <- c("WT") catvarsVec <- c("SEX") # Model fit with regular lasso coefficients: lassoDf <- regularmodel(fit,varsVec,covarsVec,catvarsVec) # Model fit with adaptive lasso coefficients: lassoDf <- regularmodel(fit,varsVec,covarsVec,catvarsVec,lassotype='adaptive') # Model fit with adaptive-adjusted lasso coefficients: lassoDf <- regularmodel(fit,varsVec,covarsVec,catvarsVec, lassotype='adjusted') ## End(Not run)
## Not run: one.cmt <- function() { ini({ tka <- 0.45; label("Ka") tcl <- log(c(0, 2.7, 100)); label("Cl") tv <- 3.45; label("V") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } d <- nlmixr2data::theo_sd d$SEX <-0 d$SEX[d$ID<=6] <-1 fit <- nlmixr2(one.cmt, d, est = "saem", control = list(print = 0)) varsVec <- c("ka","cl","v") covarsVec <- c("WT") catvarsVec <- c("SEX") # Model fit with regular lasso coefficients: lassoDf <- regularmodel(fit,varsVec,covarsVec,catvarsVec) # Model fit with adaptive lasso coefficients: lassoDf <- regularmodel(fit,varsVec,covarsVec,catvarsVec,lassotype='adaptive') # Model fit with adaptive-adjusted lasso coefficients: lassoDf <- regularmodel(fit,varsVec,covarsVec,catvarsVec, lassotype='adjusted') ## End(Not run)
This is a nlmixr2 model that is pre-run so that it can be used in
package testing and development. It is regenerated whenever
binaries of nlmixr2extra
are created. If there is a binary
incompatability between the fit objects, a simple rerun of the
installation will fix this nlmixr2 fit object.
A (modified) data frame with 132 rows and 22 columns.
Patient identifier
Time (hr)
Dependent variable (concentration)
Predictions without any between subject variability
Population Residual
Weighted Residuals under the FO assumption
Individual Predictions
Individual Residuals
Individual Weighted Residuals
Conditional Prediction under the FOCE assumption
Conditional Residuals under the FOCE assumption
Conditional Weighted Residuals under the FOCE assumption
Between subject changes for ka
Between subject changes for v
amount in the depot compartment
amount in the central compartment
Individual ka values
Individual cl values
Individual volume of distribution
Time after dose
Dose number