Advertising Adstock with Maximum Period Decay

Current advertising adstock transformations in all their forms assume an infinite decay function. This means 1 week of advertising can have an impact 100 weeks for initial airing. This is unrealistic.  In this article I’ll discuss a variation on advertising adstock called maximum period decay effect.

A typical decay factor for advertising adstock looks like the figure on the right. Typical Advertising AdstockThe graph will lead you to believe that after week 10 the adstock values are small, close to zero and can be treated as zeros. WRONG! These values are, indeed, close to zero but they aren’t zero. A human can ignore them but a computer won’t. In a regression analysis framework this will also causes a multicollinearity problems with multiple sequential variables as the adstock will continue after advertising is over and will function as two identical decreasing trend variables.

In my previous article on Advertising Adstock – Concept & Formula, advertising adstock was defined as
At = Xt + r·At-1 ; where r is the advertising adstock rate.

Mathematically speaking this formula can be rewritten as
At = Xt + r·Xt-1 + r2·Xt-2 + r3·Xt-3 + … + rn·Xt-n ; where n is the maximum number of weeks available, i.e. n = t.

The mathematical short-hand notation is
At = Σ ri·Xt-i ; 0 ≤ i ≤ maximum number of weeks available.

I redefine the maximum number of weeks available to be the maximum periods that week t will learn from the previous n weeks. So if we define n as 5, then the current advertising adstock will learn from the previous 5 weeks. This has many benefits as we limit the total effect of advertising. Coupons for example, aren’t expected to have unlimited decay. We also remove that ever-decaying trend factor and solve the multicollinearity problem for sequential variables.

The files below show this improvement of advertising adstock transformation with maximum period decay:
• R
• Python


12 thoughts on “Advertising Adstock with Maximum Period Decay

  1. NG

    Hi Gabriel, can you kindly please give some recommendations on text books and/or papers, that give an introduction on ad stock, and how to estimate it? Also any good text recommendations on marketing mix models and how to fit and estimate them would be welcome. Thanks!

  2. Anna

    Hi Gabriel,
    this is an awesome blog. It helped me already a lot. Still, I have two questions in my mind:

    1) Don’t we make a structural mistake if we transform the marketing variables as proposed? Usually, we take a snapshot (one to three years) of sales time series data starting with the first week of a certain year. The transformation proposed assumes that there was no advertising in the weeks before the first week of observation, which is not true in most of the cases. Thus, the Adstock values of the first data points in the time series are underestimating their real Adstock amount. This becomes especially apparent if AdStock rates are chosen relatively high. Is there any way to adjust for this? I guess limiting the maximum decay is one way, however, it’s still not perfect.

    2) In another blog post you proposed to estimate the optimal AdStock rate directly from the data. The question is how to choose the maximum period decay optimally?

    Thank you!

    1. AnalyticsArtist Post author

      The answer to your first question is simple. Start adstocking few months prior to the modeling period. Your second question involves mixed integer programming, which involves non-linear programming as well as integer programming. I found the maximum decay idea super helpful when I try non-overlapping ads but because of adstock they become overlapping. This caused one variable to significant on it’s own but non-significant when we include both with high adstock, i.e. the initial variable got destabilized. An easy, but not-mathematically driven solution, is to “assume” a maximum decay of some weeks. Non-durable goods can have a short maximum decay period and durable/expensive goods need a higher one. Alternatively, you can compute a magnitude of decay periods and try them one-by-one or use stepwise regression or some kind of train/test holdout.

  3. FJ Rad

    Hi Gabriel,

    This is an awesome blog! One question I have if whether is appropriate (or not) to use Adstocked variables using Bayesian or deterministic methods (such as Agent-based Modeling) instead of regression approaches?
    Keep up the good work! Your blog has been bookmarked!


  4. Alex

    Hi Gabriel,

    This is really an great blog!

    I’m building a MMM with adstock variable, and trying to optimize the resources allocation among different channels. I met a problem with the cost of adstock. For example TV adstock: Adstock(t) = lambda*Adstock(t-1) + GRP. I know the cost per GRP, but it’s difficult to calculate the cost per adstock at period t. Can you please kindly give some suggestions on how to calculate the cost of Adstock? Or is there any articles that I can refer to?



  5. Padmaja

    Hi Gabriel,
    This is an amazing blog!
    I had a doubt on defining the r variable based on the type of advertising media (eg: r = 0.6 for TV) likewise for news, content marketing, digital marketing, print media, etc.
    Can you please give a reference for estimating the r value based on the marketing media.

    1. AnalyticsArtist Post author

      No. But this can be answered easily if you graph it. Another angle to take is to find out if the the second derivative is zero in two places, which signifies an s-curve. S-Curve and First Derivative

  6. A

    Thank you!

    So if we assume that each media variable has a different response curve (for example – TV – S-Shaped, Radio – negative exponential etc) how can we combine all these transformations to get one linearized MMM model? Or maybe we should model the baseline first and then each of the incremental part (additional sales caused by radio, TV etc.) separately?

  7. Pingback: Using R to Build a Simple Marketing Mix Model (MMM) and Make Predictions - OSLucidity

Leave a comment

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s