Submitting Author Name: Yihao Tan
Submitting Author Github Handle: @YihaoTancn
Other Package Authors Github handles: (comma separated, delete if none) @c7rishi, @rmj3197
Repository: https://github.com/YihaoTancn/pvEBayes
Version submitted: 0.2.2
Submission type: Stats
Badge grade: gold
Editor: @LucyMcGowan
Reviewers: @k-doering-NOAA, @collin-cademartori
Due date for
@k-doering-NOAA: 2026-04-08
Due date for @collin-cademartori: 2026-04-08
Archive: TBD
Version accepted: TBD
Language: en
- Paste the full DESCRIPTION file inside a code block below:
Package: pvEBayes
Title: Empirical Bayes Methods for Pharmacovigilance
Version: 0.2.2
Authors@R: c(
person(
"Yihao", "Tan",
email = "yihaotan@buffalo.edu",
role = c("aut", "cre"),
comment = c(ORCID = "0009-0002-9196-8166")
),
person(
"Marianthi", "Markatou",
role = "aut",
comment = c(ORCID = "0000-0002-1453-8229")
),
person(
"Saptarshi", "Chakraborty",
role = c("aut"),
comment = c(ORCID = "0000-0002-3121-9174")
),
person(given = "Raktim", family = "Mukhopadhyay",
role = c("aut"),
comment = c(ORCID = "0009-0007-8972-6682"))
)
Maintainer: Yihao Tan <yihaotan@buffalo.edu>
Description: A suite of empirical Bayes methods to use in pharmacovigilance. Contains various model fitting and post-processing functions. For more details see Tan et al. (2025) <doi:10.1002/sim.70195>, <doi:10.48550/arXiv.2512.01057>; Koenker and Mizera (2014) <doi:10.1080/01621459.2013.869224>; Efron (2016) <doi:10.1093/biomet/asv068>.
License: GPL-3
Encoding: UTF-8
Roxygen: list(markdown = TRUE, roclets = c ("namespace", "rd", "srr::srr_stats_roclet"))
RoxygenNote: 7.3.2
Depends:
R (>= 3.6.0)
Imports:
data.table,
ggdist,
ggfittext,
ggplot2,
glue,
graphics,
magrittr,
methods,
stats,
wacolors,
Rcpp,
splines,
CVXR
LinkingTo:
Rcpp,
RcppEigen
LazyData: true
Suggests:
knitr,
rmarkdown,
testthat (>= 3.0.0)
Config/testthat/edition: 3
URL: https://github.com/YihaoTancn/pvEBayes, https://yihaotancn.github.io/pvEBayes/
BugReports: https://github.com/YihaoTancn/pvEBayes/issues
VignetteBuilder: knitr
Scope
Pre-submission Inquiry
General Information
- Who is the target audience and what are scientific applications of this package?
Target audience of pvEBayes would be statisticians/biostatisticians, pharmacovigilance researchers/practitioners, and epidemiologists who work with spontaneous reporting system (SRS) data.
Scientific application of 'pvEBayes': SRS data mining including (1) identifying AE-drug pairs that have observed case count substantially larger than their expected null value (signal detection); (2) estimating the signal strength of AE-drug pairs (signal strength estimation).
There is no other package that directly provides the methods implemented in pvEBayes, which is a suite of empirical Bayes approaches for signal detection and signal strength estimation in spontaneous reporting systems (SRS) data mining. Currently, there are some existing R packages applying SRS data mining. These packages focus only on signal detection.
Methods implemented in pvEBayes include Gamma-Poisson Shrinker (GPS), Koenker–Mizera method (KM), Efron, K-gamma and general-gamma. pvEBayes package provides the first implementation of K-gamma and general-gamma. There are a few packages that provide functions that can, in theory, be used to provide implementations of our methods; however, substantial modifications and customizations are needed.
The Gamma-Poisson Shrinker (GPS) is also available from another R package: openEBGM. In pvEBayes, the GPS is implemented by our bi-level Expectation Conditional Maximization (ECM) algorithm, offering faster and more stable GPS model fitting.
The KM has a general nonparametric empirical Bayes implementation in the REBayes package. But REBayes relies on Mosek, a commercial convex optimization solver, which may limit accessibility due to licensing issues. The pvEBayes package provides an alternative fully open-source implementation of the KM method using CVXR.
The Efron method has a general nonparametric empirical Bayes implementation in the deconvolveR package; however, that implementation does not support an exposure or offset parameter in the Poisson model, which corresponds to the expected null value ‘E’, a crucial quantity in SRS data mining. In pvEBayes, the implementation of Efron method is adapted and modified from deconvolveR to support incorporation of the exposure/offset term ‘E’ to model the SRS table.
Please include hyperlinked references to all other relevant software.
Relevant software are openEBGM, REBayes, deconvolveR, CVXR, Mosek
Yes
Badging
gold
We believe pvEBayes provides strong evidence toward these gold-grade for the following reseans:
-
pvEBayescompliance with a good number of standards. Specifically, the package satisfies 84 of 128 tagged standards overall, including 29 of 60 Bayesian software standards and 55 of 68 general standards. These numbers suggest that the package goes well beyond a minimal level of compliance and addresses a substantial proportion of both category-specific and general software standards.
-
pvEBayes demonstrates strong compliance with multiple standards across several broad sub-categories. For example, documentation (G1.0–G1.4a), input validation and interface design (G2.0–G2.3b), and testing and diagnostic support (G5.8a–G5.8d and BS5.3–BS5.5). These suggest that the package goes beyond minimum compliance in multiple sub-categories.
-
pvEBayes is designed for use beyond a single envisioned application. Although the motivating examples in the package and accompanying paper illustrated with specific SRS data analyses, the package is implemented for general advent event (AE)-drug frequency table analyses from spontaneous reporting systems. It is not restricted to specific drug class, or AEs, or one particular dataset. Instead, it provides a general nonparametric empirical Bayes framework that supports multiple methods and can be used for both signal detection and signal strength estimation.
-
We believe pvEBayes demonstrates strong internal package design. In particular, the package is organized around a main function, pvEBayes(), which fits nonparametric empirical Bayes models for SRS data, while related tasks are handled through separate function for model tuning (pvEBayes_tune()), printing (print()), summarizing (summary()), and plotting results (plot()). This design promotes clarity and ease for SRS data analysis.
Technical checks
Confirm each of the following by checking the box.
The current version of pvEBayes passes pkgcheck() on my local Windows PC under R 4.5.0, and I therefore believe the package itself is ready for submission. The failure in the GitHub Actions pkgcheck workflow appears to be environment-specific rather than due to an issue in pvEBayes itself.
Specifically, pvEBayes depends on CVXR, which recently had a substantial update. The new version of CVXR introduced a dependency on clarabel, and that dependency now uses a version 4 Cargo lockfile requiring Rust 1.78.0 or newer for compilation.
This package:
Publication options
Code of conduct
Submitting Author Name: Yihao Tan
Due date for @k-doering-NOAA: 2026-04-08Submitting Author Github Handle: @YihaoTancn
Other Package Authors Github handles: (comma separated, delete if none) @c7rishi, @rmj3197
Repository: https://github.com/YihaoTancn/pvEBayes
Version submitted: 0.2.2
Submission type: Stats
Badge grade: gold
Editor: @LucyMcGowan
Reviewers: @k-doering-NOAA, @collin-cademartori
Due date for @collin-cademartori: 2026-04-08
Archive: TBD
Version accepted: TBD
Language: en
Scope
Please indicate which of our statistical package categories this package falls under. (Please check one or more appropriate boxes below):
Statistical Packages
Pre-submission Inquiry
General Information
Target audience of
pvEBayeswould be statisticians/biostatisticians, pharmacovigilance researchers/practitioners, and epidemiologists who work with spontaneous reporting system (SRS) data.Scientific application of 'pvEBayes': SRS data mining including (1) identifying AE-drug pairs that have observed case count substantially larger than their expected null value (signal detection); (2) estimating the signal strength of AE-drug pairs (signal strength estimation).
There is no other package that directly provides the methods implemented in
pvEBayes, which is a suite of empirical Bayes approaches for signal detection and signal strength estimation in spontaneous reporting systems (SRS) data mining. Currently, there are some existing R packages applying SRS data mining. These packages focus only on signal detection.Methods implemented in
pvEBayesinclude Gamma-Poisson Shrinker (GPS), Koenker–Mizera method (KM), Efron, K-gamma and general-gamma.pvEBayespackage provides the first implementation of K-gamma and general-gamma. There are a few packages that provide functions that can, in theory, be used to provide implementations of our methods; however, substantial modifications and customizations are needed.The Gamma-Poisson Shrinker (GPS) is also available from another R package:
openEBGM. InpvEBayes, the GPS is implemented by our bi-level Expectation Conditional Maximization (ECM) algorithm, offering faster and more stable GPS model fitting.The KM has a general nonparametric empirical Bayes implementation in the
REBayespackage. But REBayes relies onMosek, a commercial convex optimization solver, which may limit accessibility due to licensing issues. ThepvEBayespackage provides an alternative fully open-source implementation of the KM method usingCVXR.The Efron method has a general nonparametric empirical Bayes implementation in the
deconvolveRpackage; however, that implementation does not support an exposure or offset parameter in the Poisson model, which corresponds to the expected null value ‘E’, a crucial quantity in SRS data mining. InpvEBayes, the implementation of Efron method is adapted and modified fromdeconvolveRto support incorporation of the exposure/offset term ‘E’ to model the SRS table.Relevant software are openEBGM, REBayes, deconvolveR, CVXR, Mosek
Yes
Badging
gold
We believe pvEBayes provides strong evidence toward these gold-grade for the following reseans:
pvEBayescompliance with a good number of standards. Specifically, the package satisfies 84 of 128 tagged standards overall, including 29 of 60 Bayesian software standards and 55 of 68 general standards. These numbers suggest that the package goes well beyond a minimal level of compliance and addresses a substantial proportion of both category-specific and general software standards.pvEBayesdemonstrates strong compliance with multiple standards across several broad sub-categories. For example, documentation (G1.0–G1.4a), input validation and interface design (G2.0–G2.3b), and testing and diagnostic support (G5.8a–G5.8d and BS5.3–BS5.5). These suggest that the package goes beyond minimum compliance in multiple sub-categories.pvEBayesis designed for use beyond a single envisioned application. Although the motivating examples in the package and accompanying paper illustrated with specific SRS data analyses, the package is implemented for general advent event (AE)-drug frequency table analyses from spontaneous reporting systems. It is not restricted to specific drug class, or AEs, or one particular dataset. Instead, it provides a general nonparametric empirical Bayes framework that supports multiple methods and can be used for both signal detection and signal strength estimation.We believe
pvEBayesdemonstrates strong internal package design. In particular, the package is organized around a main function, pvEBayes(), which fits nonparametric empirical Bayes models for SRS data, while related tasks are handled through separate function for model tuning (pvEBayes_tune()), printing (print()), summarizing (summary()), and plotting results (plot()). This design promotes clarity and ease for SRS data analysis.Technical checks
Confirm each of the following by checking the box.
autotestchecks on the package, and ensured no tests fail.srr_stats_pre_submit()function confirms this package may be submitted.pkgcheck()function confirms this package may be submitted - alternatively, please explain reasons for any checks which your package is unable to pass.The current version of
pvEBayespasses pkgcheck() on my local Windows PC under R 4.5.0, and I therefore believe the package itself is ready for submission. The failure in the GitHub Actions pkgcheck workflow appears to be environment-specific rather than due to an issue inpvEBayesitself.Specifically,
pvEBayesdepends onCVXR, which recently had a substantial update. The new version ofCVXRintroduced a dependency onclarabel, and that dependency now uses a version 4 Cargo lockfile requiring Rust 1.78.0 or newer for compilation.This package:
Publication options
Code of conduct