Skip to content

chore: JOSS paper#2163

Open
williambdean wants to merge 21 commits intomainfrom
joss-paper
Open

chore: JOSS paper#2163
williambdean wants to merge 21 commits intomainfrom
joss-paper

Conversation

@williambdean
Copy link
Contributor

@williambdean williambdean commented Jan 4, 2026

Description

Add a JOSS paper. View the latest here: https://github.com/pymc-labs/pymc-marketing/blob/joss-paper/paper/paper.pdf

Next steps:

  • Get everyones JOSS ids
  • review here ...
  • review by the JOSS team
  • 🎉

Related Issue

Checklist


📚 Documentation preview 📚: https://pymc-marketing--2163.org.readthedocs.build/en/2163/

@cursor
Copy link

cursor bot commented Jan 4, 2026

PR Summary

Low Risk
Documentation-only change adding manuscript sources; no runtime code paths or data handling are affected.

Overview
Adds a JOSS submission under paper/, including a new paper.md manuscript (metadata, summary, feature overview, funding/AI disclosure, etc.) and a paper.bib bibliography with the referenced citations.

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.

@github-actions github-actions bot added the docs Improvements or additions to documentation label Jan 4, 2026
@williambdean williambdean requested a review from Copilot January 4, 2026 20:29
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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},
Copy link

Copilot AI Jan 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
title={A new product growth for model consumer durables},
title={A new product growth model for consumer durables},

Copilot uses AI. Check for mistakes.
paper/paper.bib Outdated
}

@article{arviz2019,
title={ArviZ a unified library for exploratory analysis of Bayesian models in Python},
Copy link

Copilot AI Jan 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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").

Suggested change
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},

Copilot uses AI. Check for mistakes.
paper/paper.md Outdated
# Optimize budget allocation
result = mmm.optimize_budget(
budget=1000,
time_periods=52,
Copy link

Copilot AI Jan 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
time_periods=52,
num_periods=52,

Copilot uses AI. Check for mistakes.
Copy link
Collaborator

@ColtAllen ColtAllen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In addition to the author section, should we also add usage examples for the other modules in the library?

@williambdean
Copy link
Contributor Author

williambdean commented Jan 5, 2026

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
1K word count which we are already over.

Copy link
Collaborator

@juanitorduz juanitorduz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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}
}

Copy link
Collaborator

@juanitorduz juanitorduz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing ohter author ;)

@williambdean
Copy link
Contributor Author

williambdean commented Jan 5, 2026

I've pushed up a version of the PDF. Please use:

docker run --rm \
    --volume $PWD/paper:/data \
    --user $(id -u):$(id -g) \
    --env JOURNAL=joss \
    openjournals/inara

to generate the draft. View it here: https://github.com/pymc-labs/pymc-marketing/blob/joss-paper/paper/paper.pdf

Copy link
Collaborator

@OriolAbril OriolAbril left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Comment on lines 1 to 10
@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}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That performance comparison was just a blog post, right? Should I link to that?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

Co-authored-by: Thomas Wiecki <thomas.wiecki@gmail.com>
@ricardoV94
Copy link
Contributor

Any non-labs contributors that have done large enough contributions to deserve being authors?

@juanitorduz
Copy link
Collaborator

Any non-labs contributors that have done large enough contributions to deserve being authors?

This reminds me that we should add @lucianopaz 🙈

@ricardoV94
Copy link
Contributor

ricardoV94 commented Jan 6, 2026

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

@ColtAllen
Copy link
Collaborator

Any non-labs contributors that have done large enough contributions to deserve being authors?

@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.

williambdean and others added 3 commits January 7, 2026 03:19
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding my orcid id: 0009-0005-7585-0987

@williambdean

Copy link
Contributor

@lucianopaz lucianopaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @juanitorduz for suggesting to add me as coauthor. I added my info.

@OriolAbril
Copy link
Collaborator

Do you have a rough ETA?

Ideally at some point next week, at most the other one.

@juanitorduz
Copy link
Collaborator

Do you have a rough ETA?

Ideally at some point next week, at most the other one.

Sure! We can wait, of course! 💪

@PabloRoque
Copy link
Contributor

Any non-labs contributors that have done large enough contributions to deserve being authors?

@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.

Hey, just seeing this after the long Xmas break.
I would be glad to be acknowledged as contributor. Should I add my ORCID?

Co-authored-by: Luciano Paz <luciano.paz.neuro@gmail.com>
@juanitorduz
Copy link
Collaborator

yes @PabloRoque ! That would be great!

Copy link
Contributor

@PabloRoque PabloRoque left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added my ORCID

Copy link
Collaborator

@juanitorduz juanitorduz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adding @NathanielF

paper/paper.md Outdated
orcid: 0009-0006-8055-6560
affiliation: 1
- name: Carlos Trujillo
orcid: PENDING-NEED-ORCID
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cetagostini do you have one?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cetagostini friendly reminder :)

Copy link
Collaborator

@juanitorduz juanitorduz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we are just missing Carlos Id and then update the ArviZ reference right? @williambdean

@williambdean
Copy link
Contributor Author

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

@OriolAbril
Copy link
Collaborator

The ArviZ paper is already in pre-review: openjournals/joss-reviews#9786

Copy link
Collaborator

@juanitorduz juanitorduz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@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
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cetagostini friendly reminder :)

@drbenvincent
Copy link
Contributor

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?

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Publish paper about this package in JOSS