| 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 |
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 →</a>
</div>
</aside>
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>
Define the outcomes, predictors, controls, estimators, and resampling strategy that are defensible for the question.
Run combinations systematically, with sampling and parallelisation options when the specification space is large.
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., & 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} }
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">↗</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">→</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">→</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">↗</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">↗</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">↗</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
RobustiPy was developed at the University of Oxford by researchers working across computational social science, demography, and data science.
Co-author · Software development
GitHub profile ↗ JYCo-author · Software development
Personal website ↗ DDCo-author · Code review
Personal website ↗ CRSoftware initiator · Lead contact
Personal website ↗Open by design
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.0The journal article is separately published open access under the Creative Commons Attribution 4.0 license.