Join the newly launched
Discord community for real-time discussions, peer support, and direct interaction with the Meridian team!
mROI priors and comparison to ROI priors
Stay organized with collections
Save and categorize content based on your preferences.
mROI priors are an alternative to ROI priors for paid media channels. The mROI
of a channel is defined as the expected return on one additional monetary unit
of spend. The additional monetary unit is allocated across geographic regions
and time periods by scaling up the reach, holding the average frequency fixed.
The choice between ROI and mROI priors has important implications, particularly
if your goal is to create prior parity across channels. Both ROI and mROI have a
prior distribution. If the ROI prior is specified, then an mROI prior is
induced. If the mROI prior is specified, then an ROI prior is induced. An
induced prior does not belong to a parametric family, and it is typically not
independent of other model parameters. The exact distribution of an induced
prior depends on a channel's media execution distribution across geographic
regions and time periods. Importantly, even if a common ROI (mROI) prior is used
for all channels, the induced mROI (ROI) prior will still differ by channel.
When the Hill function is concave, for example when its slope
parameter
equals one (the default assumption), channels without R&F data will always have
a higher overall ROI than their marginal ROI. If you use an ROI prior, the
induced marginal ROI prior distribution will be strictly less for a non-R&F
channel. Conversely, if you use a marginal ROI prior , the induced ROI prior
will be strictly greater for a non-R&F channel.
For reach and frequency channels, the marginal ROI by reach equals the ROI. This
is because the marginal ROI prior is applied to the marginal ROI by reach (the
next monetary unit spent increases the reach without changing the average
frequency). Under the Meridian model specification, media effects are
linear in reach. Therefore, the choice between an ROI and a marginal ROI prior
parameterization has no impact on the prior for reach and frequency channels.
However, the choice between ROI and marginal ROI parameterization will still
effect posterior inference for reach and frequency channels because:
- The prior choice for other channels affects the model fit
and posterior results for the reach and frequency channels.
- The default ROI and mROI prior distributions differ.
If you are interested in examining the induced prior for a particular model,
you can obtain this by calling sample_prior
, followed by a call to the
Analyzer
class's roi
or marginal_roi
method with the argument
use_posterior=False
.
Reasons to choose ROI priors:
- A common ROI prior can be used for all channels to create prior ROI parity. As
the prior strength increases (standard deviation decreases), posterior ROI
distributions will shrink toward a common value.
- Channel-specific ROI priors can
be used to incorporate prior knowledge, such as experiment results.
- Although ROI priors don't control optimization budget shifts as well as mROI
priors, optimization spend constraints can be used to limit
the amount of budget shift proposed for any given channel.
Reasons to choose mROI priors:
- A common mROI can be used for all channels to create prior mROI parity. As the
prior strength increases, posterior mROI values will shrink toward a common
value.
- Prior mROI parity generally results in less significant optimization budget
shifts:
- If the same mROI prior is used for all channels, then the prior optimal
budget allocation will equal historical.
- As the prior strength increases, posterior optimal budget allocation will
shrink toward historical.
- Despite the use of strong mROI priors, a channel with reach and frequency
data might still receive a significant positive spend shift in optimization,
if we also use that channel's optimal rather than historical frequency. The
mROI prior is applied to the mROI under historical frequency, which is
always less than the mROI under optimal frequency. By default, budget
optimization is run under optimal frequency, but the optimization method
contains a boolean argument
use_optimal_freq
which can be used to set
whether optimization is run under optimal or historical frequency.
It's important to keep in mind that mROI differs across time windows, so if your
optimization time window does not align with the time window of the mROI prior,
then the mROI priors might not regularize optimization budget shifts as
intended. You can adjust the time window of your optimization using the
selected_time
argument of
BudgetOptimizer.optimize()
.
You can adjust the time window of your mROI prior using the
roi_calibration_period
and rf_roi_calibration_period
arguments of
ModelSpec
. By
default, both time windows will be set to the full modeling time window.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-06-11 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-11 UTC."],[[["\u003cp\u003emROI priors offer an alternative to ROI priors for paid media, focusing on the return from an additional monetary unit spent while maintaining average frequency.\u003c/p\u003e\n"],["\u003cp\u003eChoosing between ROI and mROI priors impacts prior parity across channels, as an ROI prior induces an mROI prior and vice versa, with the induced prior potentially differing by channel.\u003c/p\u003e\n"],["\u003cp\u003eFor channels with reach and frequency data, the choice between ROI and mROI priors doesn't affect the prior for reach but influences posterior inference due to interactions with other channels and differing default prior distributions.\u003c/p\u003e\n"],["\u003cp\u003eROI priors are suitable for establishing prior ROI parity or incorporating prior knowledge, while mROI priors help achieve prior mROI parity and limit optimization budget shifts.\u003c/p\u003e\n"],["\u003cp\u003eWhen using mROI priors, consider alignment between the optimization and prior time windows to ensure intended regularization of budget shifts.\u003c/p\u003e\n"]]],["mROI priors offer an alternative to ROI priors for paid media, defining mROI as the return on an additional monetary unit of spend. Choosing between them impacts prior parity across channels. ROI and mROI priors induce each other, but induced priors vary by channel. mROI priors can help prevent budget shifts while ROI priors offer easier prior parity. For channels using reach and frequency data, the choice of priors does not affect the prior itself. However, optimization time window should be considered.\n"],null,["# mROI priors and comparison to ROI priors\n\nmROI priors are an alternative to ROI priors for paid media channels. The mROI\nof a channel is defined as the expected return on one additional monetary unit\nof spend. The additional monetary unit is allocated across geographic regions\nand time periods by scaling up the reach, holding the average frequency fixed.\n\nThe choice between ROI and mROI priors has important implications, particularly\nif your goal is to create prior parity across channels. Both ROI and mROI have a\nprior distribution. If the ROI prior is specified, then an mROI prior is\ninduced. If the mROI prior is specified, then an ROI prior is induced. An\ninduced prior does not belong to a parametric family, and it is typically not\nindependent of other model parameters. The exact distribution of an induced\nprior depends on a channel's media execution distribution across geographic\nregions and time periods. Importantly, even if a common ROI (mROI) prior is used\nfor all channels, the induced mROI (ROI) prior will still differ by channel.\n\nWhen the Hill function is concave, for example when its [slope\nparameter](/meridian/docs/advanced-modeling/default-prior-distributions#slope_m)\nequals one (the default assumption), channels without R\\&F data will always have\na higher overall ROI than their marginal ROI. If you use an ROI prior, the\ninduced marginal ROI prior distribution will be strictly less for a non-R\\&F\nchannel. Conversely, if you use a marginal ROI prior , the induced ROI prior\nwill be strictly greater for a non-R\\&F channel.\n\nFor reach and frequency channels, the marginal ROI by reach equals the ROI. This\nis because the marginal ROI prior is applied to the marginal ROI by reach (the\nnext monetary unit spent increases the reach without changing the average\nfrequency). Under the Meridian model specification, media effects are\nlinear in reach. Therefore, the choice between an ROI and a marginal ROI prior\nparameterization has no impact on the prior for reach and frequency channels.\nHowever, the choice between ROI and marginal ROI parameterization will still\neffect posterior inference for reach and frequency channels because:\n\n- The prior choice for other channels affects the model fit and posterior results for the reach and frequency channels.\n- The default ROI and mROI prior distributions differ.\n\nIf you are interested in examining the induced prior for a particular model,\nyou can obtain this by calling `sample_prior`, followed by a call to the\n`Analyzer` class's `roi` or `marginal_roi` method with the argument\n`use_posterior=False`.\n\nReasons to choose ROI priors:\n\n- A common ROI prior can be used for all channels to create prior ROI parity. As the prior strength increases (standard deviation decreases), posterior ROI distributions will shrink toward a common value.\n- Channel-specific ROI priors can be used to incorporate prior knowledge, such as experiment results.\n- Although ROI priors don't control optimization budget shifts as well as mROI priors, optimization spend constraints can be used to limit the amount of budget shift proposed for any given channel.\n\nReasons to choose mROI priors:\n\n- A common mROI can be used for all channels to create prior mROI parity. As the prior strength increases, posterior mROI values will shrink toward a common value.\n- Prior mROI parity generally results in less significant optimization budget shifts:\n - If the same mROI prior is used for all channels, then the prior optimal budget allocation will equal historical.\n - As the prior strength increases, posterior optimal budget allocation will shrink toward historical.\n - Despite the use of strong mROI priors, a channel with reach and frequency data might still receive a significant positive spend shift in optimization, if we also use that channel's optimal rather than historical frequency. The mROI prior is applied to the mROI under historical frequency, which is always less than the mROI under optimal frequency. By default, budget optimization is run under optimal frequency, but the optimization method contains a boolean argument `use_optimal_freq` which can be used to set whether optimization is run under optimal or historical frequency.\n\nIt's important to keep in mind that mROI differs across time windows, so if your\noptimization time window does not align with the time window of the mROI prior,\nthen the mROI priors might not regularize optimization budget shifts as\nintended. You can adjust the time window of your optimization using the\n`selected_time` argument of\n[`BudgetOptimizer.optimize()`](/meridian/reference/api/meridian/analysis/optimizer/BudgetOptimizer#optimize).\nYou can adjust the time window of your mROI prior using the\n`roi_calibration_period` and `rf_roi_calibration_period` arguments of\n[`ModelSpec`](/meridian/reference/api/meridian/model/spec/ModelSpec). By\ndefault, both time windows will be set to the full modeling time window."]]