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")
::install_github("certara/tidyvpc") remotes
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
<- tidyvpc::obs_data[MDV == 0]
obs_data <- tidyvpc::sim_data[MDV == 0]
sim_data
#Add LLOQ for each Study
$LLOQ <- obs_data[, ifelse(STUDY == "Study A", 50, 25)]
obs_data
# Binning Method on x-variable (NTIME)
<- observed(obs_data, x=TIME, y=DV) %>%
vpc 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
$PRED <- sim_data[REP == 1, PRED]
obs_data
<- observed(obs_data, x=TIME, y=DV) %>%
vpc 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.