1<!DOCTYPE html> 2<html lang="en" data-theme="light"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Reprostats â Open-Source R for Rigorous Pharma Statistics</title> 7 <meta name="description" content="Open-source R packages for reproducible, regulation-ready pharmaceutical data science."> 8 9 <!-- Favicon --> 10 <link rel="icon" type="image/svg+xml" href="/favicon.svg"> 11 <link rel="icon" type="image/x-icon" href="/favicon.ico" sizes="16x16 32x32 48x48"> 12 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> 13 <link rel="icon" type="image/png" sizes="192x192" href="/favicon-192.png"> 14 <link rel="icon" type="image/png" sizes="512x512" href="/favicon-512.png"> 15 <link rel="manifest" href="/site.webmanifest"> 16 <meta name="theme-color" content="#1a56db"> 17 18 <!-- Open Graph / LinkedIn / Discord preview --> 19 <meta property="og:type" content="website" /> 20 <meta property="og:url" content="https://reprostats.org/" /> 21 <meta property="og:site_name" content="Reprostats" /> 22 <meta property="og:title" content="Reprostats â R infrastructure for regulated data science" /> 23 <meta property="og:description" content="Open-source R packages for reproducibility, audit logging, and data provenance in regulated environments. Explore the docs â"> 24 <meta property="og:image" content="https://reprostats.org/logo-social.png" /> 25 <meta property="og:image:width" content="1200" /> 26 <meta property="og:image:height" content="630" /> 27 <meta property="og:image:alt" content="Reprostats â reproducible, auditable, traceable" /> 28 <meta name="twitter:card" content="summary_large_image" /> 29 <meta name="twitter:site" content="@reprostats" /> 30 <meta name="twitter:title" content="Reprostats â R infrastructure for regulated data science" /> 31 <meta name="twitter:description" content="Open-source R packages for reproducibility, audit logging, and data provenance in regulated environments. Explore the docs â"> 32 <meta name="twitter:image" content="https://reprostats.org/logo-social.png" /> 33 <link rel="preconnect" href="https://fonts.googleapis.com"> 34 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 35 <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,500;1,400&family=IBM+Plex+Sans:wght@300;400;500;600&family=IBM+Plex+Serif:ital,wght@0,300;0,400;0,500;1,300;1,400&display=swap" rel="stylesheet"> 36 <link rel="stylesheet" href="style.css"> 37 <style> 38 .hero { padding:5.5rem 2.5rem 4.5rem; border-bottom:1px solid var(--rule); } 39 .hero-inner { max-width:1120px; margin:0 auto; display:grid; grid-template-columns:1fr 1fr; gap:4rem; align-items:center; } 40 .hero-eyebrow { font-family:'IBM Plex Mono',monospace; font-size:0.7rem; color:var(--accent); letter-spacing:0.16em; text-transform:uppercase; margin-bottom:1.5rem; display:flex; align-items:center; gap:0.625rem; } 41 .hero-eyebrow::before { content:''; display:block; width:1.5rem; height:1px; background:var(--accent); } 42 .hero-sub { font-size:1.0625rem; color:var(--ink-mid); line-height:1.75; margin-bottom:2.25rem; font-weight:300; max-width:480px; } 43 .hero-stats-row { max-width:1120px; margin:0 auto; padding-top:3rem; border-top:1px solid var(--rule); display:flex; gap:3rem; flex-wrap:wrap; } 44 .hstat-num { font-family:'IBM Plex Mono',monospace; font-size:1.375rem; font-weight:500; color:var(--ink); margin-bottom:0.125rem; } 45 .hstat-label { font-size:0.78rem; color:var(--ink-faint); } 46 .pkg-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:1.25rem; } 47 @media(max-width:768px){ .pkg-grid{grid-template-columns:1fr;} } 48 .pkg-suite-label { 49 display: flex; align-items: baseline; gap: 1rem; 50 margin-bottom: 1.25rem; padding-bottom: 0.6rem; 51 border-bottom: 1.5px solid var(--rule); 52 } 53 .pkg-suite-title { 54 font-family: var(--mono); font-size: 0.78rem; font-weight: 600; 55 letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink); 56 } 57 .pkg-suite-sub { 58 font-family: var(--mono); font-size: 0.7rem; 59 color: var(--ink-faint); letter-spacing: 0.03em; 60 } 61 .badge-planned { background: #f0f0f5; color: #6b6f80; } 62 [data-theme="dark"] .badge-planned { background: #1e2030; color: #6b7099; } 63 [data-theme="dark"] .pkg-suite-title { color: var(--ink); } 64 [data-theme="dark"] .pkg-suite-sub { color: var(--ink-faint); } 65 @media(max-width:640px){ .hero{padding:4rem 1.25rem 3rem;} } 66 </style> 67</head> 68<body> 69 70<nav class="nav"> 71 <a href="index.html" class="nav-logo">repro<span>stats</span>
71.org</a> 72 <ul class="nav-links"> 73 <!-- Reprosia link removed during active job search (Aug 2026). 74 Reinstate: <li><a href="https://reprosia.com" target="_blank" rel="noopener">Reprosia â</a></li> --> 75 <li><a href="index.html" class="active">Packages</a></li> 76 <li><a href="blog.html">Blog</a></li> 77 <li><a href="#about">About</a></li> 78 </ul> 79 <div class="nav-right"> 80 <button class="theme-toggle" aria-label="Toggle theme"> 81 <svg class="icon-sun" viewBox="0 0 24 24"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg> 82 <svg class="icon-moon" viewBox="0 0 24 24"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg> 83 </button> 84 <a href="https://github.com/repro-stats" class="btn btn-outline btn-sm" target="_blank" rel="noopener">GitHub</a> 85 </div> 86 <button class="nav-burger" aria-label="Open menu" aria-expanded="false"><span></span><span></span><span></span></button> 87</nav> 88<nav class="nav-drawer"> 89 <!-- Reprosia link removed during active job search (Aug 2026). 90 Reinstate: <a href="https://reprosia.com" target="_blank" rel="noopener">Reprosia â</a> --> 91 <a href="index.html" class="active">Packages</a> 92 <a href="blog.html">Blog</a> 93 <a href="#about">About</a> 94 <a href="https://github.com/repro-stats" target="_blank" rel="noopener">GitHub</a> 95</nav> 96 97<section class="hero"> 98 <div class="hero-inner"> 99 <div> 100 <div class="hero-eyebrow">Open-source R packages</div> 101 <h1 class="display display-xl">Rigorous by<br><em>design.</em></h1> 102 <p class="hero-sub">R infrastructure for regulated pharmaceutical statistics â reproducibility auditing, Bayesian methodology, electronic audit logging, and row-level data provenance.</p> 103 <div class="btn-group"> 104 <a href="#packages" class="btn btn-primary">Explore packages</a> 105 <a href="https://github.com/repro-stats" class="btn btn-outline" target="_blank" rel="noopener">View on GitHub</a> 106 </div> 107 </div> 108 <div> 109 <div class="terminal"> 110 <div class="terminal-bar"> 111 <div class="t-dot t-dot-r"></div><div class="t-dot t-dot-y"></div><div class="t-dot t-dot-g"></div> 112 <span class="t-bar-label">R console</span> 113 </div> 114 <div class="terminal-body" id="term-body"></div> 115 </div> 116 </div> 117 </div> 118 <div class="hero-stats-row"> 119 <div><div class="hstat-num">21 CFR</div><div class="hstat-label">Part 11 & EU Annex 11 compliant</div></div> 120 <div><div class="hstat-num">CDISC</div><div class="hstat-label">ADaM & SDTM aligned</div></div> 121 <div><div class="hstat-num">FDA</div><div class="hstat-label">2026 Bayesian guidance aligned</div></div> 122 <div><div class="hstat-num">IQ/OQ/PQ</div><div class="hstat-label">qualification suites included</div></div> 123 </div> 124</section> 125 126<section class="section" id="packages"> 127 <div class="container"> 128 <div class="eyebrow">R packages</div> 129 <h2 class="display display-lg" style="margin-bottom:1rem">Two suites.<br><em>One workflow.</em></h2> 130 <p style="font-size:1rem;color:var(--ink-mid);max-width:600px;line-height:1.75;font-weight:300;margin-bottom:3rem"> 131 Open-source R tooling for regulated clinical analysis â an infrastructure suite under the Reprostats organisation, 132 and a Bayesian clinical trial suite by <a href="https://reprostats.org/#about" target="_blank" rel="noopener" style="color:var(--accent)">Ndoh Penn</a>. 133 </p> 134 135 <!-- ââ Infrastructure suite ââ --> 136 <div class="pkg-suite-label"> 137 <span class="pkg-suite-title">Reprostats Infrastructure</span> 138 <span class="pkg-suite-sub">github.com/repro-stats</span> 139 </div> 140 <div class="pkg-grid" style="margin-bottom:3rem"> 141 <div class="pkg-card reveal"> 142 <div class="pkg-header"><span class="pkg-name">reproducr</span><div class="pkg-badges"><span class="badge badge-cran">CRAN</span></div></div> 143 <p class="pkg-desc">The reproducibility foundation. Audit, certify, and monitor R scripts and environments for regulated settings. Designed around 21 CFR Part 11-aligned compliance processes.</p> 144 <ul class="pkg-feats"> 145 <li>Script-level audit trail with cryptographic hash</li> 146 <li>Risk scoring for regulatory compliance</li> 147 <li>Environment certification and lockfiles</li> 148 <li>Drift detection across analysis runs</li> 149 </ul> 150 <div class="pkg-install"><span class="prompt">> </span>install.packages("reproducr")</div> 151 <a href="https://repro-stats.github.io/reproducr/" class="pkg-link" target="_blank" rel="noopener">Docs & source â</a> 152 </div> 153 154 <div class="pkg-card reveal reveal-d1"> 155 <div class="pkg-header"><span class="pkg-name">regulog</span><div class="pkg-badges"><span class="badge badge-cran">CRAN</span></div></div> 156 <p class="pkg-desc">Electronic audit logging for R, designed around 21 CFR Part 11 requirements. Tamper-evident, user-attributed, timestamp-verified logging of all analytical actions. Ships with IQ/OQ/PQ qualification scripts.</p> 157 <ul class="pkg-feats"> 158 <li>Hash-chained audit log with electronic signatures</li> 159 <li>User-attributed action tracking with mandatory reasons</li> 160 <li>IQ/OQ/PQ qualification suite included</li> 161 <li>Deep integration with reproducr</li> 162 </ul> 163 <div class="pkg-install"><span class="prompt">> </span>install.packages("regulog")</div> 164 <a href="https://reprostats.org/regulog/" class="pkg-link" target="_blank" rel="noopener">Docs & source â</a> 165 </div> 166 167 <div class="pkg-card reveal reveal-d2" style="grid-column: 1 / -1"> 168 <div class="pkg-header"><span class="pkg-name">lineager</span><div class="pkg-badges"><span class="badge badge-cran">CRAN</span></div></div> 169 <p class="pkg-desc">Row-level data provenance for clinical datasets. Track every transformation from raw SDTM input to analysis-ready ADaM datasets with complete traceability and CDISC Reviewer's Guide-aligned reports.</p> 170 <ul class="pkg-feats"> 171 <li>Row-level lineage IDs that survive filters and joins</li> 172 <li>Mandatory documented reasons for every exclusion</li> 173 <li>CONSORT-style disposition tables from derivation objects</li> 174 <li>Subject-level trace across the full pipeline</li> 175 </ul> 176 <div class="pkg-install"><span class="prompt">> </span>install.packages("lineager")</div> 177 <a href="https://reprostats.org/lineager/" class="pkg-link" target="_blank" rel="noopener">Docs & source â</a> 178 </div> 179 </div> 180 181 <!-- ââ Bayesian suite ââ --> 182 <div class="pkg-suite-label">
183 <span class="pkg-suite-title">Bayesian Methods Suite</span> 184 </div> 185 <div class="pkg-grid"> 186 <div class="pkg-card reveal"> 187 <div class="pkg-header"><span class="pkg-name">bayprior</span><div class="pkg-badges"><span class="badge badge-cran">CRAN</span><span class="badge badge-shiny">Shiny app</span></div></div> 188 <p class="pkg-desc">Structured Bayesian prior elicitation, conflict diagnostics, sensitivity analysis, and regulatory reporting for clinical trials. Aligned with the FDA 2026 draft guidance on Bayesian methods.</p> 189 <ul class="pkg-feats"> 190 <li>SHELF-style elicitation across 6 distribution families</li> 191 <li>Prior-data conflict diagnostics</li> 192 <li>Sensitivity analysis with tornado plots</li> 193 <li>Regulatory prior justification reports (HTML/PDF/Word)</li> 194 </ul> 195 <div class="pkg-install"><span class="prompt">> </span>install.packages("bayprior")</div> 196 <a href="https://ndohpenngit.github.io/bayprior/" class="pkg-link" target="_blank" rel="noopener">Docs & source â</a> 197 </div> 198 199 <div class="pkg-card reveal reveal-d1"> 200 <div class="pkg-header"><span class="pkg-name">baymon</span><div class="pkg-badges"><span class="badge badge-planned">Planned</span></div></div> 201 <p class="pkg-desc">Bayesian interim monitoring using predictive probability. Unified futility and efficacy stopping rules across binary, continuous, and time-to-event endpoints. Integrates bayprior priors directly.</p> 202 <ul class="pkg-feats"> 203 <li>Predictive probability of trial success at each interim</li> 204 <li>Efficacy and futility stopping boundaries</li> 205 <li>Operating characteristics via Monte Carlo simulation</li> 206 <li>FDA 2026 Bayesian guidance aligned</li> 207 </ul> 208 <div class="pkg-install"><span class="prompt">> </span><span style="color:var(--ink-soft)">Coming soon</span></div> 209 <a href="https://github.com/repro-stats" class="pkg-link" target="_blank" rel="noopener">Follow progress â</a> 210 </div> 211 212 <div class="pkg-card reveal reveal-d2"> 213 <div class="pkg-header"><span class="pkg-name">bayoc</span><div class="pkg-badges"><span class="badge badge-planned">Planned</span></div></div> 214 <p class="pkg-desc">Bayesian operating characteristics simulation for clinical trial design. Simulate type I error, power, and expected sample size under user-specified priors and decision thresholds.</p> 215 <ul class="pkg-feats"> 216 <li>OC simulation across prior and design scenarios</li> 217 <li>Prior sensitivity on operating characteristics</li> 218 <li>Regulatory-ready OC tables and plots</li> 219 <li>Works with bayprior and baymon</li> 220 </ul> 221 <div class="pkg-install"><span class="prompt">> </span><span style="color:var(--ink-soft)">Coming soon</span></div> 222 <a href="https://github.com/repro-stats" class="pkg-link" target="_blank" rel="noopener">Follow progress â</a> 223 </div> 224 225 <div class="pkg-card reveal reveal-d3"> 226 <div class="pkg-header"><span class="pkg-name">baysen</span><div class="pkg-badges"><span class="badge badge-planned">Planned</span></div></div> 227 <p class="pkg-desc">Bayesian sensitivity analysis for clinical trials. Prior sensitivity, missing data tipping points, and estimand-aware sensitivity analyses across binary, continuous, and time-to-event endpoints.</p> 228 <ul class="pkg-feats"> 229 <li>Prior sensitivity across elicited prior families</li> 230 <li>Bayesian tipping point analysis for missing data</li> 231 <li>ICH E9(R1) estimand-linked sensitivity framework</li> 232 <li>Unified across all endpoint types</li> 233 </ul> 234 <div class="pkg-install"><span class="prompt">> </span><span style="color:var(--ink-soft)">Coming soon</span></div> 235 <a href="https://github.com/repro-stats" class="pkg-link" target="_blank" rel="noopener">Follow progress â</a> 236 </div> 237 </div> 238 </div> 239</section> 240 241<section class="section section-alt"> 242 <div class="container"> 243 <div class="eyebrow">From the blog</div> 244 <h2 class="display display-md" style="margin-bottom:0.875rem">Recent writing on<br><em>R in regulated settings.</em></h2> 245 <p style="font-size:1rem;color:var(--ink-mid);max-width:480px;line-height:1.75;font-weight:300;margin-bottom:3rem">Practical guides, methodology notes, and regulatory context for pharma statisticians. <a href="blog.html" style="color:var(--accent)">See all posts â</a></p> 246 <div class="blog-grid reveal"> 247 <a href="blog/qualifying-regulog-validated-environment.html" class="blog-card"> 248 <div class="blog-meta"><span class="blog-date">1 Jul 2026</span><span class="blog-read">10 min read</span></div> 249 <h3>Qualifying regulog in a validated R environment</h3> 250 <p>How to run the pre-written IQ/OQ/PQ protocols, capture the qualification record, and log the process itself â for 21 CFR Part 11 and EU Annex 11 environments.</p> 251 <div class="blog-card-footer"><div class="blog-tags"><span class="tag">Validation</span><span class="tag">21 CFR Part 11</span></div><span class="blog-arrow">â</span></div> 252 </a> 253 <a href="blog/regulog-vaccine-immunogenicity.html" class="blog-card"> 254 <div class="blog-meta"><span class="blog-date">26 Jun 2026</span><span class="blog-read">12 min read</span></div> 255 <h3>
25521 CFR Part 11-compliant immunogenicity analysis in R with regulog</h3> 256 <p>End-to-end audit logging for a Phase III RSV vaccine trial â GMT, seroconversion, electronic sign-off, and hash chain verification.</p> 257 <div class="blog-card-footer"><div class="blog-tags"><span class="tag">regulog</span><span class="tag">21 CFR Part 11</span></div><span class="blog-arrow">â</span></div> 258 </a> 259 <a href="blog/lineager-dermatology.html" class="blog-card"> 260 <div class="blog-meta"><span class="blog-date">26 Jun 2026</span><span class="blog-read">9 min read</span></div> 261 <h3>Traceable ADaM derivation: every exclusion documented with lineager</h3> 262 <p>Building ADEFF with row-level provenance â population flags, change from baseline, EASI-75 responder flag, CONSORT table, and subject-level tracing.</p> 263 <div class="blog-card-footer"><div class="blog-tags"><span class="tag">lineager</span><span class="tag">CDISC ADaM</span></div><span class="blog-arrow">â</span></div> 264 </a> 265 <a href="blog/bayesian-priors-clinical-trials.html" class="blog-card"> 266 <div class="blog-meta"><span class="blog-date">22 Jun 2026</span><span class="blog-read">8 min read</span></div> 267 <h3>Bayesian prior elicitation for clinical trials: a practical guide with bayprior</h3> 268 <p>How to elicit, document, and justify informative priors for regulatory submissions â aligned with FDA 2026 draft guidance.</p> 269 <div class="blog-card-footer"><div class="blog-tags"><span class="tag">Bayesian</span><span class="tag">bayprior</span></div><span class="blog-arrow">â</span></div> 270 </a> 271 </div> 272 </div> 273</section> 274 275<section class="section section-alt" id="about"> 276 <div class="container"> 277 <div class="eyebrow">About Reprostats</div> 278 <h2 class="display display-md" style="margin-bottom:3rem">Why these packages<br><em>exist.</em></h2> 279 <div class="about-layout reveal"> 280 <div class="about-prose"> 281 <p>
281Reproducibility in clinical analyses is harder than it should be. R environments go undocumented, package versions drift, and the steps between raw data and submission output are rarely captured in a way that supports independent verification.</p> 282 <p>Reprostats is an open-source project building the R infrastructure to address this. Packages covering behavioural reproducibility auditing (<strong>reproducr</strong>), electronic audit logging (<strong>regulog</strong>), Bayesian prior methodology (<strong>bayprior</strong>), and row-level data provenance (<strong>lineager</strong>).</p> 283 <p>Alongside the infrastructure suite, <a href="https://reprostats.org/#about" target="_blank" style="color:var(--accent)">Ndoh Penn</a> maintains a Bayesian clinical trial suite (<strong>bayprior</strong> on CRAN, with <strong>baymon</strong>, <strong>bayoc</strong>, and <strong>baysen</strong> in development) aligned with FDA 2026 Bayesian guidance.</p> 284 <p>Reprostats is maintained by <strong>Ndoh Penn</strong>, a biostatistician based in Antwerp, Belgium.</p> 285 <!-- Reprosia mention removed during active job search (Aug 2026). 286 Reinstate as final sentence above: The enterprise platform built on 287 this foundation is <a href="https://reprosia.com" target="_blank" rel="noopener">Reprosia</a>. --> 288 </div> 289 <div class="about-stats"> 290 <div class="astat"><div class="astat-num">21 CFR</div><div class="astat-label">Part 11 & EU Annex 11</div></div> 291 <div class="astat"><div class="astat-num">CDISC</div><div class="astat-label">ADaM & SDTM aligned</div></div> 292 <div class="astat"><div class="astat-num">FDA</div><div class="astat-label">2026 Bayesian guidance</div></div> 293 <div class="astat"><div class="astat-num">EU</div><div class="astat-label">Antwerp, Belgium</div></div> 294 </div> 295 </div> 296 </div> 297</section> 298 299<div class="cta-strip"> 300 <div class="cta-strip-inner"> 301 <h2>Questions, contributions,<br>or <em>collaboration?</em></h2> 302 <div class="cta-right"> 303 <a href="https://github.com/repro-stats" class="btn btn-primary" target="_blank" rel="noopener">Open an issue on GitHub</a> 304 <p class="cta-email"><a href="mailto:[email protected]">[email protected]</a></p> 305 </div> 306 </div> 307</div> 308 309<footer> 310 <a href="/" class="footer-logo">repro<span>stats</span>.org</a> 311 <ul class="footer-links"> 312 <!-- Reprosia link removed during active job search (Aug 2026). 313 Reinstate: <li><a href="https://reprosia.com" target="_blank" rel="noopener">Reprosia</a></li> --> 314 <li><a href="https://github.com/repro-stats" target="_blank" rel="noopener">GitHub</a></li> 315 <li><a href="blog.html">Blog</a></li> 316 <li><a href="https://ndohpenngit.github.io/bayprior/" target="_blank" rel="noopener">bayprior docs</a></li> 317 <li><a href="mailto:[email protected]">Contact</a></li> 318 </ul> 319 <span class="footer-copy">© 2026 Ndoh Penn · Antwerp, Belgium</span> 320</footer> 321
322<script src="main.js"></script>
322 323</body> 324</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.