Learn R Programming

eventPred

eventPred predicts enrollment and event timing in clinical trials. It supports both:

  • Design stage prediction using model assumptions and optional priors.
  • Analysis stage prediction using observed blinded or unblinded data.

The package provides enrollment modeling, time-to-event modeling, time-to-dropout modeling, simulation-based prediction intervals, and an interactive Shiny app.

Installation

Install the development version from GitHub:

# install.packages("remotes")
remotes::install_github("kaifenglu/eventPred")

Key Features

  • Enrollment models: Poisson, time-decay, B-spline, piecewise Poisson.
  • Event/dropout models: exponential, Weibull, log-logistic, log-normal, piecewise exponential, model averaging, spline, and Cox.
  • By-treatment prediction and optional baseline covariates.
  • Prediction intervals based on simulation (nreps).
  • Support for fixed follow-up and variable follow-up designs.
  • Built-in example datasets: interimData1, interimData2, finalData.

Typical Workflow

  1. Summarize observed data with summarizeObserved().
  2. Fit enrollment, event, and dropout models with fitEnrollment(), fitEvent(), and fitDropout().
  3. Generate predictions with:
    • predictEnrollment() for enrollment only
    • predictEvent() for event timing only
    • getPrediction() for end-to-end enrollment and event prediction

Minimal Example

library(eventPred)

# Event prediction after enrollment completion
set.seed(3000)

pred <- getPrediction(
  df = interimData2,
  to_predict = "event only",
  target_d = 200,
  event_model = "weibull",
  dropout_model = "exponential",
  pilevel = 0.90,
  nreps = 100
)

pred$event_pred$event_pred_summary

Model-Fit + Prediction Example

library(eventPred)

set.seed(2000)

event_fits <- fitEvent(
  df = interimData2,
  event_model = "piecewise exponential",
  piecewiseSurvivalTime = c(0, 140, 352)
)

dropout_fits <- fitDropout(
  df = interimData2,
  dropout_model = "exponential"
)

event_pred <- predictEvent(
  df = interimData2,
  target_d = 200,
  event_fit = event_fits$fit,
  dropout_fit = dropout_fits$fit,
  pilevel = 0.90,
  nreps = 100
)

event_pred$event_pred_summary

Design Stage Example

library(eventPred)

set.seed(1000)

enroll_pred <- predictEnrollment(
  target_n = 300,
  enroll_fit = list(
    model = "piecewise poisson",
    theta = log(26 / 9 * seq(1, 9) / 30.4375),
    vtheta = diag(9) * 1e-8,
    accrualTime = seq(0, 8) * 30.4375
  ),
  pilevel = 0.90,
  nreps = 100
)

enroll_pred$enroll_pred_summary

Run the Shiny App

library(eventPred)
runShinyApp_eventPred()

Time Unit

The package uses days as the primary time unit. To convert rates per month to rates per day, divide by 30.4375.

Documentation

Citation

If you use eventPred in analysis or reporting, please cite relevant methodology references included in the package documentation.

Copy Link

Version

Install

install.packages('eventPred')

Monthly Downloads

357

Version

0.3.1

License

GPL (>= 2)

Issues

Pull Requests

Stars

Forks

Maintainer

Kaifeng Lu

Last Published

August 1st, 2026

Functions in eventPred (0.3.1)

pwexpreg

Piecewise exponential regression
runShinyApp_eventPred

Run Shiny app
predictEnrollment

Predict enrollment
qpwexp

Quantile function for piecewise exponential regression
interimData2

Interim enrollment and event data after enrollment completion
fitEnrollment

Fit enrollment model
eventPred-package

Event Prediction
getPrediction

Enrollment and event prediction
fitDropout

Fit time-to-dropout model
fitEvent

Fit time-to-event model
predictEvent

Predict event
interimData1

Interim enrollment and event data before enrollment completion
pllik_pwexp

Profile log likelihood for piecewise exponential regression
summarizeObserved

Summarize observed data
ppwexp

Distribution function for piecewise exponential regression
pmodavg

Distribution function for model averaging of Weibull and log-normal
finalData

Final enrollment and event data after achieving the target number of events