Releases: pymc-labs/pymc-marketing
Releases · pymc-labs/pymc-marketing
0.16.0
What's Changed
Major Changes 🛠
- Handle release of pymc 5.25.0 by @daniel-saunders-phil in #1844
- Migrate to prior module from pymc-extras by @williambdean in #1767
New Features 🎉
- Sensitivity analysis and marginal effects by @drbenvincent in #1673
- Add
table
method to ModelBuilder to display rich table by @williambdean in #1786 - Allow for indexing of apply parameters by @williambdean in #1847
- index transformation variables in higher dimension cases by @williambdean in #1857
- allow for arbitrary additive effects in MVITS model by @williambdean in #1861
- Allow Lists and NumPy Arrays as Transformation Priors by @timbo112711 in #1879
- Support HSGP instance for time_varying_media in MMM by @cetagostini in #1881
- Support HSGP instance for time_varying_intercept in MMM by @cetagostini in #1894
- Add Fivetran data loaders by @cetagostini in #1887
- Add more Basis implementations for use with EventEffect by @TeemuSailynoja in #1911
Bugfixes 🐛
- hot fix (test match) by @juanitorduz in #1852
- Update and reduce size multi_mmm.nc by @juanitorduz in #1854
- Deprecate and disable budget optimization method & Updating notebook by @cetagostini in #1832
- Handle 0-dim channel_xr in create_zero_dataset by @cetagostini in #1890
- Fix grid shape logic in saturation_curves and add tests by @cetagostini in #1889
- Updating prior predictive notebook by @cetagostini in #1897
- Streamlit Dependency Fix by @timbo112711 in #1904
- Fix FourierEffect by @PabloRoque in #1909
Documentation 📖
- fix the link to Labs YouTube by @williambdean in #1822
- Fix notebooks titles MMM in gallery by @juanitorduz in #1843
- Remove reference to linear_saturation function by @williambdean in #1833
- Updating MMM Budget allocation examples, functionalities and dependencies by @cetagostini in #1849
- Add
rfm_train_test_split
example to CLV Quickstart by @ColtAllen in #1855 - lift test requires 'date' in df_lift_test Data Frame with time_varying_media=True by @timbo112711 in #1818
- MMM: Fix Scaling Intercept by @juanitorduz in #1845
- Implement multidimensional scaling approach in regular MMM by @cetagostini in #1862
- Update MMM comparison table by @williambdean in #1878
- Get marginal_effects hdi estimates by @PabloRoque in #1885
- Correcting typo around yml files and csv files. by @cetagostini in #1888
- Improve saturation function docs by @daniel-saunders-phil in #1892
- Improvements on multidimensional notebook by @daniel-saunders-phil in #1876
- Clean badges by @juanitorduz in #1896
- Fourier transformation and HSGPs for streamlit app by @timbo112711 in #1898
- Add usage examples and documentation to MMM modules by @cetagostini in #1895
- Assign coords to multidimensional fit_data by @PabloRoque in #1902
Maintenance 🔧
- Add callback tracking to budget optimizer by @cetagostini in #1829
- Cosmetic changes to #1829 by @PabloRoque in #1830
- Add support for time-based budget distribution in optimizer by @cetagostini in #1841
- fix(clv): Improve validation for missing columns in CLVModel by @aaron1-z in #1851
- Adding arguments to model builder by @cetagostini in #1867
- Add causal graph support to MMM with DAG serialization by @cetagostini in #1882
- Refactor
ModelBuilder
into smaller classes by @ColtAllen in #1870 - Update requirements.txt [StreamlitApp] by @juanitorduz in #1900
- fix mypy overide by @juanitorduz in #1901
- Updates Streamlit App Requirements by @timbo112711 in #1903
- Multidimensional support in plot_sensitivity_analysis by @PabloRoque in #1886
- Minor convenience to override model_kwargs in build_mmm_from_yaml by @PabloRoque in #1907
- Normalize gaussian basis by @PabloRoque in #1912
New Contributors
- @daniel-saunders-phil made their first contribution in #1844
- @aaron1-z made their first contribution in #1851
Full Changelog: 0.15.1...0.16.0
0.15.1
What's Changed
New Features 🎉
- Handle static covariates in
ModifiedBetaGeoModel
by @PabloRoque in #1815
Bugfixes 🐛
- Handle optimization for dimensions having channel with zero spend by @PabloRoque in #1762
Documentation 📖
- adding DCM to readme by @NathanielF in #1800
- stale docstring: "likelihood" is not a model variable by @timbo112711 in #1803
Maintenance 🔧
- Compute deterministics after sampling by @PabloRoque in #1802
New Contributors
- @timbo112711 made their first contribution in #1803
Full Changelog: 0.15.0...0.15.1
0.15.0
What's Changed
New Features 🎉
- Adding Multinomial and Nested Logit Models for Consumer Choice by @NathanielF in #1654
- URL pathlike for consistent
pymc_marketing.paths.data_dir
API by @williambdean in #1797 - Implement
add_lift_test_measurements
for multidimensional MMM by @TeemuSailynoja in #1738
Bugfixes 🐛
- Automatic casting based on model types for posterior predictive by @cetagostini in #1781
- Clip noisy channel predictors by @PabloRoque in #1790
Documentation 📖
- ruff format docstring code blocks by @williambdean in #1794
New Contributors
- @NathanielF made their first contribution in #1654
Full Changelog: 0.14.1...0.15.0
0.14.1
What's Changed
New Features 🎉
- Log off traceback in MLflow by @williambdean in #1736
- multidimensional MMM initialization validation by @IlanDanial in #1725
- More granular ModelBuilder errors upon load by @williambdean in #1765
Bugfixes 🐛
- Fix LinearTrend changepoints in
plot_curve
method by @gdeleva in #1739 - Fix dim issue for default priors of linear trend and replace linear trend related doc pictures by @gdeleva in #1741
- LinearTrend deterministic error by @williambdean in #1748
- Bug: No need to check columns in Y for yml construction by @cetagostini in #1774
- Bug: Solving issue with hardcoded date by @cetagostini in #1780
- Bug: Sample posterior predictive raise error if dates overlap by @cetagostini in #1778
- Allow for tvp priors in multidimensional.MMM by @williambdean in #1785
Documentation 📖
- Enhances MMM Packages Comparison by @lfiaschi in #1722
- Fix time plots in CLV Quickstart by @ColtAllen in #1724
- Fix BudgetOptimizer docstrings by @TeemuSailynoja in #1705
- Updating example multidimensional to use original scale after posterior predictive by @cetagostini in #1782
- Standardize usage of
singular | plural
model variables by @PabloRoque in #1763
Maintenance 🔧
- upper bound pymc 5.23 by @juanitorduz in #1728
- update pytensor lower bound to 2.31.3 by @juanitorduz in #1737
New Contributors
- @lfiaschi made their first contribution in #1722
- @IlanDanial made their first contribution in #1725
Full Changelog: 0.14.0...0.14.1
0.14.0
What's Changed
Deprecations 🚨
- Deprecate CLV methods,
clv_summary
,method
parameter,to_json
andfrom_json
methods by @ErikRingen in #1637
New Features 🎉
- Add Bass Diffusion Model by @williambdean in #1328
- Support for string in
plot_curve
and add to docs by @williambdean in #1650 - Expose n_samples, hdi_probs, and random_seed in
plot_curve
by @williambdean in #1697 - Add LinearRegression wrapper by @williambdean in #1713
Bugfixes 🐛
- support for additional dimension in LinearTrend by @williambdean in #1688
- Fix Bass model derivative by @williambdean in #1702
Documentation 📖
- Change spacing batched_convolution documentation by @williambdean in #1645
- Add utils to docs by @williambdean in #1651
- Fix Bass model example plot by @williambdean in #1666
- Create wrapper to make budget optimizer compatible with multidimensional class by @cetagostini in #1652
- Change documentation of multi-dimensional by @gdeleva in #1679
- Set html title explicitly by @OriolAbril in #1686
- Build multidimensional MMM from yaml configuration by @cetagostini in #1669
- Accelerate documentation build by @OriolAbril in #1695
- Use HDI instead of CI in MMM plotting suite by @TeemuSailynoja in #1689
- Consolidate name to PyMC-Marketing by @williambdean in #1699
- Rename all occurences of pymc-labs.io to pymc-labs.com by @twiecki in #1708
Maintenance 🔧
- Change the event function to class by @williambdean in #1675
- Issue #1696: addresses a bug in plotting the intercept by @esmailansari in #1698
New Contributors
- @ErikRingen made their first contribution in #1637
- @gdeleva made their first contribution in #1679
- @TeemuSailynoja made their first contribution in #1689
- @twiecki made their first contribution in #1708
- @esmailansari made their first contribution in #1698
Full Changelog: 0.13.1...0.14.0
0.13.1
0.13.0
What's Changed
New Features 🎉
- Add Example Gallery by @juanitorduz in #1611
- Fourier and LinearTrend additive effects by @williambdean in #1580
- Add version to posterior and prior groups by @williambdean in #1591
API
Bugfixes 🐛
- Fix LinearTrend out of sample by @williambdean in #1585
- BUG: FourierEffect with multidimensional case by @williambdean in #1594
Documentation 📖
- Fix minor scaling inconsistency in hdi50 prior plot by @PabloRoque in #1579
- Allow original scales in saturation_curves_scatter by @PabloRoque in #1581
- MMM Multidimensional example linear trend by @juanitorduz in #1589
- minor improvements by @juanitorduz in #1590
- rerun mmm tvp base nb by @juanitorduz in #1595
- Add to MLflow error docs by @williambdean in #1616
- format code blocks by @williambdean in #1621
- Update "how do we compare" by @juanitorduz in #1632
Maintenance 🔧
- Cast periods value to int by @williambdean in #1597
- restrict the osqp version by @williambdean in #1614
- Permit
BudgetOptimizer.allocate_budget()
to takex0
as an argument by @cluhmann in #1565 - Replace
batched_convolution
by PyTensor native implementation by @ricardoV94 in #1583 - Log
pm.sample
exception to MLflow by @williambdean in #1612
New Contributors
Full Changelog: 0.12.1...0.13.0
0.12.1
What's Changed
New Features 🎉
- Add
sample_prior
to sample from arbitrary VariableFactory by @williambdean in #1536 - 1553 add transform parameter for HSGP link function by @williambdean in #1555
- Add
demeaned_basis
flag for HSGP classes by @williambdean in #1560 - Specify target scaling dimensions by @williambdean in #1562
- Allow for media scaling settings by @williambdean in #1573
Bugfixes 🐛
- 1570 target scaled and variable need to be broadcasted with non global scaling by @williambdean in #1571
Documentation 📖
- MMM Multi-Dimensional Example by @juanitorduz in #1521
Maintenance 🔧
- Correcting small errors in multidimensional mmm by @cetagostini in #1551
- remove abstract requirement of data_setter by @williambdean in #1463
Full Changelog: 0.12.0...0.12.1
0.12.0
What's Changed
Major Changes 🛠
- excluded _prior suffix from CLV models by @arthurmello in #1498
Deprecations 🚨
- Rename CLV
fit_method
andt_unobserved
parameters tomethod
andt_start_eval
by @ColtAllen in #1537
New Features 🎉
- [MMM] Model events as gaussian bumps by @juanitorduz in #1465
- Out-of-Box MultiDimensional MMM by @cetagostini in #1036
- Add basis bumps effect to MMM model by @wd60622 in #1475
- Allow
plot_expected_purchases_pcc
inBetaGeoModel
andModifiedBetaGeoModel
by @PabloRoque in #1470 - Allow static covariates in BGNBDModel by @PabloRoque in #1390
- Support MediaTransformation and MediaConfigList deserialization by @wd60622 in #1504
- Check for wrong media dims by @wd60622 in #1505
Bugfixes 🐛
- load bug with y name different than
output_var
by @wd60622 in #1468 - Fix ModifiedBetaGeoNBDRV sim_data by @PabloRoque in #1472
- Change Basis sample_curve defaults by @wd60622 in #1500
- Check for incompatible dims in MediaTranform by @wd60622 in #1502
- Allow for extra columns in df_events by @wd60622 in #1501
- Use MediaTransformation dims in save and load by @wd60622 in #1503
- Fix
_create_synth_dataset
when MMM has no controls by @PabloRoque in #1513 - Use SoftPlusHSGP in multidimensional HSGP by @wd60622 in #1510
- Use SoftPlusHSGP directly in MMM class by @wd60622 in #1523
- Fix SoftPlusHSGP out of sample by @wd60622 in #1544
Documentation 📖
- Add thin wrapper around advi functionality by @PabloRoque in #1365
- Added missing paramater take_every in docs of create_log_callback by @nayan2167 in #1491
- Fixes documentation on mmm control variable scaling - Issue #1469 by @zach-brown-18 in #1499
- change parameter from samples to draws by @wd60622 in #1524
- Fix the TVP example by @wd60622 in #1533
Maintenance 🔧
- add preliz dependency by @wd60622 in #1507
- Merge value and grad in budget optimizer by @ricardoV94 in #1512
New Contributors
- @zach-brown-18 made their first contribution in #1499
- @github-actions made their first contribution in #1528
Full Changelog: 0.11.1...0.12.0
0.11.1
What's Changed
Deprecations 🚨
- migrate predict parameter X_pred to X by @wd60622 in #1450
- Remove parameter methods by @wd60622 in #1455
New Features 🎉
- MLflow callback logging by @wd60622 in #1425
- Support xarray in ModelBuilder by @wd60622 in #1459
- Add WeeklyFourier by @PabloRoque in #1443
Bugfixes 🐛
- Log model with only pm.Data for likelihood by @wd60622 in #1423
- 1325 invalid way of calling first element of pdseries by @wd60622 in #1433
- Remove repeated docs by @juanitorduz in #1434
- Fix error when budgets_to_optimize are specified by @ricardoV94 in #1440
- Correcting HSGP to be link to model graph by @cetagostini in #1452
Documentation 📖
- [DOC] MMM Example Notebook ROAS vs Contribution Share plot by @juanitorduz in #1436
- improve readme by @juanitorduz in #1438
- Add current year to Sphinx copyright by @PabloRoque in #1444
- [DOC] improvement roas efficiency plot. mmm case study by @juanitorduz in #1437
- Update comparison.md by @juanitorduz in #1446
Maintenance 🔧
- More flexible type for BudgetOptimizer by @ricardoV94 in #1429
- Fix minor latex rendering issue by @PabloRoque in #1449
- Remove predictor_names argument by @wd60622 in #1458
Full Changelog: 0.11.0...0.11.1