lightweight_mmm
lightweight_mmm copied to clipboard
Why Pre and Post Budget Allocation do not change?
I ran a model with R2 = 0.72 but when I run the budget optmization the value pre and post is the same.
It's difficult to say without more information, but your media spend is very concentrated towards one channel. By default the optimizer won't allocate more than 20% additional budget to a given channel and when your spend ratio is 1:100, adding (or subtracting) 20% to a smaller budget item shouldn't result in a significant change in suggested budget allocation.
It's difficult to say without more information, but your media spend is very concentrated towards one channel. By default the optimizer won't allocate more than 20% additional budget to a given channel and when your spend ratio is 1:100, adding (or subtracting) 20% to a smaller budget item shouldn't result in a significant change in suggested budget allocation.
Even changing the lower and upper bounds the results still the same.
What additional information do you need?
ROI, Response Curves, Media Contributions, etc.
It looks like you're setting the price and budgets correctly.
But just a simple example to illustrate my point above. Imagine you had 1M budget and hold it steady an re-allocate the channel mix. In this example:
Channel A has $900,000
Channel B, C, D, E all have $25,000
Even if Channel A had the worst ROI, you could only theoretically reduce it's budget by $20,000. In this example the optimal solution would look like: $880,000 and 4 x $30,000. This particular example, is unrealistic because there are saturation effects (i.e. the response curves).
In your case, the optimizer is stopping after 1 iteration, which basically means that, with your current spend/channel mix/bounds, the initial solution is optimal.
ROI, Response Curves, Media Contributions, etc.
It looks like you're setting the price and budgets correctly.
But just a simple example to illustrate my point above. Imagine you had 1M budget and hold it steady an re-allocate the channel mix. In this example: Channel A has $900,000 Channel B, C, D, E all have $25,000
Even if Channel A had the worst ROI, you could only theoretically reduce it's budget by $20,000. In this example the optimal solution would look like: $880,000 and 4 x $30,000. This particular example, is unrealistic because there are saturation effects (i.e. the response curves).
In your case, the optimizer is stopping after 1 iteration, which basically means that, with your current spend/channel mix/bounds, the initial solution is optimal.
I got you point and I agree. Follow some charts:
mean std median 5.0% 95.0% n_eff r_hat coef_media[0] 0.05 0.03 0.04 0.00 0.09 381.42 1.01 coef_media[1] 0.02 0.01 0.01 0.00 0.03 337.01 1.00 coef_media[2] 0.00 0.00 0.00 0.00 0.01 416.91 1.00 coef_media[3] 0.08 0.07 0.06 0.00 0.17 213.86 1.00 coef_media[4] 1.24 0.28 1.16 0.91 1.73 100.27 1.04 coef_media[5] 0.03 0.03 0.02 0.00 0.07 398.60 1.00 coef_media[6] 0.00 0.00 0.00 0.00 0.01 369.18 1.00 coef_trend[0] -0.01 0.01 -0.00 -0.03 0.01 180.88 1.00 expo_trend 0.65 0.13 0.61 0.50 0.84 230.84 1.00 gamma_seasonality[0,0] 0.08 0.02 0.08 0.04 0.11 214.78 1.01 gamma_seasonality[0,1] -0.09 0.02 -0.09 -0.12 -0.05 241.87 1.02 gamma_seasonality[1,0] 0.09 0.02 0.09 0.05 0.13 180.60 1.03 gamma_seasonality[1,1] 0.02 0.02 0.02 -0.01 0.05 375.56 1.00 gamma_seasonality[2,0] 0.04 0.02 0.04 0.02 0.07 361.22 1.00 gamma_seasonality[2,1] 0.01 0.02 0.01 -0.02 0.04 232.21 1.00 half_max_effective_concentration[0] 1.15 0.94 0.93 0.00 2.25 413.48 1.00 half_max_effective_concentration[1] 0.98 0.96 0.73 0.00 2.17 400.58 1.00 half_max_effective_concentration[2] 0.99 0.92 0.71 0.00 2.13 422.45 1.00 half_max_effective_concentration[3] 1.04 1.06 0.72 0.00 2.33 416.48 1.00 half_max_effective_concentration[4] 0.58 0.27 0.49 0.25 0.96 112.31 1.04 half_max_effective_concentration[5] 1.05 1.02 0.76 0.00 2.34 624.73 1.00 half_max_effective_concentration[6] 1.04 1.00 0.72 0.01 2.43 423.70 1.00 intercept[0] 0.10 0.07 0.09 0.00 0.21 281.51 1.01 lag_weight[0] 0.64 0.21 0.66 0.32 0.99 227.31 1.01 lag_weight[1] 0.71 0.22 0.75 0.39 1.00 141.37 1.01 lag_weight[2] 0.70 0.21 0.73 0.40 1.00 268.88 1.01 lag_weight[3] 0.77 0.21 0.84 0.47 1.00 257.15 1.00 lag_weight[4] 0.17 0.10 0.16 0.02 0.30 294.70 1.01 lag_weight[5] 0.71 0.22 0.75 0.39 1.00 352.26 1.01 lag_weight[6] 0.69 0.21 0.73 0.38 1.00 485.40 1.00 sigma[0] 0.09 0.01 0.09 0.08 0.10 299.70 1.00 slope[0] 1.25 0.99 0.98 0.03 2.62 371.33 1.00 slope[1] 0.87 0.91 0.58 0.00 2.10 298.21 1.00 slope[2] 0.92 0.99 0.62 0.00 2.15 483.06 1.01 slope[3] 0.79 0.96 0.44 0.00 1.93 186.79 1.01 slope[4] 2.08 1.02 1.88 0.78 3.50 149.14 1.02 slope[5] 0.89 0.89 0.62 0.00 2.12 561.82 1.00 slope[6] 0.95 0.91 0.69 0.00 2.09 549.00 1.00
Number of divergences: 1641
So, what I think is, we need to realocate some budget because Google Search is getting in his limit. But the budget allocation don't suggest any reallocation.
What can I do?
@Gabrielj96 I ran into the same issue and I set bounds for each tactic individually, and I set the upper and lower bounds for the tactic that had the majority of the spend to 0.01 and 0.01, and reran the optimization and it iterated 13 times instead of 1 and optimized the lower channels.
@Gabrielj96 I ran into the same issue and I set bounds for each tactic individually, and I set the upper and lower bounds for the tactic that had the majority of the spend to 0.01 and 0.01, and reran the optimization and it iterated 13 times instead of 1 and optimized the lower channels.
Thank you for the answer, I guess this tip can solve my problem.
What percentage did you set for the other tactics?
Can you show me an example of code, please?