The Randomization Is Already in the Auction
When an advertiser cannot randomize, the escape hatch a well-trained analyst reaches for is Pearl's front door: spend causes impressions, impressions cause conversions, so identify the effect through the chain and let the unobserved demand confounder do its worst. The structure looks tailor-made for media. And the usual objection (that its assumptions are untestable, so we argue plausibility and move on) stopped being true in 2022. Bhattacharya and Nabi showed the front-door model implies Verma constraints that a dataset with a suitable auxiliary variable can be tested against. That is very bad news for this particular hatch. The reason it fails on advertising data is nameable, structural, and the same mechanism three other posts in this series keep running into: the platform chooses which impressions your budget buys, and it chooses them by predicted response. One arrow, audience intent into impressions, breaks the condition the front door needs most. Meanwhile a real, machine-generated randomization has been running inside the same auction the whole time. Budget pacing throttles campaigns by drawing them into a random subset of auctions each period, and Gui, Nair, and Niu showed that the logged participation probabilities identify a local treatment effect: 110% conversion lift where naive observational methods on the same data return 600%. The uncomfortable part is what that implies. The one observational method that works needs a number only the publisher holds, which makes the binding constraint on non-experimental ad measurement a disclosure decision rather than an econometric one.
The Hatch Everyone Reaches For
Start with why the front door is tempting, because the appeal is not naive. The dominant confounder in media measurement is unobserved demand: planners raise budgets ahead of demand they can forecast, so spend and sales share a cause nobody measures. Back-door adjustment cannot touch it. Dropping a demand proxy into the control set does not partially fix it either, which is the argument of a companion post. The front-door criterion is one of the few graphical results that survives exactly this situation. Pearl's original statement (1995, and §3.3.2 of Causality) identifies \( P(y \mid do(t)) \) through a mediator set, nonparametrically, even when treatment and outcome are confounded by something unmeasured. If it applied, it would be the single most valuable identification result in the field.
And the media chain seems to instantiate it perfectly. You set a budget, that budget buys impressions, and the impressions cause conversions. The mediator is measured to the individual event, at higher resolution than almost anything else in the data. Write it down and the three conditions look like bookkeeping rather than assumptions:
Definition: the front-door criterion
A mediator set \( M \) identifies the effect of \( T \) on \( Y \) when three things hold. (a) \( M \) intercepts every directed path from \( T \) to \( Y \), so there is no unmediated direct effect. (b) There is no unblocked back-door path from \( T \) to \( M \): treatment and mediator are unconfounded. (c) Every back-door path from \( M \) to \( Y \) is blocked by conditioning on \( T \). The mediator and the outcome share no cause that survives holding treatment fixed.
Under (a)–(c) the effect factorizes into two estimable pieces: how much \( T \) moves \( M \), and how much \( M \) moves \( Y \) at fixed \( T \). Unmeasured \( T \)–\( Y \) confounding is irrelevant, which is the whole point.
Condition (a) is a real constraint (a spend increase that shifts shelf placement or a sales team's attention reaches the outcome without an impression), but for a pure digital campaign it is close to defensible. The failure mode in condition (b) is one people do notice: anything driving both budget and auction supply, like a holiday calendar. Condition (c) is the one that gets waved through, because it reads as innocuous. Impressions and conversions sharing a cause, after holding spend fixed? Surely at a fixed budget, an impression is an impression.
Notice what the literature has and has not relaxed here, because the pattern is instructive. Fulcher, Shpitser, Marealle, and Tchetgen Tchetgen (2020) give a generalized front-door criterion that drops the no-direct-effect requirement, identifying a population intervention indirect effect without assuming condition (a). Useful. And it weakens the one assumption that was never the problem. Their identification still needs the mediator to be free of the confounding that afflicts the treatment–outcome pair. Condition (c) is load-bearing in every version of the result.
The Assumptions Stopped Being Untestable
Before dismantling condition (c), be precise about the epistemic situation, because it changed recently and most practice has not caught up. The received wisdom about the front door is that its assumptions are unfalsifiable: they constrain a causal graph, not a joint distribution, so no dataset can contradict them and the best you can do is argue that the story is plausible. That was never quite right, and Bhattacharya and Nabi (2022) made the correction explicit. Their abstract states that the front-door model's assumptions (the existence of a full mediator and its freedom from the confounding that afflicts the treatment–outcome pair) "are often deemed implausible," and that "under mild conditions involving an auxiliary variable, the assumptions encoded in the front-door model (and simple extensions of it) may be tested via generalized equality constraints a.k.a Verma constraints." They propose two goodness-of-fit tests on that basis.
Definition: a Verma constraint
Most graphical models constrain the observed distribution only through conditional independences. Verma and Pearl (1990) found that latent-variable graphs can imply a stronger kind of restriction. A reweighted version of the joint distribution, with one factor divided out, satisfies an independence that the raw distribution does not. Because the constraint is an equality that the data either satisfy or violate, it makes part of a latent structure falsifiable, and the front-door model, with one extra observed variable in the right position, implies exactly such a constraint.
So the front door is no longer in the comfortable category of "assumptions we cannot check." It is in the uncomfortable category of "assumptions we could check, with the right auxiliary variable in the dataset, and mostly have not." That reframes the analyst's obligation. Reaching for the front door because randomization is unavailable is now a choice to skip a test, not a choice forced by the mathematics.
⚠️ What follows is a structural argument, not a published test result
Bhattacharya and Nabi establish testability under conditions. They do not study advertising, and they do not claim the front door fails on ad data. The argument in the next section, that platform targeting breaks condition (c), is mine. It is a claim about which arrows belong in an advertising DAG, supported by a simulation and by the divergent-delivery literature, where Braun and Schwartz (2025) document the delivery algorithm reshaping who sees what within a running experiment. What does not support it is a Verma-constraint test run on real advertiser data, because as far as I know nobody has published one. The distinction matters. The honest version of the claim is "here is a graph in which the front door provably fails, and here is why I think advertising lives in it," rather than "the front door has been falsified for advertising."
The Arrow Nobody Draws
Here is the arrow. A modern ad platform does not sell you a fixed quantity of undifferentiated impressions. It runs an auction per opportunity and decides, per opportunity, whether your campaign should participate and what to bid. Each opportunity is scored against a predicted-response model. That means the composition of the impressions your budget buys is chosen by an algorithm optimizing on predicted conversion. Hold spend perfectly fixed and the platform will still deliver systematically higher-intent impressions in weeks when intent is high, because that is what optimizing delivery is. Audience intent therefore causes impressions. It also, obviously, causes conversions.
Those two facts put an open back-door path between the mediator and the outcome: impressions ← intent → conversions. Conditioning on spend does not close it, because intent is not on the spend path, so condition (c) fails, and it fails by construction, inside the very mechanism that makes performance advertising work. This is the same mechanism that breaks a randomized creative test from the inside. There, divergent delivery confounds a comparison the analyst did randomize, while here it invalidates the identification result you reach for when you cannot. One design fact, two failures, which is why it belongs on the graph rather than in the assumptions.
The framework has a shipped check for this. frontdoor_criterion in dag_model_builder/identification.py implements all three conditions against a declared DAG: condition (a) by enumerating directed treatment→outcome paths and reporting any that bypass the mediator set, condition (b) by looking for an unblocked back-door path from treatment to each mediator, and condition (c) by testing whether every mediator→outcome back-door path is blocked by \( \{T\} \). Feed it the advertising graph above and it returns identifiable=False, naming the culprit: "Back-door path from mediator 'impr' to the outcome is not closed by conditioning on the treatment (impr ← intent → conv)." The figure below runs the same three checks, arrow by arrow.
The criterion falsifying, one arrow at a time
The chain Spend → Impressions → Conversions is always present. Toggle the arrows an ad platform actually adds. Each condition is evaluated by the same logic the shipped frontdoor_criterion uses, and the offending edges turn red. Watch what happens with one targeting arrow versus both.
…
The trap is in the middle. Either targeting arrow alone leaves the front door intact, and each one alone is easy to concede in a meeting. Only both together open the mediator–outcome back door, and both together are the definition of optimized delivery. The seasonality toggle breaks a different condition, (b), which is the failure people do anticipate.
What the Broken Hatch Costs
A failed graphical criterion is a verdict, not a magnitude, and "technically unidentified" and "unusable" are different claims. So plant a world and estimate it with the same three estimators the framework ships, re-implemented in the browser so you can move the dial. Weekly demand \( A_t \) is unobserved. The planner chases it, so spend responds to it. The platform's optimizer converts intent into better impressions at the same spend, which is the targeting arrow with strength \( \lambda \), and demand also lifts conversions directly:
$$ S_t = \kappa A_t + \varepsilon^S_t, \qquad M_t = a\,\pi_t S_t + \lambda A_t + \varepsilon^M_t, \qquad Y_t = b\,M_t + \theta A_t + \varepsilon^Y_t. $$Here \( \pi_t \) is the pacing system's participation probability, drawn independently of demand. That will matter shortly. The causal quantities are \( b \) (conversions per impression) and \( ba\bar\pi \) (conversions per dollar of spend). Three estimators get a turn: a naive regression of conversions on spend, the shipped linear front-door estimator, and a two-stage least squares fit that uses the logged participation probability as an instrument. Each is scored against its own causal target, so the honest reading of every bar is "how many times the truth."
The estimate ladder
4,000 simulated weeks, seeded. Each bar is an estimate divided by the effect it is trying to measure, with a 95% interval, and 1.0 is the truth. Drag the targeting strength λ upward from zero, where the platform does not optimize composition at all. Watch which bar moves.
At λ = 0 the front door does exactly what it advertises: 1.03× the truth while the naive regression sits at 2.6×. Push the dial to the default λ = 0.9 and it reads 1.63×, a 63% overstatement with a confidence interval that excludes the truth by a mile, and by λ = 1.5 it is 2.07×, most of the way back to the naive number it was supposed to rescue. The throttling instrument holds at 0.99× throughout, because participation is randomized with respect to demand no matter how clever the targeting gets.
Two things in that figure matter more than the headline. The first is the shape of the failure. Graceful degradation into "somewhat biased" is not on offer, because the front door walks back toward the naive estimate as the platform gets better at its job, which leaves the method least trustworthy on exactly the performance channels where the money is. The second is the direction. The bias runs upward, and not by luck: the same latent demand that made the naive estimate flattering also makes the mediator look more productive than it is. Every rung of the ladder is contaminated by the same variable in the same direction, so if you were hoping the front door would at least bound the answer from the other side, it does not.
Deep diveWhich factor of the product breaks, and when
The linear front-door estimate is a product of two regression coefficients: \( \hat a \), the coefficient on spend in \( M \sim S \), and \( \hat b \), the coefficient on impressions in \( Y \sim M + S \). Under the DGP above, with independent errors and the pacing factor held at its mean for legibility,
$$ \hat a \;\approx\; a\bar\pi + \lambda\,\frac{\mathrm{Cov}(A, S)}{\mathrm{Var}(S)} \;=\; a\bar\pi + \lambda\,\frac{\kappa\sigma_A^2}{\kappa^2\sigma_A^2 + \sigma_S^2}. $$(The multiplicative \( \pi_t S_t \) term contributes a further small finite-sample wedge that is not the point here.) The first stage is biased only when the targeting arrow \( \lambda \) and the demand-chasing arrow \( \kappa \) are both nonzero, a product of two mechanisms, each individually deniable. The second stage is worse behaved. Regressing \( Y \) on \( (M, S) \) while omitting \( A \) gives \( \hat b \to b + \theta\,\delta_M \), where \( \delta_M \) is the coefficient on \( M \) in the auxiliary projection \( A \sim M + S \). When \( \lambda = 0 \), demand affects impressions only through spend, so \( A \perp M \mid S \), hence \( \delta_M = 0 \) and \( \hat b \) is consistent. When \( \lambda \gt 0 \) it is not.
So both factors are consistent if and only if \( \lambda = 0 \), holding \( \kappa \) and \( \theta \) fixed. The single arrow that decides whether the front door works is the one from audience intent into impressions, which is to say whether the platform optimizes delivery. There is no dial for \( \kappa \) in the figure, but running the same code with the demand-chasing arrow deleted (\( \kappa = 0 \), \( \lambda = 0.9 \)) gives a naive spend regression at 1.14× the truth and a front-door estimate at 1.34×. When there is no treatment–outcome confounding to escape, the escape hatch is the worse of the two.
The Randomization Nobody Designed
Now the good news, from an unexpected direction. Every campaign with a budget cap and a duration needs its spending spread across the period rather than exhausted in the first hour, and the standard engineering solution is probabilistic throttling rather than a queue or a bid rate limit. Agarwal, Ghosh, Wei, and You describe the mechanism in LinkedIn's production pacing system: forecast eligible traffic, compute how much budget should be spent per interval, and hit that target by admitting the campaign to a random subset of eligible auctions. Gui, Nair, and Niu (2022) formalize what that means for measurement, and their framing is the whole argument in one sentence: the variation "pertains to auction throttling, a probabilistic method of budget pacing that is widely used to spread an ad-campaign's budget over its deployed duration," implemented "by computing a participation probability based on the campaign's budget spending rate and then including the campaign in a random subset of available ad-auctions each period according to this probability."
Definition: participation probability
The number \( \pi_t \) the pacing system computes for a campaign in period \( t \): the probability that the campaign is entered into any given eligible auction during that period. It is a function of the campaign's own budget-spending rate (how far ahead or behind pace it is), not of the individual user's characteristics. Given \( \pi_t \), the coin flip that decides whether the campaign competes for this opportunity is independent of that opportunity's conversion propensity. That independence is the identifying variation.
Nobody has to argue this natural experiment into existence. It is a randomization performed by software, for an unrelated operational reason, with a known probability that the system already has to compute in order to function. Gui, Nair, and Niu show that "access to logged-participation probabilities enables identifying the local average treatment effect (LATE) in the ad-campaign," give an estimator and a bootstrap, and apply it to campaigns from an e-commerce advertising platform. Their result is the number this post's title is really about: "Our estimated conversion lift is 110%, a more plausible number than 600%, the conversion lifts estimated using naive observational methods." Those two numbers are the distance between a randomization you can find and a correlation you can compute. The 600% end of that gap has its own literature and its own post in this series. What is new here is that the fix did not require running an experiment.
The nearest relative is ghost ads (Johnson, Lewis, and Nubbemeyer, 2017), which also extracts a counterfactual from inside the delivery system by logging which control users would have been served. The burden sits differently. Ghost ads need the publisher to build measurement infrastructure and the advertiser to run a study. Throttling needs neither. The mechanism exists because campaigns need pacing, the probability exists because the pacer needs it, and the only missing step is persistence.
Deep diveWhy throttling gives a LATE and not an ATE
Let \( Z \) be the pacing draw, \( Z \sim \mathrm{Bernoulli}(\pi_t) \), and \( D \) the indicator that the user actually saw the ad. Two features make this a textbook instrument. First, exogeneity: \( \pi_t \) is computed from the campaign's spend rate, so conditional on \( \pi_t \) the draw is independent of the opportunity's potential outcomes. Second, and unusually clean, one-sided noncompliance: \( Z = 0 \) mechanically forces \( D = 0 \), because a campaign not in the auction cannot win it. There are no defiers to assume away. Monotonicity holds by construction rather than by argument, which is rare.
The Wald ratio \( \big(E[Y \mid Z{=}1] - E[Y \mid Z{=}0]\big) \big/ \big(E[D \mid Z{=}1] - E[D \mid Z{=}0]\big) \) then recovers the average effect among compliers (Imbens and Angrist, 1994). Under one-sided noncompliance the complier set is the set of opportunities the campaign would have won had it participated. So the estimand is an average over the impressions the campaign actually delivers at its current bid and current pacing, not over all users and not over the additional opportunities a larger budget would reach. That is a useful population, close to what "the effect of my current campaign" ought to mean. It is also not the population that a budget-doubling decision is about.
The Binding Constraint Is a Logging Decision
Follow the estimator's data requirement and it leads somewhere awkward. The method needs \( \pi_t \): the participation probability, per campaign, per pacing interval. That number lives inside the pacing service. It is not derivable from anything an advertiser receives, and it cannot be reverse-engineered from delivery counts, because the observed impression volume is the product of participation, auction outcomes, and eligible supply. Three unknowns, one equation. Note how Gui, Nair, and Niu frame their own contribution: the paper shows how the variation "can be utilized by ad-publishers" to identify campaign effects. The randomization is real; the key is held on the other side of the API.
This sharpens rather than repeats a conclusion this series already reached. The attribution post ends on Gordon, Moakler, and Zettelmeyer's verdict from 663 Facebook experiments (neither double machine learning nor propensity matching reliably recovered experimental ground truth), and draws the moral that the missing ingredient is randomization, not sophistication. That is right, and it is usually read as a counsel of despair: go run experiments. The throttling result relocates the missing ingredient. The randomization is not missing. It ran, and it is running right now in every paced campaign. The only thing standing between it and a defensible observational estimate is whether one already-computed float per campaign-period is written to a table the advertiser can read.
That reframes "more platform disclosure" from an unbounded ask into a specific and auditable one, which is a better position to negotiate from. The framework's own ad-platform connector contract mirrors the gap: it states explicitly that the model "only needs periodic spend (and optionally impressions/clicks/conversions) by channel and date, not real-time, not row-level," and the connector interface every platform implements returns exactly that shape. A sane engineering default, and also precisely a feed from which no throttling LATE can ever be computed. The pipeline everyone built is the pipeline for the estimator that does not work.
💡 The version of the ask that is actually answerable
Asking for user-level delivery logs raises privacy objections that will win. The narrower request is the campaign-period participation probability the pacer already computed, aggregated to campaign × period, alongside the delivery counts you already send. One column. It carries no user information, and it is a design parameter rather than a behavioral measurement. Ask for it in the same conversation as the impression and conversion feeds, and be specific that the purpose is instrument construction, not audit. A publisher who declines is telling you something worth knowing about how far the observational numbers in their dashboard can be pushed.
A LATE Is Not a Budget
The method that works comes with a caveat sharp enough that treating the throttling estimate as a drop-in replacement for a media mix model would be a new error rather than a fixed one. The estimand is local twice over. It is local in population, as the deep dive above sets out: an average over the opportunities the campaign would win at its current bid and pacing, not over the marginal opportunities a bigger budget would reach. And it is local in dose: a marginal-impression effect at the current operating point, on a response function that everyone in this field agrees is concave.
There is a third gap that gets less attention and matters more for planning. The throttling design randomizes participation, which identifies the effect of an impression. A budget decision needs the effect of a dollar, which is the impression effect multiplied by impressions-per-dollar. That second factor is not randomized by pacing. In the simulation above, the impressions-per-dollar rung estimated by regression runs about 40% high at the default targeting strength, for exactly the reason condition (c) fails. The throttling instrument cleans one rung of the ladder and leaves the other one dirty. A per-dollar ROI built by multiplying a clean impression effect by a confounded delivery elasticity inherits the contamination, quietly, in the step nobody writes down.
Tangent versus secant: the dose locality
A saturating response curve. The tangent at the current operating point is the local marginal effect a throttling estimate speaks to. The secant is the average return over the budget increase a plan actually proposes. Move the saturation point and the budget multiple and watch the two diverge.
At the defaults the tangent is 0.250 conversions per index-dollar and the doubling delivers 0.167 on average. The local number overstates the decision-relevant one by 50%. Drawing the throttling estimate as a tangent is a stylization: it is a local average over marginally-throttled auctions, not literally a derivative. The geometry of the mismatch is the same either way.
Which is why the right home for a throttling estimate is the same as the right home for a geo lift: an anchor, not a replacement. The experiment is the prior. A well-identified local effect enters a model that carries the response curvature, the carryover, and the extrapolation to budget levels nobody has tested, and the model pays for that structure with assumptions that the anchor then disciplines. A throttling LATE is unusually good raw material for that role: it is cheap, it is repeatable every period, and it does not cost you the holdout revenue an experiment costs. It is also, on its own, silent about every question a planner actually asks. The pattern is familiar from the mediation post: randomization buys you one specific quantity cleanly, and the quantities on the slide are usually not that one.
What Is Actually Shipped
Two pieces of this argument are code rather than prose. dag_model_builder/identification.py ships frontdoor_criterion, iv_criterion, find_backdoor_paths, propose_adjustment_set, and identification_report, and the agent surfaces the front-door verdict automatically whenever a DAG contains mediators. estimators/causal.py ships frontdoor_estimate and two_stage_least_squares, the two functions the ladder figure's in-browser arithmetic mirrors: same estimator, same delta-method standard error.
# illustrative
from mmm_framework.dag_model_builder.identification import frontdoor_criterion
from mmm_framework.estimators import frontdoor_estimate, two_stage_least_squares
rep = frontdoor_criterion(dag, "spend", ["impressions"], "conversions")
rep.identifiable # False, once targeting is drawn
rep.mediator_outcome_blocked_by_treatment # False -- condition (c) is the one that failed
rep.notes[0] # names the offending path
# the confounding-robust cross-check, if a logged instrument exists
iv = two_stage_least_squares(y, exposure, participation_prob)
iv.effect, iv.ci_low, iv.ci_high, iv.first_stage_f
The pairing is deliberate. The project's roadmap note for full Tian–Pearl identification states the rule as "pair with an estimator or don't surface it," which means exposing an identification verdict only once something can actually compute the identified estimand, since "otherwise it misleads." The front-door and IV criteria honor it. A "valid instrument" verdict now arrives with 2SLS and a first-stage F, and an identifiable front door with an estimate the fitted model can be checked against. Compare the two, because a large gap signals treatment–outcome confounding the back-door model cannot remove.
⚠️ The criterion is graphical, and the estimator does not know that
frontdoor_criterion reasons about the DAG you hand it, so it cannot tell you whether the targeting arrow is real. It tells you what follows if you draw it. Omit that arrow and the function returns identifiable=True with total confidence, because you asserted the world it needs. Worse, frontdoor_estimate will compute a number regardless of the verdict: it is OLS twice and a delta-method standard error, and nothing in it inspects the graph. A tight interval around a badly biased product is exactly what the ladder figure shows at λ = 0.9. The graphical check earns its keep as a forcing function for drawing the arrow, not as a validity test.
What This Does Not Establish
The simulation is a linear-Gaussian caricature with one latent factor and hand-set coefficients. Its bias multiples at the default targeting strength (2.96×, 1.63×, 0.99×) are properties of that world, chosen to be legible, not estimates of what the front door does to anybody's real campaign. What the simulation does establish is the sign and mechanism of the failure, and that the failure is driven by one identifiable arrow.
Nothing here falsifies the front-door criterion in general, or even for all media. It is a property of a graph, and there are media graphs that plausibly satisfy it: delivery bought on a fixed schedule against a fixed audience, with no per-opportunity optimization, has a much better claim to condition (c) than a performance campaign does. The argument is specifically about optimized auction delivery, and it gets weaker as delivery gets dumber.
The 110% figure is Gui, Nair, and Niu's estimate on one e-commerce platform's campaigns, not a general advertising lift, and it is comparable to the 600% only as they compare it, as two methods run on the same data. The Verma-constraint testability result has not, to my knowledge, been applied to advertiser-side ad data. The claim that such a test would fail is a prediction. And the disclosure point is an implication, not a policy recommendation: a publisher may have legitimate reasons to keep its pacing parameters illegible, including that a logged participation probability partially describes an auction mechanism. Noting that the constraint is a logging decision is not an argument about which way that decision should go.
Finally, and least comfortably: this post inherits the assumption that a graph like the first figure's is the right description. If audience intent is not one confounder but a bundle that also drives spend through the platform's own bid recommendations, the DAG needs more arrows and the front door fails harder, not softer. That is the direction of error to expect.
Takeaways
- The front door through impressions is the natural escape from unobserved demand confounding, and Bhattacharya–Nabi (2022) removed its usual excuse: with a suitable auxiliary variable, the model's assumptions imply testable Verma constraints. Choosing the front door is now a choice to skip a test.
- It fails on optimized ad delivery because of one arrow: the platform picks impression composition by predicted response, so audience intent causes both impressions and conversions and condition (c), the mediator–outcome back door closed by treatment, is open. The shipped
frontdoor_criterionreturnsidentifiable=Falseand names the path. - Either targeting arrow alone leaves the criterion intact. Only both together break it. That is why the assumption survives meetings: each half is individually easy to concede.
- The failure is upward and does not degrade gracefully. In the simulation the front-door estimate goes from 1.03× the truth at zero targeting to 2.07× at strong targeting, most of the way back to the naive estimate it was meant to replace. It is least reliable on the channels where delivery optimization is most aggressive.
- Budget pacing is a real randomization: probabilistic throttling admits a campaign to a random subset of auctions with a logged participation probability, and that probability identifies a LATE. Gui–Nair–Niu report 110% conversion lift where naive observational methods on the same data return 600%.
- The method's data requirement is one already-computed number per campaign-period that only the publisher holds. The binding constraint on observational ad measurement is therefore a logging decision, which makes "more disclosure" a specific and negotiable ask rather than an unbounded one.
- A throttling estimate is local in population, local in dose, and denominated in impressions rather than dollars. It calibrates a model; it does not replace one. Multiplying a clean impression effect by a confounded impressions-per-dollar elasticity re-imports the bias in the step nobody writes down.
References
- Gui, G., Nair, H. S., & Niu, F. (2022). Auction Throttling and Causal Inference of Online Advertising Effects. arXiv:2112.15155 (v1 December 2021; revised February 2022).
- Bhattacharya, R., & Nabi, R. (2022). On Testability of the Front-Door Model via Verma Constraints. Proceedings of the Thirty-Eighth Conference on Uncertainty in Artificial Intelligence, PMLR 180, 202–212.
- Pearl, J. (1995). Causal Diagrams for Empirical Research. Biometrika, 82(4), 669–688.
- Pearl, J. (2009). Causality: Models, Reasoning, and Inference (2nd ed., §3.3 on the back-door and front-door criteria). Cambridge University Press.
- Verma, T., & Pearl, J. (1990). Equivalence and Synthesis of Causal Models. Proceedings of the Sixth Conference on Uncertainty in Artificial Intelligence (UAI), 220–227.
- Fulcher, I. R., Shpitser, I., Marealle, S., & Tchetgen Tchetgen, E. J. (2020). Robust Inference on Population Indirect Causal Effects: The Generalized Front Door Criterion. Journal of the Royal Statistical Society Series B (Statistical Methodology), 82(1), 199–214.
- Imbens, G. W., & Angrist, J. D. (1994). Identification and Estimation of Local Average Treatment Effects. Econometrica, 62(2), 467–475.
- Agarwal, D., Ghosh, S., Wei, K., & You, S. (2014). Budget Pacing for Targeted Online Advertisements at LinkedIn. Proceedings of the 20th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD '14), 1613–1619.
- Gordon, B. R., Moakler, R., & Zettelmeyer, F. (2023). Close Enough? A Large-Scale Exploration of Non-Experimental Approaches to Advertising Measurement. Marketing Science, 42(4), 768–793.
- Braun, M., & Schwartz, E. M. (2025). Where A/B Testing Goes Wrong: How Divergent Delivery Affects What Online Experiments Cannot (and Can) Tell You About How Customers Respond to Advertising. Journal of Marketing, 89(2), 71–95.
- Johnson, G. A., Lewis, R. A., & Nubbemeyer, E. I. (2017). Ghost Ads: Improving the Economics of Measuring Online Ad Effectiveness. Journal of Marketing Research, 54(6), 867–884.