Conversation
PR SummaryLow Risk Overview No library code, APIs, or runtime behavior changes are included—this PR is purely publication/documentation content. Written by Cursor Bugbot for commit daec1e5. This will update automatically on new commits. Configure here. |
There was a problem hiding this comment.
Pull request overview
This PR adds a JOSS (Journal of Open Source Software) paper for PyMC-Marketing, which is a preparatory step before formal submission to JOSS for peer review and publication.
- Introduces a comprehensive academic paper describing PyMC-Marketing's features and capabilities
- Includes bibliography with citations to relevant academic and technical sources
- Provides example code demonstrating the library's key functionality
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| paper/paper.md | JOSS paper manuscript containing summary, statement of need, installation instructions, key features, example usage, and community guidelines |
| paper/paper.bib | Bibliography file with BibTeX entries for all cited references in the paper |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
paper/paper.bib
Outdated
| } | ||
|
|
||
| @article{bass1969new, | ||
| title={A new product growth for model consumer durables}, |
There was a problem hiding this comment.
The title in the bibliography entry should be "A new product growth model for consumer durables" not "A new product growth for model consumer durables". The words "for" and "model" are swapped.
| title={A new product growth for model consumer durables}, | |
| title={A new product growth model for consumer durables}, |
paper/paper.bib
Outdated
| } | ||
|
|
||
| @article{arviz2019, | ||
| title={ArviZ a unified library for exploratory analysis of Bayesian models in Python}, |
There was a problem hiding this comment.
The ArviZ citation is missing a colon in the title. It should be "ArviZ: a unified library for exploratory analysis of Bayesian models in Python" (with a colon after "ArviZ").
| title={ArviZ a unified library for exploratory analysis of Bayesian models in Python}, | |
| title={ArviZ: a unified library for exploratory analysis of Bayesian models in Python}, |
paper/paper.md
Outdated
| # Optimize budget allocation | ||
| result = mmm.optimize_budget( | ||
| budget=1000, | ||
| time_periods=52, |
There was a problem hiding this comment.
The parameter name in the optimize_budget method call is incorrect. It should be num_periods not time_periods. The correct method signature uses num_periods as the parameter name.
| time_periods=52, | |
| num_periods=52, |
ColtAllen
left a comment
There was a problem hiding this comment.
In addition to the author section, should we also add usage examples for the other modules in the library?
I'm actually leaning toward removing all examples. The guidelines I've seen appear to be |
juanitorduz
left a comment
There was a problem hiding this comment.
This looks great! I left a first round of comments (shall we also push the pdf to the branch?)
paper/paper.md
Outdated
|
|
||
| Marketing organizations struggle with attribution across multiple touchpoints and delayed conversion effects. Existing solutions suffer from: (1) black-box proprietary models with limited customization; (2) oversimplified approaches failing to capture marketing dynamics; and (3) lack of uncertainty quantification for high-stakes decisions. | ||
|
|
||
| PyMC-Marketing addresses these gaps by operationalizing advanced Bayesian methods—hierarchical modeling, experimental calibration, and uncertainty quantification—within a user-friendly, scikit-learn compatible API. Unlike point-estimate approaches in Robyn or commercial tools, all outputs include credible intervals enabling decision-makers to assess risk explicitly. |
There was a problem hiding this comment.
I think we also bridge the gap between research and applications. Examples:
- time varying coefficients with moders GP approacimations in a way that works for marketing applications
- mmm experimental calibration with additional likelihood <- THIS IS NEW in the literature
paper/paper.md
Outdated
|
|
||
| # Dependencies | ||
|
|
||
| Core dependencies include PyMC (≥5.0), NumPy, Pandas, ArviZ [@arviz2019], and scikit-learn. Optional dependencies enable GPU acceleration (JAX), advanced samplers (NumPyro, Nutpie), and production deployment (MLflow [@zaharia2018mlflow], Docker). |
There was a problem hiding this comment.
Add references for NumPyro and Nutpie
@article{bingham2019pyro,
author = {Eli Bingham and
Jonathan P. Chen and
Martin Jankowiak and
Fritz Obermeyer and
Neeraj Pradhan and
Theofanis Karaletsos and
Rohit Singh and
Paul A. Szerlip and
Paul Horsfall and
Noah D. Goodman},
title = {Pyro: Deep Universal Probabilistic Programming},
journal = {J. Mach. Learn. Res.},
volume = {20},
pages = {28:1--28:6},
year = {2019},
url = {http://jmlr.org/papers/v20/18-403.html}
}
juanitorduz
left a comment
There was a problem hiding this comment.
missing ohter author ;)
|
I've pushed up a version of the PDF. Please use: to generate the draft. View it here: https://github.com/pymc-labs/pymc-marketing/blob/joss-paper/paper/paper.pdf |
OriolAbril
left a comment
There was a problem hiding this comment.
not sure what is the timeline but it would also be nice to update the citation to the new arviz paper if possible, but also not a reason to delay the paper. It is key for #2098 but not used anywhere on main yet
paper/paper.bib
Outdated
| @article{salvatier2016probabilistic, | ||
| title={Probabilistic programming in Python using PyMC3}, | ||
| author={Salvatier, John and Wiecki, Thomas V and Fonnesbeck, Christopher}, | ||
| journal={PeerJ Computer Science}, | ||
| volume={2}, | ||
| pages={e55}, | ||
| year={2016}, | ||
| publisher={PeerJ Inc.}, | ||
| doi={10.7717/peerj-cs.55} | ||
| } |
There was a problem hiding this comment.
this should use the new PyMC paper. The pymc readme has the bibtex citation ready to copy-paste: https://github.com/pymc-devs/pymc?tab=readme-ov-file#citing-pymc
paper/paper.md
Outdated
|
|
||
| # Summary | ||
|
|
||
| PyMC-Marketing is a comprehensive Python library implementing Bayesian marketing analytics, built on PyMC [@salvatier2016probabilistic]. Commercial marketing analytics tools typically provide limited transparency into their models, while open-source alternatives like Meta's Robyn and Google's Meridian focus primarily on media mix modeling [@facebook2022robyn; @google2023meridian]. PyMC-Marketing provides a unified framework spanning multiple marketing domains, including: Media Mix Modeling, Customer Lifetime Value analysis, Bass Diffusion Models, and Customer Choice Models. All outputs include full posterior distributions rather than point estimates, enabling explicit risk assessment in business decisions. |
There was a problem hiding this comment.
should also cite the pymc 2025 paper.
and I wonder if there's something we should say/include of the benchmarks so that we can say how it compares performance-wise?
There was a problem hiding this comment.
That performance comparison was just a blog post, right? Should I link to that?
Co-authored-by: Thomas Wiecki <thomas.wiecki@gmail.com>
|
Any non-labs contributors that have done large enough contributions to deserve being authors? |
This reminds me that we should add @lucianopaz 🙈 |
|
May want to decide on a cutoff from https://github.com/pymc-labs/pymc-marketing/graphs/contributors (not that people not there shouldn't be included, but people there with meaningful contributions should?). Seeing @larryshamalama for instance who was involved in early work on the CLV module |
@PabloRoque added ADVI support, the MG/BND model, and covariate support for beta distributions. His research on the latter also uncovered a bug in how the BYTDPlus R library handles covariates. |
Co-authored-by: Ricardo Vieira <28983449+ricardoV94@users.noreply.github.com>
paper/paper.md
Outdated
| orcid: "0009-0000-6015-101X" | ||
| affiliation: 1 | ||
| - name: Nathaniel Forde | ||
| orcid: PENDING-NEED-ORCID |
There was a problem hiding this comment.
Adding my orcid id: 0009-0005-7585-0987
lucianopaz
left a comment
There was a problem hiding this comment.
Thanks @juanitorduz for suggesting to add me as coauthor. I added my info.
Ideally at some point next week, at most the other one. |
Sure! We can wait, of course! 💪 |
Hey, just seeing this after the long Xmas break. |
Co-authored-by: Luciano Paz <luciano.paz.neuro@gmail.com>
|
yes @PabloRoque ! That would be great! |
paper/paper.md
Outdated
| orcid: 0009-0006-8055-6560 | ||
| affiliation: 1 | ||
| - name: Carlos Trujillo | ||
| orcid: PENDING-NEED-ORCID |
juanitorduz
left a comment
There was a problem hiding this comment.
I think we are just missing Carlos Id and then update the ArviZ reference right? @williambdean
Yup. Then I will begin the submittal process. That seems to be long |
|
The ArviZ paper is already in pre-review: openjournals/joss-reviews#9786 |
There was a problem hiding this comment.
@williambdean did we update the arviz reference? anything else missing :) ?
paper/paper.md
Outdated
| orcid: 0009-0006-8055-6560 | ||
| affiliation: 1 | ||
| - name: Carlos Trujillo | ||
| orcid: PENDING-NEED-ORCID |
|
Based on this discussion from @ErikRingen, it made me realise I should update my affiliation to my company rather than Labs. Got to be careful on the tax side of things. Could be relevant for others with companies too? |
Description
Add a JOSS paper. View the latest here: https://github.com/pymc-labs/pymc-marketing/blob/joss-paper/paper/paper.pdf
Next steps:
Related Issue
Checklist
pre-commit.ci autofixto auto-fix.📚 Documentation preview 📚: https://pymc-marketing--2163.org.readthedocs.build/en/2163/