Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Exposure fitting, curve calibration & reach and frequency allocator (#…
…1132) * feat: enable exposure fitting - Exposures (Imp/GRP etc) will be prioritised over spend for parent model fitting - Deprecate function fit_spend_exposure, incl. Michaelis Menten. Nonlinear fitting between spend and exposure wasn't improving fitting significantly. Instead, future curve calibration feature will aim to improve curve identification. - Use cpe (cost per exposure) as ratio for spend to exposure translation. use cpe_window to scale the whole dataset in order to obtain the right spend scale for modeling period. - remove minpack.lm / nlsLM dependency - update exposure plot * feat: create robyn_calibrate function - Simulate cumulative R&F dataset with frequency bucket - add beta coef besides alpha and gamma to nevergrad hyperparameter to improve curve fit - plot with freq_bucket as well as onepager per trial - add df_curve_reach_freq as dummy dataset - create robyn_calibrate that consumes curve input and outputs hyperparameter ranges as input. - Rename previous internal robyn_calibrate function as lift_calibration - early stop convergence with while loop - update documentation * prototype: reach and frequency allocator This is the proof of concept of a R&F allocator that includes - Simulated R&F data - The R&F hill params are estimated using a multiplicative equation with Nevergrad - visualisation of surface - R&F allocator with nlopt - constrain validation * update: checks, input, transformation & website - simplify various check functions - adapt model.R, incl. reset run_transformations params to have clearer overview of params needed. simplify transformation.R by removing unnecessary checks - In model.R & pareto.R: remove decompSpendDist from both scripts to reduce memory leak. Use xDecompAgg subsets instead - In transformation.R & response.R: unify transformation namings in run_transformation and robyn_response - In response.R: remove exposure extrapolation because it's already done in robyn_input. Also add inflexion point to output. - In plots.R: fix onepager saturation plot issues - In pareto.R: rewrite run_dt_resp() as response_wrapper and align transformation logic & naming. - In pareto: Replace foreach response loop with lapply for simplicity. - In pareto.R: Simplify plot data generation process, esp for saturation curve plot, actual vs predicted plot & immediate vs carryover plot. - In pareto.R: Remove redundancy in xDecompVecCollect -> remove type rawMedia, rawSpend, predictedExposure, saturatedMedia & saturatedSpendReversed. Only keep adstockedMedia & decompMedia for response curve plotting. - add set_default_hyppar for easier testing - website update for all above changes
- Loading branch information