Skip to content

Latest commit

 

History

History
291 lines (276 loc) · 14.6 KB

File metadata and controls

291 lines (276 loc) · 14.6 KB
layout default
title RobustiPy
description Open-source Python software for multiverse analysis and model uncertainty assessment, published in Patterns.
image /assets/robustipy_logo_large.png
home true
Published in Patterns · 14 August 2026

See how conclusions change across the analytical multiverse.

RobustiPy is an open-source Python library for multiverse analysis and model uncertainty assessment. It brings specification search, resampling, model comparison, validation, and interpretation into one reproducible workflow.

  • Python package
  • Available on PyPI
  • GNU GPL v3.0
<aside class="terminal-card" aria-label="Installation command">
  <div class="terminal-bar">
    <div class="terminal-dots" aria-hidden="true"><span></span><span></span><span></span></div>
    <span>terminal</span>
  </div>
  <pre><code><span class="prompt">$</span> pip install robustipy</code></pre>
  <div class="terminal-note">
    <span>Install the stable release</span>
    <a href="https://pypi.org/project/robustipy/">View on PyPI &rarr;</a>
  </div>
</aside>
5
Controlled simulationsreported in the paper
10
Empirical replicationsacross four research domains
≈672m
Regression-equivalent fitsin the reported time-profiling benchmark

One coherent toolkit

Assess robustness from more than one angle.

RobustiPy helps researchers make defensible modelling choices explicit, estimate their consequences, and inspect uncertainty across specifications.

<div class="feature-grid">
  <article class="feature-card">
    <span class="feature-number">01</span>
    <h3>Specification search</h3>
    <p>Explore admissible outcome constructions and candidate-control combinations, with support for multiple focal estimands.</p>
  </article>
  <article class="feature-card">
    <span class="feature-number">02</span>
    <h3>Bootstrap inference</h3>
    <p>Quantify sampling uncertainty across specifications with reproducible bootstrap-based routines.</p>
  </article>
  <article class="feature-card">
    <span class="feature-number">03</span>
    <h3>Model selection and averaging</h3>
    <p>Compare specifications using fit criteria and summarise results with weighted or unweighted estimates.</p>
  </article>
  <article class="feature-card">
    <span class="feature-number">04</span>
    <h3>Out-of-sample validation</h3>
    <p>Use cross-validation to assess whether model performance holds beyond the estimation sample.</p>
  </article>
  <article class="feature-card">
    <span class="feature-number">05</span>
    <h3>Joint inference</h3>
    <p>Evaluate evidence across related estimates rather than relying on isolated significance tests.</p>
  </article>
  <article class="feature-card">
    <span class="feature-number">06</span>
    <h3>Feature-level explanations</h3>
    <p>Inspect variable influence in the full-specification predictive model with explainable-AI tools.</p>
  </article>
</div>

A transparent workflow

From modelling choices to interpretable evidence.

Frame the choice space

Define the outcomes, predictors, controls, estimators, and resampling strategy that are defensible for the question.

Estimate the multiverse

Run combinations systematically, with sampling and parallelisation options when the specification space is large.

Interpret results together

Compare estimates, uncertainty, fit, predictive performance, and feature influence across a shared set of outputs.

Patterns · Open access

RobustiPy: An efficient next-generation multiversal library with model selection, averaging, resampling, and explainable AI

The paper introduces the library and demonstrates its use across simulations and empirical replications in economics, sociology, psychology, and medicine.

<aside class="citation-card" aria-labelledby="how-to-cite">
  <h3 class="citation-label" id="how-to-cite">How to cite</h3>
  <p class="citation-text"><strong>Valdenegro, D., Yan, J., Dai, D., &amp; Rahal, C.</strong> (2026). RobustiPy: An efficient next-generation multiversal library with model selection, averaging, resampling, and explainable AI. <em>Patterns, 7</em>, 101609. <a href="https://doi.org/10.1016/j.patter.2026.101609">https://doi.org/10.1016/j.patter.2026.101609</a></p>
  <p class="paper-evidence">The paper reports five simulations, ten empirical replications, and a time-profiling benchmark spanning approximately 672 million regression-equivalent fits.</p>
  <details class="citation-details">
    <summary>BibTeX</summary>
    <pre><code>@article{valdenegro2026robustipy,

title = {RobustiPy: An efficient next-generation multiversal library with model selection, averaging, resampling, and explainable AI}, author = {Valdenegro, Daniel and Yan, Jiani and Dai, Duiyi and Rahal, Charles}, journal = {Patterns}, volume = {7}, pages = {101609}, year = {2026}, doi = {10.1016/j.patter.2026.101609} }

Learn and apply

Everything needed to get started.

Begin with a practical walkthrough, consult the API documentation, or work through complete examples in the source repository.

<div class="resource-grid">
  <a class="resource-card" href="https://robustipy.readthedocs.io/en/latest/">
    <span class="resource-meta">Reference <span class="resource-arrow" aria-hidden="true">&nearr;</span></span>
    <h3>Documentation</h3>
    <p>API reference and package documentation on Read the Docs.</p>
  </a>
  <a class="resource-card" href="{{ '/getting-started.html' | relative_url }}">
    <span class="resource-meta">Guide <span class="resource-arrow" aria-hidden="true">&rarr;</span></span>
    <h3>Getting started</h3>
    <p>A concise path from installation to fitting and plotting results.</p>
  </a>
  <a class="resource-card" href="{{ '/interpretation-guide.html' | relative_url }}">
    <span class="resource-meta">Guide <span class="resource-arrow" aria-hidden="true">&rarr;</span></span>
    <h3>Interpret the figures</h3>
    <p>Read each panel in the standard RobustiPy results output.</p>
  </a>
  <a class="resource-card" href="https://github.com/RobustiPy/robustipy/tree/main/empirical_examples">
    <span class="resource-meta">Notebooks <span class="resource-arrow" aria-hidden="true">&nearr;</span></span>
    <h3>Empirical examples</h3>
    <p>Reproducible applications across several substantive domains.</p>
  </a>
  <a class="resource-card" href="https://www.youtube.com/@RobustiPy">
    <span class="resource-meta">Video <span class="resource-arrow" aria-hidden="true">&nearr;</span></span>
    <h3>Tutorials and talks</h3>
    <p>Introductions, demonstrations, and recorded project material.</p>
  </a>
  <a class="resource-card" href="https://doi.org/10.5281/zenodo.15700697">
    <span class="resource-meta">Archive <span class="resource-arrow" aria-hidden="true">&nearr;</span></span>
    <h3>Software archive</h3>
    <p>Versioned RobustiPy releases preserved on Zenodo.</p>
  </a>
</div>

<aside class="hackathon-note" aria-labelledby="hackathon-title">
  <p class="hackathon-date">Oxford · June 2024</p>
  <div>
    <h3 id="hackathon-title">RobustiPy Hackathon</h3>
    <p>The team hosted a hands-on hackathon at the University of Oxford, bringing researchers together to explore the library and work through multiverse analyses. We thank everyone who participated and contributed their time, questions, and feedback.</p>
  </div>
</aside>

Creators

Built by an interdisciplinary team.

RobustiPy was developed at the University of Oxford by researchers working across computational social science, demography, and data science.

DV

Daniel Valdenegro

Co-author · Software development

GitHub profile ↗ JY

Jiani Yan

Co-author · Software development

Personal website ↗ DD

Duiyi Dai

Co-author · Code review

Personal website ↗ CR

Charles Rahal

Software initiator · Lead contact

Personal website ↗

Open by design

Research software that can be inspected and improved.

RobustiPy is released under the GNU General Public License v3.0. Contributions, bug reports, feature requests, and reproducible examples are welcome through GitHub.

Open-source software · Copyleft

GNU General Public License v3.0

The journal article is separately published open access under the Creative Commons Attribution 4.0 license.

Acknowledgements

Research support

The authors are grateful for funding from the ESRC (grant ES/W002302/1), the Leverhulme Trust (grant RC-2018-003) for the Leverhulme Centre for Demographic Science and Nuffield College, and a Grand Union DTP ESRC studentship.