Skip to content

Releases: facebookexperimental/Robyn

v3.8.0 - Bootstrapped CI, Immediate vs Carryover, Multi-channel calibration

28 Oct 07:50
Compare
Choose a tag to compare
  • Feat: Added in-cluster bootstrapped confidence intervals (CI) for ROAS and CPA. We treat each cluster of Pareto-optimal model candidates as a sample from a local optimum of the entire population. Default parameters can be customized manually with boot_n and sim_n arguments.
  • Feat: New robyn_calibrate() function that replaces previous un-exported function calibrate_mmm(). The new calibration method is able to separate immediate & carryover effects. When calibrating using experimental results, only the immediate response and its future carryover serve as a calibration target, as opposed to previously the total response. The historical response is excluded from calibration.
  • Feat: Enabled multi-channel calibration so we can use experiments that measured more than one channel with a single experiment to be used for calibration (i.e. incrementality experiment measured all fb but you had fb_brand and fb_perf as two separate media channels/variables).
  • Feat: Added 2 new plots into model one-pager: bootstrapped CI plot and immediate vs carryover response plot.
  • Feat: Changed default Pareto-fronts from 3 to ”auto" to pick the N that contains at least 100 models (threshold can be changed manually with min_candidates parameter).
  • Recode: improved CodeFactor's code quality score from C- to A
  • Feat: Additional CI outputs containing revamped plot and CSV file.
  • Feat: Enabled turning off parallel calculations when cores = 1.
  • Fix: Fixed few minor bugs and doumentations (#496, #506, #507, #515)

Full Changelog: v3.7.2...v3.8.0

v3.7.2 - CRAN update, partial results, more reproducibility

01 Sep 20:15
Compare
Choose a tag to compare
  • Feat: wrap robyn_mmm() with a tryCatch() to return partial results if the function crashes after a certain time running and warns the user when this happens
  • Feat: auto-detect categorical variables (no need to set factor_vars parameter in robyn_inputs())
  • Feat: include R and Robyn's versions to JSON files and InputCollect for reproducibility
  • Feat: export/save raw data input for reproducibility (raw_data.csv file)
  • Feat: set Robyn::dt_prophet_holidays as default input on dt_holidays parameters
  • Fix: inverted counters in check_hyperparameters() message #474
  • Fix: force date format before binding rows in robyn_refresh() #480
  • Fix: check_context() was being skipped in some cases
  • Fix: when only 1 categorical value with 2 unique values crashed one-hot-encoding
  • Docs: updated templates for issues and pull requests

Full Changelog: v3.7.1...v3.7.2
Full Changelog since last CRAN update: v3.6.3...v3.7.2

v3.7.1 - JSON import/export, reactivate spend exposure fitting Latest

26 Aug 15:38
Compare
Choose a tag to compare
  • Feat: new robyn_read() and robyn_write() functions to save and load Robyn models in a transparent, flexible, and cost-efficient way using JSON instead of RDS files (read more); also, new print methods for both objects containing the most relevant information
  • Feat: new robyn_recreate() to rebuild any model's InputCollect and OutputCollect objects based on their JSON files and data
  • Feat: reactivated spend exposure fitting and plotting #463
  • Feat: updated robyn_response() to receive numeric vectors #464
  • Feat: enabled calibration_input on robyn_refresh() to calibrate on the fly and more robust checks on data inputs
  • Feat added Robyn and R versions as the caption in one-pagers to help users debug
  • Feat: trimmed spend response curves on robyn_allocator() and robyn_onepagers() plots outputs
  • Fix: missed intercept calculation in fitted vs residual plot #462
  • Fix: when single categorical value had 2 levels it crashed the one-hot-encoding process
  • Fix: datasets with no categorical data crashed when using one-hot-encoding #419
  • Fix: no need to manually sort the dates before passing the data to robyn_inputs(). Ref: check_datevar() #448
  • Fix: fixed ggplot warnings on some plots (previously hidden with suppressWarnings)
  • Other: added badges with website and Facebook group in README files (see here), updated documentation and website, and more data checks on user inputs

New Contributors

Full Changelog: v3.7.0...v3.7.1

v3.7.0 - Total recoding, UX feats, and combined errors fix

27 Jul 19:18
390a7f9
Compare
Choose a tag to compare

Relevant changes on v3.7.0:

  • Recode: got rid of data.table dependency for r2py wrapper and removed all globalVariables associated noise
  • Recode: all code is now clean and formatted under the tidyverse code style for better code reading and standardization
  • Feat: trimmed functionality for response curves on one-pagers outputs to have coherent ranges plotted
  • Feat: enabled channels removal on robyn_allocator() by setting their constraints to 0 #411
  • Feat: when manually selecting refresh models in robyn_refresh(), re-ask user until valid solID is provided, instead of crashing
  • Feat: new plot and improved print methods for robyn_refresh() outputs
  • Feat: include time units used in adstock plots for clarity
  • Feat: enabled organic media variables to be calibrated (no spend)
  • Fix: when best model based on minimum combined errors was tied with other models, inconsistent outputs (one-pagers / clustering). Standardized combined errors methodology with new errors_scores() function, especially normalizing errors before filtering models. The largest the "error_score", the better the model's performance #428
  • Fix: show blue dots on top of grey dots in Pareto plots #420
  • Fix: positive/negative colour palette on waterfall plot when all values are positive
  • Fix: set prophet's print as disabled when prophet_vars input is NULL (off)
  • Docs: added CRAN, site, and FB group badges on README files
  • Docs: several typos and documentation updates

Full Changelog: v3.6.3...v3.7.0

v3.6.3 - CRAN version, site revamp, more inputs flexibility

06 May 14:57
Compare
Choose a tag to compare

Relevant changes on v3.6.3:

  • CRAN: First Robyn version available via CRAN. From now on, install CRAN's for stable version, GitHub's for dev version.
  • Docs: Site revamp #372, documentation updates and demo enrichment
  • Feat: Added version_prompt parameter to robyn_refresh() #375
  • Feat: Added new calibration checks to ensure quality experiments usage
  • Feat: New date_min and date_max parameters on robyn_allocator() to pick non-0 means window
  • Feat: New robyn_update() function
  • Feat: More checks and warnings included to push users to follow best practices.
  • Refactor: Changed 1 to 3 Pareto fronts as default to enrich robyn_clusters() results
  • Refactor: Changed default thresholds on robyn_converge() to be more flexible
  • Fix: Several bugs squashed

New Contributors

Full Changelog: v3.6.2...v3.6.3

v3.6.2: Allocation and plot improvements, new warnings, bugs fixed

31 Mar 16:46
edf5067
Compare
Choose a tag to compare

Relevant changes on v3.6.2:

  • Viz: removed redundant information on plots and standardized styles and contents on all visualizations.
  • Feat: new date_min and date_max parameters on robyn_allocator() to pick specific date range to consider mean spend values (user request).
  • Feat: new plot methods for robyn_allocator() and robyn_save() outputs, and print method for robyn_inputs() with and without hyperparameters.
  • Feat: provide recommendations on calibration inputs depending on the experiments' confidence, spending, and KPI measured (#307).
  • Feat: warn and avoid weekly trend input when data granularity is larger than "week".
  • Fix: issues on several robyn_allocator() specific cases (#349, #344, #345), especially when some coefficients were 0.
  • Fix: bug with Weibull adstock scenario (#353).
  • Docs: fixed some typos, updated, and standardized internal documentation.

Commits log

New Contributors

Full Changelog: v3.6.0...v3.6.2

v3.6.0 - Add new hyperparameter, new convergence metric, improved response function, prints and better allocation stability

22 Feb 11:42
Compare
Choose a tag to compare

What's New in v3.6.0

  • New hyperparameter "lambda" finds MOO-optimal lambda and thus removes the need of manual lambda selection.
  • New optional hyperparameter penalty.factor that further extends hyperparameter spaces and thus potentially better fit.
  • New optimisation convergence rules & plots for each objective function showing if set iterations have converged or not (NRMSE, DECOMP.RSSD, and MAPE if calibrated)
  • Improved response function now also returns the response for exposure metrics (response on imps, GRP, newsletter sendings, etc) and plots. Note that argument names and output class has changed. See updated demo.R for more details.
  • More budget allocation stability by defaulting fitting media variables from paid_media_vars to paid_media_spends. Spend exposure fitting with Michaelis Menten function will only serve robyn_response() function output and plotting. robyn_allocator() now only relies on direct spend - response transformation.
  • Default beta coefficient signs: positive for paid & organic media and unconstrained for the rest. Users can still set signs manually.
  • New print methods for robyn_inputs(), robyn_run(), robyn_outputs(), and robyn_allocator() outputs to enable visibility on each step's results and objects content.

Full Changelog: v3.5.1...v3.6.0

v3.5.0 - Add clustering method for model selection and split robyn_run()

01 Feb 16:04
4b3d829
Compare
Choose a tag to compare

What's New in v3.5.0

  • New robyn_clusters() function to reduce the number of models to select from after Pareto front solutions are picked
  • Auto-select K clusters given a minimum WSS variance on robyn_clusters()
  • Split robyn_run() functionalities into robyn_outputs() for more control over modelings results and exporting process
  • Enabled custom prophet inputs to be used in modeling and refreshing models
  • Enabled users to use all outputs without the need of exporting results (Shiny devs)
  • New hyper_limits() helper function with permitted hyper-parameters limits
  • New quiet mode to reduce prints and messages, few recoding, and overall improvements

Full Changelog: v3.4.8...v3.5.0

v3.4.8 - Add parallel in plotting and improve parallel in model loop

25 Nov 19:48
Compare
Choose a tag to compare
  • 20% - 40% faster in the major modelling loop
  • 50% fasterr in plotting loop for linux & windows users

v3.4.4 - fixed loading old model & refresh bug

03 Nov 13:46
Compare
Choose a tag to compare