The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
tidyvpc
provides a flexible and comprehensive toolkit for parameterizing a Visual Predictive Check (VPC) in R. With tidyverse
style syntax, you can chain together functions (e.g., %>%
or |>
) to easily perform stratification, censoring, prediction correction, and more. tidyvpc
supports both continuous and categorical VPC.
# CRAN
install.packages("tidyvpc")
# Development
# If there are errors (converted from warning) during installation related to packages
# built under different version of R, they can be ignored by setting the environment variable
# R_REMOTES_NO_ERRORS_FROM_WARNINGS="true" before calling remotes::install_github()
Sys.setenv(R_REMOTES_NO_ERRORS_FROM_WARNINGS="true")
remotes::install_github("certara/tidyvpc")
tidyvpc
The Certara.VPCResults
package offers a Shiny app that can be used to easily generate the underlying tidyvpc
and ggplot2
code used to create your VPC.
After importing the observed and simulated data into your R environment, use the function vpcResultsUI()
to parameterize the VPC and customize the resulting plot output using the Shiny GUI - then generate the R code to reproduce from command line!
install.packages("Certara.VPCResults",
repos = c("https://certara.jfrog.io/artifactory/certara-cran-release-public/",
"https://cloud.r-project.org"),
method = "libcurl")
library(tidyvpc)
library(Certara.VPCResults)
vpcResultsUI(observed = obs_data[MDV == 0], simulated = sim_data[MDV == 0])
The Shiny application can serve as a learning heuristic and ensures reproducibility by allowing you to save R
and/or Rmd
scripts. Additionally, you may render RMarkdown to an html
, pdf
, or docx
output report. Click here to learn more about Certara.VPCResults
.
tidyvpc
requires a specific structure of observed and simulated data in order to successfully generate VPC.
MDV == 0
See tidyvpc::obs_data
and tidyvpc::sim_data
for example data structures.
library(magrittr)
library(ggplot2)
library(tidyvpc)
# Filter MDV = 0
obs_data <- tidyvpc::obs_data[MDV == 0]
sim_data <- tidyvpc::sim_data[MDV == 0]
#Add LLOQ for each Study
obs_data$LLOQ <- obs_data[, ifelse(STUDY == "Study A", 50, 25)]
# Binning Method on x-variable (NTIME)
vpc <- observed(obs_data, x=TIME, y=DV) %>%
simulated(sim_data, y=DV) %>%
censoring(blq=(DV < LLOQ), lloq=LLOQ) %>%
stratify(~ STUDY) %>%
binning(bin = NTIME) %>%
vpcstats()
Plot Code:
ggplot(vpc$stats, aes(x=xbin)) +
facet_grid(~ STUDY) +
geom_ribbon(aes(ymin=lo, ymax=hi, fill=qname, col=qname, group=qname), alpha=0.1, col=NA) +
geom_line(aes(y=md, col=qname, group=qname)) +
geom_line(aes(y=y, linetype=qname), size=1) +
geom_hline(data=unique(obs_data[, .(STUDY, LLOQ)]),
aes(yintercept=LLOQ), linetype="dotted", size=1) +
geom_text(data=unique(obs_data[, .(STUDY, LLOQ)]),
aes(x=10, y=LLOQ, label=paste("LLOQ", LLOQ, sep="="),), vjust=-1) +
scale_colour_manual(
name="Simulated Percentiles\nMedian (lines) 95% CI (areas)",
breaks=c("q0.05", "q0.5", "q0.95"),
values=c("red", "blue", "red"),
labels=c("5%", "50%", "95%")) +
scale_fill_manual(
name="Simulated Percentiles\nMedian (lines) 95% CI (areas)",
breaks=c("q0.05", "q0.5", "q0.95"),
values=c("red", "blue", "red"),
labels=c("5%", "50%", "95%")) +
scale_linetype_manual(
name="Observed Percentiles\n(black lines)",
breaks=c("q0.05", "q0.5", "q0.95"),
values=c("dotted", "solid", "dashed"),
labels=c("5%", "50%", "95%")) +
guides(
fill=guide_legend(order=2),
colour=guide_legend(order=2),
linetype=guide_legend(order=1)) +
theme(
legend.position="top",
legend.key.width=grid::unit(1, "cm")) +
labs(x="Time (h)", y="Concentration (ng/mL)")
Or use the built-in plot()
function from the tidyvpc
package.
# Binless method using 10%, 50%, 90% quantiles and LOESS Prediction Corrected
# Add PRED variable to observed data from first replicate of sim_data
obs_data$PRED <- sim_data[REP == 1, PRED]
vpc <- observed(obs_data, x=TIME, y=DV) %>%
simulated(sim_data, y=DV) %>%
stratify(~ GENDER) %>%
predcorrect(pred=PRED) %>%
binless(loess.ypc = TRUE) %>%
vpcstats(qpred = c(0.1, 0.5, 0.9))
plot(vpc)
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.