-
Notifications
You must be signed in to change notification settings - Fork 324
Commit 5f74b4d
Add new
* Update version.txt (#640)
* [pre-commit.ci] pre-commit autoupdate (#642)
* Fix build badge (#645)
* Add downloads stats to README
* Pareto/NBD Example Notebook (#646)
* notebook opening and imports
* model definition markdown
* Data Load Notebook section
* WIP model fitting section
* added notebook to docs directory
* notebook edits and graph code
* ppc section and nb cleanup
* demz sampling and WIP plotting
* WIP predictive plots
* WIP heatmap plots
* predictive plots
* WIP covariates and nbqa-ruff edits
* covariate section
* plot additions
* fig sizes
* remove model file
* add spaces, increase indentation, and fix number order to Pareto notebook (#651)
* add spaces, increase indentation, and fix number order
* explicit with 6
* Add link to new Pareto notebook (#649)
* Plot Waterfall Components Decomposition (#631)
* Creating plot waterfall
Co-Authored-By: Carlos Trujillo <[email protected]>
* requested changes
* pre-commit
---------
Co-authored-by: Carlos Trujillo <[email protected]>
* Update resources.md (#652)
Databricks should have a lower-case b.
* fix ylabel (#654)
* [pre-commit.ci] pre-commit autoupdate (#655)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.4.1 → v0.4.2](astral-sh/ruff-pre-commit@v0.4.1...v0.4.2)
- [github.com/pre-commit/mirrors-mypy: v1.9.0 → v1.10.0](pre-commit/mirrors-mypy@v1.9.0...v1.10.0)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Lift test fixes (#656)
* support for negative values and dates (if used)
* fix terrible spelling
* test dates in coords
* cover numpy objects
* consolidate the tests
* add to docstrings tanh saturation (#657)
Co-authored-by: Juan Orduz <[email protected]>
* Add quickstart to readme (#653)
* add quickstartt to readme
* add pymc labs logo
* typos
* add community links
* fixes
* Add contributors to README (#659)
* Add contributors to README
* small code style improvements
* Time varying intercept (#628)
* Add time-varying prior functionality to DelayedSaturatedMMM
* resolve wd's comments
* resolve failing pre-commits
* add tvp_kwargs to model_config
* fix typo
* replace softplus
* resolve minor review comments
* Add option to supply `ax` to `plot_posterior_predictive`
* bugfix: time_index was not set correctly for OOS
If provided `X` to `_data_setter` was *not* the immediate sequence following the training set, the time_index would we wrong. With this fix, the `date["time_index"]` which gets set upon providing a new `X`, is inferred from the `self.date_column` column of provided `X` (by comparing it to same date column in the training data `self.X`).
* Clean up example notebook
* Make utility function `transform_1d_array`
* 'tvp_kwargs' -> 'intercept_tvp_kwargs'
* move `infer_time_index` into utils
* add tests for new utils
* small fixes (found in tests)
* add tests to cover all added cases
* fix ruff check
* update typehints
* resolve review comments
* refactor model logic for tv intercept
* address review comment for util test
* .
* fix documentation link
* change variable name
* fix hsgp_dims
* update time_varying_prior to be centered on 1
* review fixes
* fix broken test
* add final tests
* fix coverage issues
* Update tests/mmm/test_tvp.py
Co-authored-by: Will Dean <[email protected]>
* Update pymc_marketing/mmm/tvp.py
Co-authored-by: Will Dean <[email protected]>
* Update tests/mmm/test_tvp.py
Co-authored-by: Will Dean <[email protected]>
* Update tests/mmm/test_tvp.py
Co-authored-by: Will Dean <[email protected]>
* significant improvements to notebook
* fix heading
* update notebook to make it EVEN better
* update legend, add watermark
* fix intro
* fix broken test
* copy sweep with grammarly
---------
Co-authored-by: Will Dean <[email protected]>
* Update README.md (#660)
* Add tv intrecept to readme (#661)
* add tv intrecept to readme
* add to comparison table
* fix title level (#663)
* Remove unnecessary NonImplemented errors from abstract methods (#662)
* ignore non-implemented
* remove not implemented error from abstract classes
* simplify docstrings
* Pass conv mode to adstock functions (#665)
* [Try] Fix compressed images in docs. (#667)
* Update pyproject.toml (#671)
* add license (#673)
* use grep and sed in the env line (#675)
* add sample_kwargs (#676)
* MMM NB Improvements (waterfall & error plots) (#664)
* Update version.txt (#677)
* [pre-commit.ci] pre-commit autoupdate (#683)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.4.3 → v0.4.4](astral-sh/ruff-pre-commit@v0.4.3...v0.4.4)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* v0 Streamlit MMM Explainer App (#614)
* feat(streamlit_explainer): Pushing files for Streamlit explainer app, to illustrate saturation, adstock and prior concepts in an intuitive, visual way to stakeholders and new MMMers
* chore(readme): Adding a readme for the app
* fix(env): Updating dependencies to include those needed for the Streamlit app
* Drop python 3.9 support (#615)
* drop python 3.9
* try python 3.12
* undo try python 3.12
* add lift tests check
* Add more content to the Gamma-Gamma Notebook (#573)
* improve nb
* rm warnings and add link to lifetimes quickstart
* address comments
* feedback part 3
* remove warnings manually
* Add more content to the BG/NBD Notebook (#571)
* add more info to the notebook
* hide plots code
* fix plot y labels
* fix plot outputs and remove model build
* improve final note probability plots
* address comments
* use quickstart dataset
* feedback part 3
* remowe warnings manually
* feedback part 4
* Improve MMM Docs (#612)
* improve mmm docs init
* add more code examples to docstrings
* minor improvemeents
* typo
* better phrasing
* add thomas suggestion
* Fix `clv` plotting bugs and edits to Quickstart (#601)
* move fixtures to conftest
* docstrings and moved set_model_fit to conftest
* fixed pandas quickstart warnings
* revert to MockModel and add ParetoNBD support
* quickstart edit for issue 609
* notebook edit
* [pre-commit.ci] pre-commit autoupdate (#616)
* improve coords matching (#623)
* python 3.12 attempt (#618)
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* refactor(saturation): Using pymc-marketing saturation functions rather than coding my own: Removing tanh, logistic and michaelis menten
* refactor(saturation): Remove Hill and Root saturations, as they aren't supported by pymc-marketing currently
* refactor(geometric_adstock): Removing custom adstock and using pymc-marketing adstock function to demo decay. Also updating latex to align with pymc-marketing, where decay factor is represented by alpha rather than beta
* refactor(delayed_adstock): Using pymc-marketing delayed geometric function rather than custom one
* fix(requirements): Adding pymc-marketing to Streamlit requirements for deployment
* Added Dev Container Folder
* refactor(weibull_cdf): Using pymc-marketing function for Weibull CDF
* fix(weibull_cdf): Fixing incorrect dataframe var name for CDF plotting df
* refactor(weibull_pdf): Using pymc-marketing function for WeibullPDF
* refactor(custom_functions): Removing adstock_saturation_functions.py file now that it is no longer required
* chore: Removing devcontainer created by Streamlit
* fix(requirements): Adding preliz to requirements
* refactor(prior_viz): Reworking the prior visualisation to use Preliz instead of custom function, as well as remove the tab-design. Prior distributions can now be specified programmatically.
* refactor(prior_functions.py): Deleting the draw_samples function and replacing it with a programmatic PreliZ function, such that the distribution object is returned when the user passes in the name of a distribution
* fix(requirements): Delete obsolete pymc requirement, which should fix deployment dependency conflicts
* chore(readme): Updating with guidelines on how to add additional distributions or transformation functions to the app
* refactor(plot_config): Moving height and width specifications into constants at top of Adstock and Saturation files, so the plot sizes are set programmatically
---------
Co-authored-by: Juan Orduz <[email protected]>
Co-authored-by: Colt Allen <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Carlos Trujillo <[email protected]>
* Correct BetaGeo docstring example (#693)
* fix example in docstring
* change docstring
* Add `BetaGeoBetaBinom` Distribution Block (#431)
* init commit
* removed scan
* Fix logp
* Remove print statement
* Add test for logp notimplemented errors
* docstrings
* dev notebook added
* updated to vectorize_graph
* import order
* update oldest pymc_version
* Update ci.yml pymc version
* Update pyproject.toml pymc version
* WIP sample prior testing
* sample prior compared against lifetimes
* increase rtol
* remove commented code, add logp reference
* fix latex docstring
* notebook testing and misc edits
* revert latex in docstring
* add ruff ignore comment
---------
Co-authored-by: Ricardo Vieira <[email protected]>
* [pre-commit.ci] pre-commit autoupdate (#705)
* Fix related to column renaming after aggregating test frequency (#698)
Co-authored-by: Colt Allen <[email protected]>
* RFM Segmentation (#680)
* init rfm_segments func
* TODOs
* docstrings and for loop
* docstrings and for loop
* WIP dev notebook debugging
* checkpoint commit for remote pull
* code testing in dev notebook
* unit tests added
* dev notebook cleanup
* clean up type hints
* comments and code cleanup
* docstrings
* move formatting to rfm_summary and quickstart edits
* fix rfm_train_test_split bug
* added test for rfm_quartile_labels
* added rfm score warning
* create bgbb_donations.csv (#710)
* closes #678 (#716)
* use URL for README image (#715)
* use URL for image
* additional links that are relative
* remove forward slashes in URL
* closes #264 (#714)
* [pre-commit.ci] pre-commit autoupdate (#719)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.4.5 → v0.4.7](astral-sh/ruff-pre-commit@v0.4.5...v0.4.7)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Update `BetaGeoModel` API (#709)
* _extract_predictive_variables util
* deprecation warnings
* expected_purchases_new_customer
* TestBetaGeoModel.setup_class
* test cleanup and test_expected_purchases_new_customer
* expected_probability_alive
* expected_purchases
* TODOs and docstrings
* update runslow tests rtol for new test dataset
* prob_alive_matrix plot fix and notebook testing
* alive loop in bgnbd nb
* quickstart nb fix
* docstring and TODO revisions
* docstring syntax
* docstring edits
* more docstring fixes
* docstrings indent
* docstring indent, clear codecov bug
---------
Co-authored-by: Juan Orduz <[email protected]>
* User-defined media transformations and custom ordering (#632)
* Allowing Custom Saturation & Lagging functions
Co-Authored-By: Carlos Trujillo <[email protected]>
* Small adding
Co-Authored-By: Carlos Trujillo <[email protected]>
* test commit to carlos branch
* hook up saturation class to lift method
* pull out last saturation function into method
* migrate the logic for tests
* reduce what is needed for a new class
* remove the noqa
* model docstring for inheritance
* rewrite of the components
* rewrite of the components
* change name to logistic
* map names for model_config
* switch out order
* Changes
* solving issues
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* solving errors
* New class name
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Update pymc_marketing/mmm/transformers.py
Co-authored-by: Will Dean <[email protected]>
* pre-commit change
* Update pymc_marketing/mmm/models/components/base.py
Co-authored-by: Will Dean <[email protected]>
* Update pymc_marketing/mmm/models/components/saturation.py
Co-authored-by: Will Dean <[email protected]>
* Update pymc_marketing/mmm/models/components/lagging.py
Co-authored-by: Will Dean <[email protected]>
* Requested changes
* pre-commit changes
* Requested changes
* more changes
* use reserved parameter name
* Returning name and adding deprecation warning
* Re-structuring the budget optimizer
* Update pymc_marketing/mmm/components/adstock.py
Co-authored-by: Will Dean <[email protected]>
* Will recommendations
* Temporal comment
* test more assumed behavior
* more budget optimizer changes
* docstrings for classes
* small changes about l_max on adstock
* small addition
* Update pymc_marketing/mmm/delayed_saturated_mmm.py
Co-authored-by: Will Dean <[email protected]>
* temporal notebook copy
* update
* docstring
* adding missing
* Update pymc_marketing/mmm/components/adstock.py
Co-authored-by: Will Dean <[email protected]>
* Update pymc_marketing/mmm/components/adstock.py
Co-authored-by: Will Dean <[email protected]>
* Making mypy happy part 1
* Small example
* finally?
* small change
* docstrings
* removing mokeytype
* more docstrings
* Update pymc_marketing/mmm/transformers.py
Co-authored-by: Will Dean <[email protected]>
* tests for out of box saturation and adstocks
* test the passthrough
* Update pymc_marketing/mmm/components/adstock.py
Co-authored-by: Will Dean <[email protected]>
* Changes on hints
* modifications
Must be plt, ax
* notebooks addition
* Update notebook
* Saving model
* mock the fit and move tests around
* fix get_distribution tests
* Correct error
* Deprecation warning and new MMM class
Co-Authored-By: Will Dean <[email protected]>
* Small changes
* updates
* add a lookup for model saving
* fix tests based on recent changes
* Deleting decimals
* test suite
* Update tests/mmm/test_budget_optimizer.py
Juan's test suggestion
* Update tests/mmm/test_budget_optimizer.py
abs and not rel
* running notebooks
* adding hint
* initial docstring check
* update docstrings 1
* Modifying notebook
* use explicit adstock and saturation in MMM
* remove reference to DelayedSaturatedMMM
* request changes
* missing total
* modify docstring
* modify eval
* Small changes
* change
* changes
* import saturation in docstring
* pre-commit
---------
Co-authored-by: Carlos Trujillo <[email protected]>
Co-authored-by: Will Dean <[email protected]>
Co-authored-by: Will Dean <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* CLV Plotting API (#728)
* plot_probability_alive_matrix
* docstrings
* plot_frequency_recency_matrix
* delete dead code
* docstring quick fix
* [pre-commit.ci] pre-commit autoupdate (#730)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.4.7 → v0.4.8](astral-sh/ruff-pre-commit@v0.4.7...v0.4.8)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Fix some ParetoNBDModel docstring typos (#731)
* Removed the comma after Schmittlein
* Added missing reference
* Removed extra colon
* pass kwargs to minimizer (#737)
* Minor improvements [MMM] (#735)
* Set upper bound pymc 5.16 (#725)
* changes init
* try fix regex
* Media transformation sampling & plotting methods (#734)
* add plotting methods
* add tests for new methods
* saturation support for additional variable dims
* consolidate the logic of sampling
* change warning
* workflow from a fitted model
* change order of tests
* suggestion to use names
* because of new data
---------
Co-authored-by: Juan Orduz <[email protected]>
* improve tests mmm utils (#738)
* improve tests
* empty commit
* remove reduntant function
* `model.fit` doesn't remove prior samples (#741)
* type hint only
* more informative errors
* check for attr
* remove type ignore
* check for attr
* check for attr
* reduce indentation
* new error names
* Hierarchical Model Configuration (#743)
* some base logic and tests
* lookup function once
* add error handling
* implement for mmm and media transformations
* add examples
* add to documentation
* add to docstring
* tests for likelihood
* use deepcopy since keys are added
* set default dims and warn
* fix output_var
* migrate failing tests to model_config
* remove the moved test
* use deepcopy since keys are added
* add to docstrings from feedback
* fix handlers at initialize
* [pre-commit.ci] pre-commit autoupdate (#756)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.4.8 → v0.4.9](astral-sh/ruff-pre-commit@v0.4.8...v0.4.9)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* MMM Component Notebook (#748)
* initial notebook
* add to example
* push up some feedback
* change the number of channels
* updates
* final message
* add more feedback
* remove since wasnt working the way I wanted
* start addressing sphinx warnings and rendering issues (#750)
* start addressing sphinx warnings and rendering issues
* forgot formatting comment
* Add numpydoc as dependency
* fix dataset type
---------
Co-authored-by: Juan Orduz <[email protected]>
* Allowing Hierarchical Non Centered Parametrization (#747)
* Allowing non center parametrization
* update notebook
* Adding example in docstring
* change
* Push code changes.
* A painful and ugly change!
The things one does for democracy!
* Missing parts!
* adding missing test 2D
* Missing raise
---------
Co-authored-by: Will Dean <[email protected]>
* fix np typing (#763)
* fix typing
* empty
* empty
* empty
* dummy
* undo dummy
* empty
* add it back (#764)
* remove noqa from plots (#761)
* remove noqa
* fix escape
* empty
* empty
* Creating Time Base component for Media Contribution (#752)
* Run Ruff Notebooks (#773)
* [pre-commit.ci] pre-commit autoupdate (#779)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.4.9 → v0.4.10](astral-sh/ruff-pre-commit@v0.4.9...v0.4.10)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* `GammaGammaModel` API Improvements (#758)
* utils.customer_lifetime_value
* expected_customer_lifetime_value
* WIP clv.models.gamma_gamma.py
* gamma_gamma API
* fixed circular import
* gamma_gamma tests
* delete tests/datasets/test_summary.csv
* clv test_utils.py
* remove expected_purchases(future_t=0)
* remove monetary_value arg
* WIP docstrings
* notebooks
* docstrings
* Revert "notebooks"
This reverts commit a3154d9.
* gamma-gamma notebook
* docstrings
* Deepcopy of posterior to allow second `fit` call (#790)
* Add prior predictive example notebook (#787)
* CLV Modeling Domains and Docstrings (#785)
* quickstart
* pareto_nbd fit warning
* pareto_nbd docstrings
* clv.utils docstrings
* gamma_gamma docstrings
* beta_geo docstrings
* CLV sections in README and index
* fix nb (#793)
* Run example notebooks CI (#791)
* run notebooks init
* change kernel name
* change kernel name
* change kernel name
* rm docs
* add nb
* fix nb
* fig dpi
* update model object
* no output
* test mmm notebooks
* fix path
* graphviz
* sudo
* paralelize and Path
* reqs
* undo
* comments
* try budget allocation
* add quickstart
* ignore budget allocation
* add make command
* use make
* docs: Update model_builder.py to resolve warning in documentation build (#797)
* Time Varying Media Contribution Notebook (#778)
* Time Varaying notebook
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* requested changes
* quick change
* Adding to index md
* remove change mmm_budget_allocation_example.ipynb
* quick correction
* Small changes
* Small title change
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Will Dean <[email protected]>
* prepare release (#799)
* `Prior` class to represent distributions (#759)
* reimplement hierarchical parameters with wrapper class
* write tests for prior class
* explicit with dependencies
* missing test dependency
* raise KeyError early and test dims
* add prior module to docs
* support for media transformations
* add some documentation
* migrate the delayed_saturated model to Prior class
* migrate the delayed_saturated model to Prior class
* add an example image
* add the example image
* push up some more documentation
* support for student-t
* add configuration notebook
* catch all the errrors
* add more to notebook
* use a sigma which has transform
* add parsing error catches
* add watermark
* test the parsing warnings and error handling
* have a default to dict
* default handles Prior class
* passing plotting tests
* support for lift tests
* fix two failing tests
* update notebook
* change order of pre-commit back
* migrate to Prior and parse_model_config
* migrate the clv tests
* test for warning
* run pre-commit on all files
* switch to Prior in components
* test for the components
* remove the previous dictionary function
* migrate to Prior class in mmm
* remove the unused key,value
* migrate to Prior class in clv tests
* back to dict for warning test
* isort and work out example indentation
* change the example name
* use juans suggestions
* change graph to to_graph
* rerun the time varying media
* rerun the clv notebooks I could get to work
* [pre-commit.ci] pre-commit autoupdate (#801)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.4.10 → v0.5.0](astral-sh/ruff-pre-commit@v0.4.10...v0.5.0)
- [github.com/pre-commit/mirrors-mypy: v1.10.0 → v1.10.1](pre-commit/mirrors-mypy@v1.10.0...v1.10.1)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* initial stab at some docs
* register new module in a few places
* initial stab at how-to example notebook + code + API docs
* Pull out seasonality as `YearlyFourier` and `MonthlyFourier` (#802)
* Separate Weibull adstock into CDF & PDF (#810)
* separate out weibull
* add to test suite
* Add typing and package classifiers (#811)
* add pytyped
* add the py.typed file
* add imports to mmm module (#812)
Co-authored-by: Juan Orduz <[email protected]>
* Friday progress on notebook example
* Save & load support for time varying parameters (#815)
* add missing init for save and load
* get rid of warnings from JSON parsing
* new error message without line break
* migrate to Data and non-mutable coords (#816)
Co-authored-by: Juan Orduz <[email protected]>
* improve introduction page
* updates to model priors, plotting market shares, and more
* Add in model maths for MV-ITS, saturated market assumption
* [pre-commit.ci] pre-commit autoupdate (#817)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.5.0 → v0.5.1](astral-sh/ruff-pre-commit@v0.5.0...v0.5.1)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* fix up / improve the model maths and description
* PoC: Use Pydantic as data validator (#809)
* prior with pydantic
* dependencies
* validate adstock
* make mypy happy
* add validation sample curve
* make the prior type tighter
* add test type
* add validation init mmm
* mmm
* start with Fourier
* fix type
* fix test and imprtove docstrings
* docstrings
* types
* self type
* init validator
* types model builder
* improve docstrings
* more input validations mmm init
* validation budget optimizer
* fix dummy example types
* hsgp kwargs class
* add kwargs
* undo type hint in dict
* fix fourier names
* better docs
* fix tests
* add type hint
* undo
* fix type error
* feedback2
* restrict signature
* serialize fourier
* docs and tests
* fix docs
* work on parsing
* add hsgp to parsing config
* add tests
* uncomment
* undo changes
* undo model config parser
* handle hsgp_kwargs
* add hsgp flag
* docs
* undo type hint
* improve hints
* add more sections to docs
* Update pymc_marketing/mmm/tvp.py
Co-authored-by: Will Dean <[email protected]>
* feedback 4
* fix test
---------
Co-authored-by: Will Dean <[email protected]>
* fixes + describe covariance matrix + add section on unsaturated market model
* update title of intro docs page
* add admonition box
* initial stab at modeling products individually
* fix scenario 3 sampling & commentary + allow user to supply sampler_kwargs
* Date Validation and MMM Model Hamonization (Pydantic) (#824)
* validate base mmm init class
* validate dateformat
* add comment about date
* remove ()
* close to done on docs + code?
* add tests
* enlightenment in terms of unsaturated markets
* extract data generation functions into module code
* remove old generate_data
* constrained -> saturated. parameterize a test
* turn generate_saturated_data into a test fixture
* split plot_causal_impact into plot_causal_impact_sales and plot_causal_impact_market_share
* execute notebook
* revert an accidental change from a global find & replace
* Remove warnings during tests (#823)
* address save and load tests
* catch warning on load
* remove warnings in budget optimizer
* remove plotting warnings
* remove validating warnings
* consolidate the loading function
* remove warnings in tests
* incorporate the docstring feedback
* only one deprecation warnings on DelayedSaturatedMMM
* dont have deprecation on test
* Future-proof `prior_linearized` method call (#806)
* modified: pymc_marketing/mmm/tvp.py
* Update tvp.py
Changed Xs to X in prior_linearized( as per the change in pymc)
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: sangeedutta <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Will Dean <[email protected]>
* Create inverse_scaled_logistic_saturation and the corresponding class (#827)
* fix (#842)
* use labs theme as external (#830)
* use labs theme as external
* Update docs/source/index.md
Co-authored-by: Thomas Wiecki <[email protected]>
* install theme from pypi
---------
Co-authored-by: Thomas Wiecki <[email protected]>
Co-authored-by: Juan Orduz <[email protected]>
* specify 0.9.0 as deprecation version (#849)
* add intercept and target variable to example (#850)
Co-authored-by: Juan Orduz <[email protected]>
* Various MMM small documentation fixes (#854)
* make nb ruff astral-sh/ruff-vscode#546
* fix docs
* fix quickstart
* add types
* Update UML diagrams (#856)
* update uml diagrams
* add uml command to Makefile
* Fixing ruff commands in Makefile #825 (#859)
* updated the ruff lint command, added ruff code formating command in Makefile, updated contributing.md
* fixing the issue with the new line at the end of makefile
* updated the PHONY list in makefile
---------
Co-authored-by: Murad Khalilov <[email protected]>
* [pre-commit.ci] pre-commit autoupdate (#855)
updates:
- [github.com/pre-commit/mirrors-mypy: v1.10.1 → v1.11.0](pre-commit/mirrors-mypy@v1.10.1...v1.11.0)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Juan Orduz <[email protected]>
* Fix model_builder docstrings (#861)
* Fix model_builder docstrings
* Fix whitespace error
---------
Co-authored-by: Juan Orduz <[email protected]>
* add GH discussions link to README (#866)
* add GH discussions link to README
* add link to MMM hub slack
* Update README.md
---------
Co-authored-by: Will Dean <[email protected]>
* Skip coords with scalar value (#868)
* Fix Visual for hill_saturation function (Issue #851 ) (#857)
* Fix plotting by evaluating tensors.
* Add space after sphinx directive.
* Remove indentation from blank line.
* Add shared y axis for subplots.
---------
Co-authored-by: Patrick Robotham <[email protected]>
Co-authored-by: Will Dean <[email protected]>
* Allow plot MMM components in the original scale (#870)
* add original scale implementation
* add plot nb
* change location
* undo
* make mypy happy
* test plot
* add test
* update plot readme
* fix test
* improve variable description
* Inference changed to dataset (#873)
* infernece changed to dataset
* inference changed dataset for plot_allocated_contribution_by_channel
---------
Co-authored-by: Will Dean <[email protected]>
* Add root saturation function (issue #702) (#858)
* feat: adding root_saturation to transformers.py
* feat: adding RootSaturation class to saturation.py
* chore: adding missing RootSaturation to SATURATION_TRANSFORMATIONS
* feat: adding root_saturation to transformers.py
* feat: adding RootSaturation class to saturation.py
* chore: adding missing RootSaturation to SATURATION_TRANSFORMATIONS
* chore: linting edits
* chore: adding coefficient to function
* chore: linting corrections
* chore: removed empty References section of docstring
* chore: produce visual examples of root saturation
* chore: adding root to test_saturation.py
* chore: adding RootSaturation to init file
---------
Co-authored-by: ruari.walker <[email protected]>
Co-authored-by: Will Dean <[email protected]>
* Check for missing attrs after `sample_prior_predictive` and `fit` (#867)
* separate the attr creation from attachment and perform check
* remove data for CLV
* fix model_builder tests
* fix clv tests
* more specific model builder checks
* rework with no args and kwargs
* rework common load method
* Update pymc_marketing/model_builder.py
* `json.loads` with python types bug (#881)
* loads doesnt support boolean
* defaults for the media transformation
* test for the time_varyign
* [pre-commit.ci] pre-commit autoupdate (#883)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.5.4 → v0.5.5](astral-sh/ruff-pre-commit@v0.5.4...v0.5.5)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Fix default `ConvMode` in docstring (#864)
* Update docs in transformers.py
docs: Fix the docstring
* Update docs in transformers.py
docs: fix other docstrings
* change the plot default
---------
Co-authored-by: Will Dean <[email protected]>
Co-authored-by: Will Dean <[email protected]>
* Save off media transformations (#882)
* to_dict via lookup_name
* parse to and from dict for attrs
* improve the codecov
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* change test with change in default behavior
* increase the MMM model version
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Update deployment docs (#887)
* update the notebook
* update the runner
* address feedback. add watermark
* Automate UML creation (#886)
* attempt to automate uml
* install graphviz binaries
* use sudo
* Update UML Diagrams
* remove the git configuration
* use the identity of the previous commit
* dont push with no change
* same triggers as others
* restrict to running with repo_changes
---------
Co-authored-by: GitHub Actions <[email protected]>
Co-authored-by: Juan Orduz <[email protected]>
* prepare release (#888)
* Update README.md (#893)
* Add url health job from streamlit app (#902)
* add url health job
* lint
* small improvements model config nb (#906)
* small improvements
* trim
* Add link model deployment to example notebook (#904)
* add link model deployment
* add pymc-marketing to watermark
* Add pymc-marketing version to some MMM notebooks (#907)
* nb part 1
* add mmm example nb
* rm example nb
* Move adstock and saturation method imports to mmm.__all__ (#908)
* Resolves #892: Move adstock and saturation method imports to mmm.__all__
* fix: patch uml GHA
* Update .github/workflows/uml.yml
* Update .github/workflows/uml.yml
* Add permissions: write-all to .github/workflows/uml.yml
---------
Co-authored-by: Will Dean <[email protected]>
* chore(Makefile): Adding a self-documenting command and light command documentation (#910)
Co-authored-by: Juan Orduz <[email protected]>
* Fix uml permissions (#913)
* [pre-commit.ci] pre-commit autoupdate (#914)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.5.5 → v0.5.6](astral-sh/ruff-pre-commit@v0.5.5...v0.5.6)
- [github.com/pre-commit/mirrors-mypy: v1.11.0 → v1.11.1](pre-commit/mirrors-mypy@v1.11.0...v1.11.1)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Will Dean <[email protected]>
* Don't run tests for non-code changes (#898)
* test running budget allocator nb (#919)
* make hill pass through the origin (#920)
* Add MMM ROAS Priors Case Study (#916)
* model and data init
* make it work
* add intro
* add nb to index and references
* first complete iteration
* improve formatting
* split paragraph
* pyprojroot
* typos
* add conclusion section
* improve intro
* typos and feedback
* typo (#923)
* [pre-commit.ci] pre-commit autoupdate (#926)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.5.6 → v0.5.7](astral-sh/ruff-pre-commit@v0.5.6...v0.5.7)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Original hill function definition (#925)
* MLflow autologging (#921)
* Adding BLAS to the env generation.
* Solving optimizer issues & typos (#933)
* Correcting typo num_days by horizon
* Correcting typo num_days by horizon and scaler
* Running notebooks
* Update UML Diagrams
* Rename horizon by periods
* Adding test requested to check budget outputs
* Running notebooks
* Update UML Diagrams
* Small notebook missing change.
* Correction in tests
* Change on name
* running notebook modifying function
* Update UML Diagrams
* Log number of posterior & tuning samples (#943)
* helper command to view the artifacts from test
* pass tune from kwargs
* test for support of all samplers
* add mlflow as a mock import
* actual import as autolog is missing from docs
* point to GH discussions (#944)
Co-authored-by: Juan Orduz <[email protected]>
* [pre-commit.ci] pre-commit autoupdate (#946)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.5.7 → v0.6.1](astral-sh/ruff-pre-commit@v0.5.7...v0.6.1)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* fix typo
* fix admonition block + markdown heading level
* collect results of plot funcs in tests
* add no cover comments
* explicit module level scope for fixture
* consistent use of product_incrementality for folder names
* background_sales -> existing_sales
* innovation_sales -> treatment_sales
* Fallback to defaults in `adstock|saturation_from_dict` (#955)
* Default saturation_from_dict to default_priors
* Default to AdstockTransformation.default priors in adstock_from_dict
* Add PyDocStyle Support (#951)
* change to normal likelihood truncated at zero
* use empirical estimate for HalfNormal sigma for observation noise std
* remove commented out lines
* use just one idata instance - removes idata_counterfactual
* make pre-commit checks pass
* break up code in __init__ into smaller methods
* remove @Property and deal with some consequences of that
* deprecate WeibullAdstock in favor of WeibullCDFAdstock and WeibullPDFAdstock (#957)
* deprecate in favor of WeibullCDFAdstock and WeibullPDFAdstock
* Update UML Diagrams
* Update UML Diagrams
* Raise informative error when including target in `X` (#962)
* add error when target is in X_df
* add test
* rename test
* format
* Ensure `fit` reproducibility (#963)
* use get instead of assign to default to sampler_config if exists
* default to what is given
* write tests based on the issue
* have defaults while not overriding
* Enforce `check_parameters` for `alpha` in `geometric_adstock` (#960)
* Enforce check_parameters in geometric_adstock
* Remove check_parameters on l_max. Revert to original test
* Add test_geometric_adstock_bad_alpha
* use ge, le instead of gt,lt
* Update tests/mmm/test_transformers.py
Co-authored-by: Will Dean <[email protected]>
* Simplify test parameters
* Update tests/mmm/test_transformers.py
Co-authored-by: Will Dean <[email protected]>
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: Will Dean <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* scaling should be done before hdi computation (#970)
* Fix UML permissions from forks / Run only on merge to main (#967)
* change repo and python file change to kick off
* comment to check for failure
* using the repo
* delete to trigger
* the previous trigger
* push up again
* check for the owner being pymc-labs
* remove unused
* only run after merge to main
* `DelayedSaturatedMMM` deprecations and moving files (#965)
* deprecations and moving files
* Update UML Diagrams
* change the imports in notebooks
* push up the code / test changes. need to run
* remove _get_\w*_function tests
* rerun the tvp notebook
* remove stale test
* move away from string initialization
* change the tvp media example
* Register and allow custom transform for `Prior` class (#972)
* allow register and use custom transform
* add to the example block
* Update pypi.yml (#975)
* [pre-commit.ci] pre-commit autoupdate (#977)
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.6.1 → v0.6.2](astral-sh/ruff-pre-commit@v0.6.1...v0.6.2)
- [github.com/pre-commit/mirrors-mypy: v1.11.1 → v1.11.2](pre-commit/mirrors-mypy@v1.11.1...v1.11.2)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Added deprecation warning for method keyword (#974)
Co-authored-by: Will Dean <[email protected]>
Co-authored-by: Juan Orduz <[email protected]>
* Improve and sync the README and landing page. (#978)
* add table
* sync index
* empty
* improvements
* Time slice cross validation MMM Notebook (#971)
* nb init
* add param stability
* crps init
* add crps to package
* make mypy happy
* clean
* relax req
* update path
* add crps test
* first iteration
* improvements
* improve tests
* improve tests
* improve references
* feedback 1
* add examples
* fix the wrong trigger (#983)
* Media transformation class and different transformations based on subsets of channels (#968)
* Changed pt=pt to pt_lib = None to avoid showing full module path in docs (#992)
* Changed pt=pt to pt_lib = None to avoid showing full module path in docs
* Changed pt to pt_lib inside calculate_lift_measurements_from_curve
* Linear trend (#991)
* push up some linear-trend work I had
* image for the documentation
* start the slopes at t=0
* additional checks at init
* import at mmm module
* update the image
* Move to reference section
* Move coords to single line
* Add hierarchical trend example
* add image for the example
* migrate to pydantic
* update images after seed
* Correct the latex
* fix check from tests
* revert link
* add item for new module
* Use ModelBuilder for incrementality model (#1101)
* use the modelbuilder mixin
* use Prior class for the background_distribution
* modify the tests
* test for mismatch
* add informed prior method
* begin to modify the existing notebooks
* add y to the mix
* changes to saturated notebook
* run with the accept kwargs
* rename product_incrementality module to cc
* fix typo
* add a placeholder quickstart docs page
* rename a folder (previously missed) product_incrementality -> cc
* more instances of product incrementality -> customer choice
* market_saturated -> saturated_market
* add quickstart/cc/index to the getting_started page
* avoid reusing `result` for multiple different scenarios
* notation change: rename "background" to "existing"
* add kwarg plot_total_sales to plot functions
* rename module cc -> customer_choice
* remove type hint on plot_total_sales to make tests pass
* get docs to build / pass tests
* finish the customer_choice getting started page
* fix typo
* remove manual tight_layout commands
* fix typo
* grammatical fix
* fix typo
* surpress a plot output
* fix typo
* update imports + split data generation code into different .py file
* fix imports in tests
* add docstrings to synthetic data module
* switch rng parameter to random_seed
* import from the customer_choice over submodule
* add docstrings to the model and plot function and mypy
* add file autolabeling
* allow for ax argument
* fix the test seed name
* change import
* increase tests / find some holes
* use random_seed instead of rng
* fix conflicts
* lint
---------
Co-authored-by: Juan Orduz <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Colt Allen <[email protected]>
Co-authored-by: Will Dean <[email protected]>
Co-authored-by: Carlos Trujillo <[email protected]>
Co-authored-by: Carlos Trujillo <[email protected]>
Co-authored-by: Corey Abshire <[email protected]>
Co-authored-by: Ulf Aslak <[email protected]>
Co-authored-by: nialloulton <[email protected]>
Co-authored-by: Louis Magowan <[email protected]>
Co-authored-by: Ricardo Vieira <[email protected]>
Co-authored-by: Ivan Ugrin <[email protected]>
Co-authored-by: Will Dean <[email protected]>
Co-authored-by: Mews <[email protected]>
Co-authored-by: Oriol Abril-Pla <[email protected]>
Co-authored-by: c0d33ngr <[email protected]>
Co-authored-by: Shuvayan Das <[email protected]>
Co-authored-by: sangeedutta <[email protected]>
Co-authored-by: Arthur Mello <[email protected]>
Co-authored-by: Thomas Wiecki <[email protected]>
Co-authored-by: Murad Khalil <[email protected]>
Co-authored-by: Murad Khalilov <[email protected]>
Co-authored-by: Giannis_apost <[email protected]>
Co-authored-by: Christian Luhmann <[email protected]>
Co-authored-by: Patrick Robotham <[email protected]>
Co-authored-by: Patrick Robotham <[email protected]>
Co-authored-by: Ishaan Jolly <[email protected]>
Co-authored-by: Ruari Walker <[email protected]>
Co-authored-by: ruari.walker <[email protected]>
Co-authored-by: Maxim Kochurov <[email protected]>
Co-authored-by: GitHub Actions <[email protected]>
Co-authored-by: Pablo de Roque <[email protected]>
Co-authored-by: Dan Dean <[email protected]>
Co-authored-by: Pablo de Roque <[email protected]>
Co-authored-by: radiokosmos <[email protected]>
Co-authored-by: Juan Orduz <[email protected]>customer_choice
module (#803)1 parent 327ac97 commit 5f74b4dCopy full SHA for 5f74b4d
File tree
Expand file treeCollapse file tree
29 files changed
+4416
-4
lines changedFilter options
- .github
- docs/source
- api
- getting_started
- quickstart/customer_choice
- guide
- customer_choice
- notebooks
- customer_choice
- uml
- pymc_marketing
- customer_choice
- streamlit/mmm-explainer
- tests
- customer_choice
Expand file treeCollapse file tree
29 files changed
+4416
-4
lines changedCollapse file: .github/labeler.yml
+6Lines changed: 6 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
15 | 15 |
| |
16 | 16 |
| |
17 | 17 |
| |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
18 | 24 |
| |
19 | 25 |
| |
20 | 26 |
| |
|
Collapse file: .github/pull_request_template.md
.github/pull_request_template.md
Copy file name to clipboardExpand all lines: .github/pull_request_template.md+1Lines changed: 1 addition & 0 deletions
- Display the source diff
- Display the rich diff
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
25 | 25 |
| |
26 | 26 |
| |
27 | 27 |
| |
| 28 | + | |
28 | 29 |
| |
29 | 30 |
| |
30 | 31 |
| |
|
Collapse file: CONTRIBUTING.md
+10Lines changed: 10 additions & 0 deletions
- Display the source diff
- Display the rich diff
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
172 | 172 |
| |
173 | 173 |
| |
174 | 174 |
| |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
175 | 185 |
| |
176 | 186 |
| |
177 | 187 |
|
Collapse file: Makefile
+1Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
49 | 49 |
| |
50 | 50 |
| |
51 | 51 |
| |
| 52 | + | |
52 | 53 |
| |
53 | 54 |
| |
54 | 55 |
| |
|
Collapse file: docs/source/api/index.md
+1Lines changed: 1 addition & 0 deletions
- Display the source diff
- Display the rich diff
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
13 | 13 |
| |
14 | 14 |
| |
15 | 15 |
| |
| 16 | + | |
16 | 17 |
| |
17 | 18 |
| |
18 | 19 |
| |
|
Collapse file: docs/source/getting_started/index.md
docs/source/getting_started/index.md
Copy file name to clipboardExpand all lines: docs/source/getting_started/index.md+1Lines changed: 1 addition & 0 deletions
- Display the source diff
- Display the rich diff
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
13 | 13 |
| |
14 | 14 |
| |
15 | 15 |
| |
| 16 | + | |
16 | 17 |
|
Collapse file: docs/source/getting_started/quickstart/customer_choice/index.md
docs/source/getting_started/quickstart/customer_choice/index.md
Copy file name to clipboard+41Lines changed: 41 additions & 0 deletions
- Display the source diff
- Display the rich diff
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + |
Collapse file: docs/source/guide/customer_choice/inc_complex.png
docs/source/guide/customer_choice/inc_complex.png
Copy file name to clipboard200 KB
- Display the source diff
- Display the rich diff
Loading
Collapse file: docs/source/guide/customer_choice/inc_counterfactual.png
docs/source/guide/customer_choice/inc_counterfactual.png
Copy file name to clipboard174 KB
- Display the source diff
- Display the rich diff
Loading
Collapse file: docs/source/guide/customer_choice/inc_simple.png
docs/source/guide/customer_choice/inc_simple.png
Copy file name to clipboard193 KB
- Display the source diff
- Display the rich diff
Loading
0 commit comments