Function plots model predictions for the typical value in the population, individual predictions and data predictions.
plot_model_prediction( poped.db, model_num_points = 100, groupsize_sim = 100, separate.groups = F, sample.times = T, sample.times.IPRED = F, sample.times.DV = F, PRED = T, IPRED = F, IPRED.lines = F, IPRED.lines.pctls = F, alpha.IPRED.lines = 0.1, alpha.IPRED = 0.3, sample.times.size = 4, DV = F, alpha.DV = 0.3, DV.lines = F, DV.points = F, alpha.DV.lines = 0.3, alpha.DV.points = 0.3, sample.times.DV.points = F, sample.times.DV.lines = F, alpha.sample.times.DV.points = 0.3, alpha.sample.times.DV.lines = 0.3, y_lab = "Model Predictions", facet_scales = "fixed", facet_label_names = T, model.names = NULL, DV.mean.sd = FALSE, PI = FALSE, PI_alpha = 0.3, ... )
poped.db | A PopED database. |
---|---|
model_num_points | How many extra observation rows should be created in the data frame for each group or individual
per model. If used then the points are placed evenly between |
groupsize_sim | How many individuals per group should be simulated when DV=TRUE or IPRED=TRUE to create prediction intervals? |
separate.groups | Should there be separate plots for each group. |
sample.times | Should sample times be shown on the plots. |
sample.times.IPRED | Should sample times be shown based on the IPRED y-values. |
sample.times.DV | Should sample times be shown based on the DV y-values. |
PRED | Should a PRED line be drawn. |
IPRED | Should we simulate individual predictions? |
IPRED.lines | Should IPRED lines be drawn? |
IPRED.lines.pctls | Should lines be drawn at the chosen percentiles of the IPRED values? |
alpha.IPRED.lines | What should the transparency for the IPRED.lines be? |
alpha.IPRED | What should the transparency of the IPRED CI? |
sample.times.size | What should the size of the sample.times be? |
DV | should we simulate observations? |
alpha.DV | What should the transparency of the DV CI? |
DV.lines | Should DV lines be drawn? |
DV.points | Should DV points be drawn? |
alpha.DV.lines | What should the transparency for the DV.lines be? |
alpha.DV.points | What should the transparency for the DV.points be? |
sample.times.DV.points | TRUE or FALSE. |
sample.times.DV.lines | TRUE or FALSE. |
alpha.sample.times.DV.points | What should the transparency for the sample.times.DV.points be? |
alpha.sample.times.DV.lines | What should the transparency for the sample.times.DV.lines be? |
y_lab | The label of the y-axis. |
facet_scales | Can be "free", "fixed", "free_x" or "free_y" |
facet_label_names | TRUE or FALSE |
model.names | A vector of names of the response model/s (the length of the vector should be equal to the number of response models). It is Null by default. |
DV.mean.sd | Plot the mean and standard deviation of simulated observations. |
PI | Plot prediction intervals for the expected data given the model.
Predictions are based on first-order approximations to
the model variance and a normality assumption of that variance. As such these computations are
more approximate than using |
PI_alpha | The transparency of the PI. |
... | Additional arguments passed to the |
A ggplot object. If you would like to further edit this plot don't
forget to load the ggplot2 library using library(ggplot2)
.
Other evaluate_design:
evaluate.fim()
,
evaluate_design()
,
evaluate_power()
,
get_rse()
,
model_prediction()
,
plot_efficiency_of_windows()
Other Simulation:
model_prediction()
,
plot_efficiency_of_windows()
Other Graphics:
plot_efficiency_of_windows()
## Warfarin example from software comparison in: ## Nyberg et al., "Methods and software tools for design evaluation ## for population pharmacokinetics-pharmacodynamics studies", ## Br. J. Clin. Pharm., 2014. library(PopED) ## find the parameters that are needed to define from the structural model ff.PK.1.comp.oral.md.CL#> function (model_switch, xt, parameters, poped.db) #> { #> with(as.list(parameters), { #> y = xt #> N = floor(xt/TAU) + 1 #> y = (DOSE * Favail/V) * (KA/(KA - CL/V)) * (exp(-CL/V * #> (xt - (N - 1) * TAU)) * (1 - exp(-N * CL/V * TAU))/(1 - #> exp(-CL/V * TAU)) - exp(-KA * (xt - (N - 1) * TAU)) * #> (1 - exp(-N * KA * TAU))/(1 - exp(-KA * TAU))) #> return(list(y = y, poped.db = poped.db)) #> }) #> } #> <bytecode: 0x7fe25cadfcb0> #> <environment: namespace:PopED>## -- parameter definition function ## -- names match parameters in function ff sfg <- function(x,a,bpop,b,bocc){ parameters=c(CL=bpop[1]*exp(b[1]), V=bpop[2]*exp(b[2]), KA=bpop[3]*exp(b[3]), Favail=bpop[4], DOSE=a[1]) return(parameters) } ## -- Define initial design and design space poped.db <- create.poped.database(ff_file="ff.PK.1.comp.oral.sd.CL", fg_file="sfg", fError_file="feps.prop", bpop=c(CL=0.15, V=8, KA=1.0, Favail=1), notfixed_bpop=c(1,1,1,0), d=c(CL=0.07, V=0.02, KA=0.6), sigma=0.01, groupsize=32, xt=c( 0.5,1,2,6,24,36,72,120), minxt=0, maxxt=120, a=70)#> Warning: cannot open file 'sfg': No such file or directory#> Error in file(filename, "r", encoding = encoding): cannot open the connection## create plot of model without variability plot_model_prediction(poped.db)#> Error in model_prediction(poped.db, model_num_points = model_num_points, PI = PI, ...): object 'poped.db' not found## create plot of model with variability by simulating from OMEGA and SIGMA plot_model_prediction(poped.db,IPRED=TRUE,DV=TRUE)#> Error in model_prediction(poped.db, model_num_points = model_num_points, PI = PI, ...): object 'poped.db' not found## create plot of model with variability by ## computing the expected variance (using an FO approximation) ## and then computing a prediction interval ## based on an assumption of normality ## computation is faster but less accurate ## compared to using DV=TRUE (and groupsize_sim = 500) plot_model_prediction(poped.db,PI=TRUE)#> Error in model_prediction(poped.db, model_num_points = model_num_points, PI = PI, ...): object 'poped.db' not found##-- Model: One comp first order absorption + inhibitory imax ## -- works for both mutiple and single dosing ff <- function(model_switch,xt,parameters,poped.db){ with(as.list(parameters),{ y=xt MS <- model_switch # PK model N = floor(xt/TAU)+1 CONC=(DOSE*Favail/V)*(KA/(KA - CL/V)) * (exp(-CL/V * (xt - (N - 1) * TAU)) * (1 - exp(-N * CL/V * TAU))/(1 - exp(-CL/V * TAU)) - exp(-KA * (xt - (N - 1) * TAU)) * (1 - exp(-N * KA * TAU))/(1 - exp(-KA * TAU))) # PD model EFF = E0*(1 - CONC*IMAX/(IC50 + CONC)) y[MS==1] = CONC[MS==1] y[MS==2] = EFF[MS==2] return(list( y= y,poped.db=poped.db)) }) } ## -- parameter definition function sfg <- function(x,a,bpop,b,bocc){ parameters=c( V=bpop[1]*exp(b[1]), KA=bpop[2]*exp(b[2]), CL=bpop[3]*exp(b[3]), Favail=bpop[4], DOSE=a[1], TAU = a[2], E0=bpop[5]*exp(b[4]), IMAX=bpop[6], IC50=bpop[7]) return( parameters ) } ## -- Residual Error function feps <- function(model_switch,xt,parameters,epsi,poped.db){ returnArgs <- ff(model_switch,xt,parameters,poped.db) y <- returnArgs[[1]] poped.db <- returnArgs[[2]] MS <- model_switch pk.dv <- y*(1+epsi[,1])+epsi[,2] pd.dv <- y*(1+epsi[,3])+epsi[,4] y[MS==1] = pk.dv[MS==1] y[MS==2] = pd.dv[MS==2] return(list( y= y,poped.db =poped.db )) } poped.db <- create.poped.database( ff_fun="ff", fError_fun="feps", fg_fun="sfg", groupsize=20, m=3, bpop=c(V=72.8,KA=0.25,CL=3.75,Favail=0.9, E0=1120,IMAX=0.807,IC50=0.0993), notfixed_bpop=c(1,1,1,0,1,1,1), d=c(V=0.09,KA=0.09,CL=0.25^2,E0=0.09), sigma=c(0.04,5e-6,0.09,100), notfixed_sigma=c(0,0,0,0), xt=c( 1,2,8,240,240,1,2,8,240,240), minxt=c(0,0,0,240,240,0,0,0,240,240), maxxt=c(10,10,10,248,248,10,10,10,248,248), discrete_xt = list(0:248), G_xt=c(1,2,3,4,5,1,2,3,4,5), bUseGrouped_xt=1, model_switch=c(1,1,1,1,1,2,2,2,2,2), a=list(c(DOSE=20,TAU=24),c(DOSE=40, TAU=24),c(DOSE=0, TAU=24)), maxa=c(DOSE=200,TAU=40), mina=c(DOSE=0,TAU=2), ourzero=0)#> Error in do.call(poped.db$model$fg_pointer, list(0, 0, 0, 0, zeros(poped.db$parameters$NumDocc, poped.db$parameters$NumOcc))): 'what' must be a function or character string## create plot of model and design plot_model_prediction(poped.db,facet_scales="free", model.names = c("PK","PD"))#> Error in model_prediction(poped.db, model_num_points = model_num_points, PI = PI, ...): object 'poped.db' not found## create plot of model with variability by ## computing the expected variance (using an FO approximation) ## and then computing a prediction interval ## based on an assumption of normality ## computation is faster but less accurate ## compared to using DV=TRUE (and groupsize_sim = 500) plot_model_prediction(poped.db,facet_scales="free", model.names = c("PK","PD"), PI=TRUE, separate.groups = TRUE)#> Error in model_prediction(poped.db, model_num_points = model_num_points, PI = PI, ...): object 'poped.db' not found