--- title: "full-nca-analysis.rmd" author: "Jan Huisman" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Example Full NCA Analysis} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::knitr} editor_options: chunk_output_type: console --- ## Load libraries ```{r, results='hide'} library(dplyr) library(qpNCA) library(knitr) ``` ## Define mutate_cond and locf functions ```{r} mutate_cond <- function (.data, condition, ..., envir = parent.frame()){ condition <- eval(substitute(condition), .data, envir) if(!any(condition))return(.data) # do nothing if nothing to do .data[condition, ] <- .data[condition, ] %>% mutate(...) .data } locf <- function(x){ good <- !is.na(x) positions <- seq(length(x)) good.positions <- good * positions last.good.position <- cummax(good.positions) last.good.position[last.good.position == 0] <- NA x[last.good.position] } ``` ## Check out Theoph data and prepare data for NCA We use the internal Theoph dataset as input file, modify the data and add necessary columns Furthermore, we introduce some missing values, LOQ values and time deviations ```{r, results="markup", warnings=F} head(Theoph) %>% kable() input.data <- Theoph #we need nominal time variable for some tasks. ntad <- data.frame(rn=c(1:11),ntad=c(0,0.25,0.5,1,2,4,5,7,9,12,24)) input.data %<>% group_by(Subject) %>% mutate(subject=as.numeric(Subject), rn=row_number(), dose=Dose*Wt, bloq=ifelse(conc==0,1,0), loq=0.1, excl_th=0 ) %>% left_join(ntad) %>% ungroup %>% arrange(subject,ntad) %>% select(subject,ntad,tad=Time,conc,dose,bloq,loq,excl_th) input.data %<>% mutate_cond(condition=subject==2&ntad%in%c(24),conc=NA) %>% mutate_cond(condition=subject==4&ntad%in%c(9),conc=NA) %>% mutate_cond(condition=subject==3&ntad==9,excl_th=1) %>% mutate_cond(condition=subject==6&ntad==24,conc=0,bloq=1) %>% filter(!(subject==5&ntad==12)) ``` ## Run full NCA analysis ```{r, results="markup", warnings=F, fig.width = 7} # Create a covariates file, containing at least the dose given cov = input.data %>% distinct(subject,dose) nca = qpNCA( input.data, by = "subject", nomtimevar = "ntad", timevar = "tad", depvar = "conc", bloqvar = "bloq", loqvar = "loq", loqrule = 1, includeCmax = "Y", exclvar = "excl_th", plotdir = NA, timelab = "Time (h)", deplab = "Conc (ng/mL)", tau = 24, tstart = 4, tend = 9, teval = 12, covariates = cov, dose = "dose", factor = 1, reg = "sd", ss = "n", route = "EV", method = 1 ) ``` ## Print results ```{r, results="markup", warnings=F, fig.width = 7} # Covariates: nca$covariates %>% kable() # Corrections applied: nca$corrections %>% kable() # half-life estimation: nca$half_life %>% kable() # PK parameters: nca$pkpar %>% kable() # Regression plots: nca$plots ```