Meridian is the official evolution of the Google MMM approach. It is the
updated version of LightweightMMM. Both versions are based on Google's Bayesian
MMM research since 2017.

The key features of Meridian are reach and frequency modeling, handling
paid search effectively, and experiment calibration.

## How to migrate to Meridian

To migrate from LightweightMMM to Meridian, you install Meridian
and import your data using the same process as any new user to Meridian.
For more information, see [Install
Meridian](https://developers.google.com/meridian/docs/user-guide/installing).

## Feature comparison

The input data for both models is the same.

The following chart gives an overview of the key feature differences between the
projects:

| Feature | LightweightMMM | Meridian |
|---|---|---|
| Language | Python | Python |
| Bayesian library | Numpyro | Tensorflow Probability |
| Experiment calibration | Possible but manual | Yes |
| Reach and frequency modeling | No | Yes |
| Optimizer | Yes | Yes |
| ROI formulation of the model | No | Yes |
| Incorporating GQV confounder | Possible but manual | Yes |
| National- and geo-level models | Yes | Yes, national plus more geos |
| Trend and seasonality | Straight line + sinusoidal repeating shape (daily, weekly) | Knots |
| Custom priors | Yes | Yes |
| Lagging and saturation transformation | Yes | Yes |
| Scaling of inputs | Manual | Automatic |

## Differences in the model specifications

LightweightMMM offers three different model architectures: Adstock,
Hill-Adstock, and Carryover. Meridian uses a variation of the
Hill-Adstock architecture, and does not allow other architectures. You can
choose the order in which the Hill- and Adstock-transformations are applied for
the Meridian baseline model. The Meridian reach and frequency
model has a fixed Hill-Adstock order: Hill first, and then Adstock.

Other differences between Meridian and LightweightMMM include:

- Media channels are hierarchical across geos in both projects. However, in
  LightweightMMM, the geo hierarchy doesn't add additional free parameters.
  Instead, one media coefficient is used to specify both the hyper-prior and
  the individual geo-level media channel priors in LightweightMMM.
  Meridian has an additional parameter `eta_m` that specifies the
  standard deviation of the media coefficient across geos. Meridian
  also allows the hierarchical variation to be either normal or log-normal in
  shape.

- The non-media features, called *control variables* in Meridian, are
  also hierarchical in Meridian, whereas they are non-hierarchical
  across geos in LightweightMMM. The Meridian model parameter `xi_c`
  specifies the standard deviation of this geo hierarchy.

- Meridian lets you specify media priors either in terms of beta (the
  same as LightweightMMM) or in terms of ROI.

- The baseline is expressed differently in Meridian, compared to
  LightweightMMM. With Meridian, users can specify both geo-level and
  time-level fixed effects, and the baseline is the sum of both fixed effects.

## Expected differences in the MCMC sampling time

Due to more model parameters and model complexity in Meridian, MCMC
sampling in Meridian is expected to take longer than in LightweightMMM.
However, because the models are relatively similar, Meridian is not
expected to take much longer than LightweightMMM. Precise estimates on how much
longer depend on the compute environment, number of geos, model tuning
parameters, priors, data, and other factors. Although Meridian's model
complexity likely leads to longer MCMC sampling time, more accurate results are
expected.