Jin 2017 MMM - Simulation Design, Signal Strength and Priors

Summary

Section 5.1 sets up the synthetic dataset that every simulation in the paper reuses (Sections 5, 6 and 7). It has two years of weekly data, three media and one price control. Sales come from the full model (Eq. 7) with delayed adstock + Hill. Table 1 gives the true parameters. Table 2 gives each component’s share of sales variance (Eq. 17): Media 1 18.1%, Media 2 19.4%, Media 3 5.8%, price 22.5%, noise 12.9%. Table 3 gives the priors. The authors say this signal is as strong as or stronger than most real MMM data, so the later bias results are, if anything, optimistic. One fit took 52 s with the custom Gibbs sampler (10,000 iterations) and 1149 s with STAN (1000 iterations).

Overview

Every simulation-based claim in the paper depends on this data-generating process (DGP), so its details matter. They include how spend is generated, how correlated the channels are, how strong each signal is, and how the priors sit relative to the truth. A model that recovers truth under this DGP has passed a fairly easy test. The vault’s Designing Simulated-Data Experiments and the ADEMP checklist (Morris et al 2019 - ADEMP Planning of Aims, DGMs, Estimands and Methods) explain why the DGP has to be reported this fully.

Main Content

Data-generating mechanism (Sec. 5.1, p. 11)

  • Length: 2 years of weekly observations.
  • Media (): each spend series is a sinusoidal seasonality with a one-year period plus white noise, then scaled to . Because of this construction, all media share the same marginal distribution of weekly spend. Figure 4d shows Media 1’s histogram spread across 0 to 1.
  • Control (): price, generated as an ARIMA time series.
  • Response: sales from Eq. (7) with delayed adstock (Eq. 3) followed by Hill (Eq. 5). The response is not transformed.
  • Correlation: the text says the media are “very weakly correlated with a correlation of 0.09”. The correlation heat-map of one typical dataset (Fig. 4e) shows pairwise values: media1-media2 0.11, media1-media3 0.17, media2-media3 0.16, price-media1 -0.10, price-media2 0.18, price-media3 0.01.

Table 1 — generating parameters (p. 11)

(a) Media-specific

ParameterMedia 1Media 2Media 3
(retention)0.60.80.8
(peak delay, weeks)534
(half-saturation)0.20.20.2
(slope)122
(max effect)0.80.60.3

(b) Other

ParameterValue
(max carryover, weeks)13
(baseline)4
(price effect)-0.5
normal

Note that lies inside the observed spend range . Section 7.2 later breaks this assumption on purpose with .

Signal-strength metric (Eq. 17, p. 11)

For medium , the share of sales variance it explains is

with the same ratio used for price () and noise ().

Table 2 — variance of sales explained (p. 13)

Media 1Media 2Media 3PriceNoise
18.1%19.4%5.8%22.5%12.9%

The shares sum to less than 100% (78.7%). The authors explain this as covariance between the slightly positively correlated components: the variance of a sum of positively correlated terms exceeds the sum of their variances. They advise comparing each medium against the noise row. Media 1 and 2 are comparable in strength, while Media 3 is much weaker.

The simulation is easier than real data

The authors say the signal strength here “is similar as or stronger than that of most media mix data sets we have seen” (p. 11). Real data often has high noise from omitted variables and small media effects (Chan & Perry 2017). They chose this setting to “better illustrate the model and how well it can be estimated”. The underestimation in Jin 2017 MMM - Sample Size vs Bias Study (Two vs Sixty Years) is therefore probably a lower bound on what real two-year MMMs suffer.

Table 3 — priors used in estimation (p. 13)

ParameterPriorParameterPrior
betanormal
uniformnormal
betainverse gamma
gamma
half normal

The priors were “chosen to contain the true parameter values, but with significant variance around the true values”. They are weakly informative and correctly located, so the small-sample bias in Section 6 is not caused by a misplaced prior. One thing to note about their shape: beta has mean 0.5, below the true of 0.6-0.8. Beta has mean 0.5, above the true . Half-normal has its mode at 0, below every true . In the STAN code (Appendix) the prior is written as normal(0,1) on a parameter declared <lower=0>, which is equivalent to half-normal.

Examples

Sampler timing on one simulated dataset (p. 11)

  • Custom C++ Gibbs (slice) sampler, 10,000 iterations: 52 seconds.
  • STAN (HMC/NUTS), 1000 iterations: 1149 seconds.

Per iteration the Gibbs sampler is roughly 220 times faster (my arithmetic: 1149/1000 s vs 52/10000 s). HMC iterations are usually more informative, so effective-sample-size-per-second would be the fairer comparison (see Effective Sample Size and Monte Carlo Standard Error). The paper does not report it. See Jin 2017 MMM - STAN Sampler Code and MCMC Implementation.

Figure 18 — posteriors on one simulated dataset (Appendix, pp. 31-32)

Figure 18 shows posterior densities of (a) , (b) , (c) , (d) , (e) and (f) the Hill curves, each for Media 1-3, on one two-year simulated dataset. The caption does not define the lines. In panels (a)-(e) a solid vertical line (red in most panels, thin black in a few) sits at the Table 1 value in every panel, so it marks the truth; a dashed black line marks a posterior summary (median or mean, not stated). In (f) the red curve equals the true (e.g. Media 1 at : ), the blue curve is a posterior central curve and the grey shading is posterior density. Tick marks along the bottom of (f) show observed spend.

Sampler. The paper does not say which sampler produced Fig. 18. It is cited (p. 11) directly after the timing sentence that covers both samplers, and the Appendix STAN program is described as estimating the model “on the simulated data set in Section 5”. Either could be the source.

Readings against Table 1 (approximate, read off the plots):

PanelMediumTruthPosterior range (x-axis)Mode / dashed lineVerdict
(a) 10.8about 0.1-3.0, peak density about 1.3mode about 0.6, dashed about 0.75centred near truth, long right tail to about 3
(a) 20.6about 0.2-2.8, peak about 2.0mode about 0.5, dashed about 0.6on truth, tail to about 2.8
(a) 30.3about 0-2.2, peak about 3.6mode about 0.1, dashed about 0.15pulled toward 0, half the true value
(b) 10.6about 0.3-0.87, peak about 5.3mode about 0.7, dashed about 0.66slightly high
(b) 20.8about 0.53-0.91, peak about 7.9mode and dashed about 0.72slightly low, truth in upper shoulder
(b) 30.8about 0.05-1.0 (nearly all of ), peak about 2.0dashed about 0.53barely informed; truth in upper tail
(c) 15about 4.5-5.65, peak about 3.0about 5.07tight, on truth
(c) 23about 2.6-4.0, peak about 2.1about 3.3tight, biased up by about 0.3 week
(c) 34spike at 4 (peak about 0.62) plus a small bump near 2 and a thin tail to 12about 4mode on truth, but heavy tail over the prior range
(d) 10.2about 0-1.0, peak about 2.5mode about 0.3, dashed about 0.4biased up, spread over most of
(d) 20.2about 0.05-0.35 (thin tail to 0.95), peak about 6.2about 0.22tight, on truth
(d) 30.2about 0-1.0, flat and multimodal, peak about 1.5dashed about 0.48biased up, nearly prior-shaped (beta(2,2))
(e) 11about 0.2-5, peak about 0.78mode about 1, dashed about 1.15on truth, right tail
(e) 22about 0.3-6, peak about 0.58mode about 1.7, dashed about 2.0on truth, wide
(e) 32about 0-12, peak about 0.33mode about 1.5, dashed about 2.0very wide, tail to 12

Panel (f), Hill curves (x = spend 0-1; y-axes run to about 1.0, 1.2-1.3 and 0.8):

MediumTrue curve at (red)Blue curve at Where the gap opensShading
1about 0.67about 0.53from about ; at about 0.40 vs 0.24reaches the top of the axis (about 1.0)
2about 0.58about 0.56curves almost coincide (S-shape, )reaches about 1.2
3about 0.29about 0.11from about ; truth plateaus by reaches about 0.8

What this shows. On this one dataset Media 2 is recovered well, Media 1’s curve is too low because is biased up, and Media 3’s curve is less than half the truth because is pulled toward 0 and up. The pattern matches the 500-replicate averages in Table 4 (two years: Media 1 -32.5%, Media 2 -18.1%, Media 3 -25.3% at ), although the single-dataset Media 2 gap is smaller than the replicate average. The adstock parameters are tight for Media 1-2 but the Media 3 retention rate spreads over almost all of . Even on one dataset the adstock is not uniformly well recovered. See ^table4.

Figure 4 — the simulated data (p. 12)

Panels: (a) weekly sales, about 5.0-5.4 over about 100 weeks; (b) price, about -0.5 to 0.25; (c) the three media spend series, overlaid and seasonal; (d) histogram of weekly Media 1 spend over ; (e) correlation matrix of media and price (values above).

Connections

See Also