Releases: facebookexperimental/Robyn
Releases · facebookexperimental/Robyn
v3.8.0 - Bootstrapped CI, Immediate vs Carryover, Multi-channel calibration
- 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
andsim_n
arguments. - Feat: New
robyn_calibrate()
function that replaces previous un-exported functioncalibrate_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 hadfb_brand
andfb_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 withmin_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
- Feat: wrap
robyn_mmm()
with atryCatch()
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 inrobyn_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 ondt_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
- Feat: new
robyn_read()
androbyn_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, newprint
methods for both objects containing the most relevant information - Feat: new
robyn_recreate()
to rebuild any model'sInputCollect
andOutputCollect
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
onrobyn_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()
androbyn_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
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 improvedprint
methods forrobyn_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
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
anddate_max
parameters onrobyn_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
Relevant changes on v3.6.2:
- Viz: removed redundant information on plots and standardized styles and contents on all visualizations.
- Feat: new
date_min
anddate_max
parameters onrobyn_allocator()
to pick specific date range to consider mean spend values (user request). - Feat: new
plot
methods forrobyn_allocator()
androbyn_save()
outputs, andprint
method forrobyn_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
- Fix jde 20211209 by @jeffedwards in #234
- Added a couple file to run the code with actual data by @jeffedwards in #235
- Jde 20211209 general and troubleshoot by @jeffedwards in #236
- quick updates by @jeffedwards in #237
- quick updates by @jeffedwards in #238
- Updated for fix object to work. Updating check conditions to work by @jeffedwards in #254
- build(deps): bump follow-redirects from 1.14.7 to 1.14.8 in /website by @dependabot in #302
- Fix by @jeffedwards in #303
- Revert "Fix" by @jeffedwards in #304
- Updated with master branch. Created new Robyn file by @jeffedwards in #305
- PR v3.6.0 by @gufengzhou in #314
- build(deps): bump url-parse from 1.5.3 to 1.5.7 in /website by @dependabot in #311
- build(deps): bump prismjs from 1.25.0 to 1.27.0 in /website by @dependabot in #326
- build(deps): bump url-parse from 1.5.7 to 1.5.10 in /website by @dependabot in #327
- Weibull testfix by @kyletgoldberg in #355
- Fix log message "Using custom prophet parameters" by @andrey-legayev in #356
- build(deps): bump minimist from 1.2.5 to 1.2.6 in /website by @dependabot in #357
- Allocation and plots improvements. Version 3.6.2 by @laresbernardo in #361
New Contributors
- @kyletgoldberg made their first contribution in #355
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
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
topaid_media_spends
. Spend exposure fitting with Michaelis Menten function will only serverobyn_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()
, androbyn_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()
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 intorobyn_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
- 20% - 40% faster in the major modelling loop
- 50% fasterr in plotting loop for linux & windows users