Nothing
## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
echo = TRUE,
message = FALSE,
warning = FALSE,
fig.align="center",
fig.height= 4,
fig.width = 6
)
## ---- libraries---------------------------------------------------------------
library(tci)
library(ggplot2) # ggplot for plotting
library(gridExtra) # arrangeGrob to arrange plots
library(reshape2) # melt function
## ---- echo=FALSE, eval = FALSE------------------------------------------------
# old <- theme_set(theme_bw())
# ggplot <- function(...) ggplot2::ggplot(...) +
# scale_color_brewer(palette="Pastel1")
# # scale_color_manual(values = c("black","steelblue","seagreen"))
## -----------------------------------------------------------------------------
# 1-compartment model
(mod1cpt <- pkmod(pars_pk = c(cl = 10, v = 15)))
# 3-compartment model with effect site
(mod3ecpt <- pkmod(pars_pk = c(cl = 10, q2 = 2, q3 =20, v = 15, v2 = 30, v3 = 50, ke0 = 1.2)))
## -----------------------------------------------------------------------------
# acceptable parameter names
list_parnms()
## -----------------------------------------------------------------------------
update(mod3ecpt, pars_pk = c(ke0 = 0.9), init = c(1,0.2,0.3,1))
## -----------------------------------------------------------------------------
# single infusion
(single_inf <- inf_manual(inf_tms = 0, duration = 0.5, inf_rate = 100))
# multiple infusions
(multi_inf <- inf_manual(inf_tms = c(0,3,6), duration = c(1,0.5,0.25), inf_rate = 100))
## -----------------------------------------------------------------------------
# plasma targeting for one-compartment model
inf_1cpt <- inf_tci(target_vals = c(2,3,4,4), target_tms = c(0,2,3,10),
pkmod = mod1cpt, type = "plasma")
head(inf_1cpt)
# effect-site targeting for three-compartment effect site model
inf_3ecpt <- inf_tci(target_vals = c(2,3,4,4), target_tms = c(0,2,3,10),
pkmod = mod3ecpt, type = "effect")
head(inf_3ecpt)
## -----------------------------------------------------------------------------
# prediction/observation times
tms_pred <- seq(0,10,0.01)
tms_obs <- c(0.5,1,2,4,6,10)
pre <- predict(mod3ecpt, inf = inf_3ecpt, tms = tms_pred)
obs <- simulate(mod3ecpt, seed = 1, inf = inf_3ecpt, tms = tms_obs, sigma_mult = 0.2)
# plot results
dat <- data.frame(time = tms_pred, `plasma (3 cmpt)` = pre[,"c1"],
`effect (ke0=1.2)` = pre[,"c4"],
check.names = FALSE)
datm <- melt(dat, id = "time")
dat_obs <- data.frame(time = tms_obs, con = obs, variable = "plasma (3 cmpt)")
p <- ggplot(datm, aes(x = time, y = value, color = variable)) +
geom_line() +
geom_point(data = dat_obs, aes(x = time, y = con)) +
xlab("Minutes") + ylab("Concentration (mg/L)")
p
## -----------------------------------------------------------------------------
# evaluate with different ke0 parameter
pre_misspec <- predict(mod3ecpt, inf = inf_3ecpt, tms = tms_pred,
pars_pk = c(ke0 = 0.8))
dat_misspec <- data.frame(pre_misspec, variable = "effect (ke0=0.8)", time = tms_pred)
p + geom_line(data = dat_misspec, aes(x = time, y = c4, color = variable))
## -----------------------------------------------------------------------------
# predicted concentrations
pre_1cpt <- predict(mod1cpt, inf = inf_3ecpt, tms = tms_pred)
dat_1cpt <- data.frame(pre_1cpt, variable = "plasma (1 cmpt)", time = tms_pred)
# simulated observations
obs_1cpt <- simulate(mod1cpt, seed = 1, inf = inf_3ecpt, tms = tms_obs, sigma_mult = 0.2)
p + geom_line(data = dat_1cpt, aes(x = time, y = c1, color = variable)) +
geom_point(data = data.frame(time = tms_obs, con = obs_1cpt, variable = "plasma (1 cmpt)"),
aes(x = time, y = con), inherit.aes = FALSE, color = "green4")
## -----------------------------------------------------------------------------
modpd <- update(mod3ecpt, pdfn = emax, pdinv = emax_inv,
pars_pd = c(e0 = 100, emx = 100, c50 = 3.5, gamma = 2.2))
## -----------------------------------------------------------------------------
inf_pd <- inf_tci(target_vals = c(70,60,50,50), target_tms = c(0,2,3,10), pkmod = modpd, type = "effect")
## -----------------------------------------------------------------------------
# predict responses
pre_pd <- predict(modpd, inf = inf_pd, tms = tms_pred)
# pd observations: 10 sec = 1/6 min
tms_pd_obs <- seq(1/6,10,1/6)
# simulate responses with additive error and parameter misspecification
obs_pd <- simulate(modpd, seed = 1, inf = inf_pd, tms = tms_pd_obs, sigma_add = 5,
pars_pk = c(ke0 = 0.7), pars_pd = c(c50 = 3, gamma = 1.8))
# plot results
dat_pd <- data.frame(time = tms_pred, `plasma (3 cmpt)` = pre_pd[,"c1"],
`effect (ke0=1.2)` = pre_pd[,"c4"],
BIS = pre_pd[,"pdresp"],
check.names = FALSE)
dat_pdm <- melt(dat_pd, id = "time")
dat_pdm$type <- as.factor(ifelse(dat_pdm$variable == "BIS", "PD","PK"))
dat_pd_obs <- data.frame(time = tms_pd_obs, BIS = obs_pd,
type = factor("PD"), variable = "BIS")
levels(dat_pdm$type) <- levels(dat_pd_obs$type) <- c("Bispectral Index", "Concentration (mg/L)")
ggplot(dat_pdm, aes(x = time, y = value, color = variable)) +
facet_wrap(type~., scales = "free", nrow = 2) +
geom_line() +
geom_point(data = dat_pd_obs, aes(x = time, y = BIS)) +
xlab("Minutes") + ylab("")
## -----------------------------------------------------------------------------
mod_true <- update(mod3ecpt, pars_pk = c(cl = 20, q2 = 1.5, ke0 = 1.8))
sim_ol <- simulate_tci(pkmod_prior = mod3ecpt,
pkmod_true = mod_true,
target_vals = c(2,3,4,4),
target_tms = c(0,2,3,24),
obs_tms = c(1,2,3,4,8,12),
seed = 1)
ggplot(melt(sim_ol$resp, id.vars = c("time","type"))) +
geom_line(aes(x = time, y = value, color = variable)) +
geom_point(data = sim_ol$obs, aes(x = time, y = obs)) +
facet_wrap(~type) +
labs(x = "Hours", y = "Concentration (mg/L)")
## -----------------------------------------------------------------------------
mod3ecpt <- update(mod3ecpt, sigma_mult = 0.2,
Omega = matrix(diag(c(1.2,0.6,1.5,0.05)), 4,4,
dimnames = list(NULL, c("cl","q2","v","ke0"))))
sim_cl <- simulate_tci(pkmod_prior = mod3ecpt,
pkmod_true = mod_true,
target_vals = c(2,3,4,4),
target_tms = c(0,2,3,24),
obs_tms = c(1,2,3,4,8,12),
update_tms = c(6,12,16),
delay = 0,
seed = 1)
ggplot(melt(sim_cl$resp, id.vars = c("time","type"))) +
geom_line(aes(x = time, y = value, color = variable)) +
geom_point(data = sim_cl$obs, aes(x = time, y = obs)) +
facet_wrap(~type) +
labs(x = "Hours", y = "Concentration (mg/L)")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.