facebookexperimental / Robyn

Robyn is an experimental, AI/ML-powered and open sourced Marketing Mix Modeling (MMM) package from Meta Marketing Science. Our mission is to democratise modeling knowledge, inspire the industry through innovation, reduce human bias in the modeling process & build a strong open source marketing science community.
https://facebookexperimental.github.io/Robyn/
MIT License
1.07k stars 323 forks source link

Carryover effect in Target efficiency allocator seems to be wrong #958

Open gunjansriv86 opened 2 months ago

gunjansriv86 commented 2 months ago

Hi,

We are trying to apply Robyn to our Ads spends data for Conversion scenario at a weekly level data.

While Looking at the plots while using allocator for target efficiency or Max response scenarios, the carryover effect seems to be using = Currentweek spend + Decay*Adstockmedia prev week.

Logically "carryover" effect should be just Decay*"Adstockmedia prev week" for the current week plot and "Initial" effect should be for the current week ads spend.

I was trying to optimise the TV channel ads spends and realised that carryover for current week uses Currentweek spend + Decay*Adstockmedia prev week. This is effecting the plot as initial spend starts from carryeffect point.

So it seems the plot double count the current week spends in both Carryover and Initial variable. Slopes being used to optimize the spends will show results incorrectly.

image

Current week TV spend = 25 M Adstock effect last week = 14.4 M Decay rate = .688

Carryover effect = 25M+14.4*.688 -> 35 M and then initial spends adds another 25 M

Is this correct ? Shouldn't the carryover effect from last week be just 14.4M*.688 = ~10M?

I am using Package Robyn version 3.10.6.9002

gufengzhou commented 2 months ago

Hi, looking at the white dot (ca. 40M on x-axis by eyeballing), it's not just the adstock from last week (not AR1 so to say), but all history. In other words, 40M = last_week_spend 0.688 + 2_weeks_ago 0.688^2 + 3_weeks_ago * 0.688^3 ....

We're aware that the point of carryover impacts the slope for optimisation. Would love to hear your thoughts about if our approach of carryover definition makes sense.