Archives
All the articles I've archived.
-
Brand Equity Lives in the Baseline: Why Weekly MMMs Under-Credit Brand Building
A weekly MMM captures activation and short-term carryover well, but long-term brand equity gets absorbed into the baseline — credited to "base demand," not to the channels that built it. Here's the math of the gap and three honest paths forward.
-
The Gap-by-Gap Update: How Augur's Continuous-Learning Loop Stays Current
When an MMM runs in production, new data arrives every week. The math of incorporating each new "gap" of data — without overfitting to it, without forgetting what came before, and without a full refit — is the core of Augur's continuous-learning design.
-
The Sequential-Stopping Worry Is a Frequentist Problem (With a Bayesian Catch)
The Augur continuous-learning loop peeks at results every wave and stops the moment further testing isn't worth it. That sounds like optional stopping — but under the likelihood principle, Bayesian decision-theoretic stopping rules are immune. The catch is model misspecification, not peeking.
-
Adstock and Saturation Are Not Separately Identified
Adstock and saturation are the two transforms at the heart of every MMM response curve — and the data almost never identifies them separately. Here's the ridge in the posterior and what it means for your media strategy.
-
More Data, More Confident, Still Wrong: The Table 2 Problem at Scale
A simulation study showing that as sample size grows, coverage rates for confounded control-variable coefficients collapse toward zero — the Table 2 fallacy gets worse with more data, not better.
-
Collinearity Doesn't Break Your Model — It Tells You What Your Data Can't Separate
A high VIF isn't a technical failure to fix — it's a signal that your data can't distinguish two effects. The right response is better data or informative priors, not variable deletion.
-
Simulation-Based Calibration: The Missing Test in Your Bayesian Workflow
Passing R-hat and ESS tells you the sampler converged — it says nothing about whether the inference is correct. Simulation-Based Calibration is the test that checks the inference itself.
-
Read the Diagnostics First
R-hat, ESS, and divergences are not bureaucratic hurdles before you report a ROAS — they're the sampler telling you whether its output is valid. Here's what each one actually measures and what it reveals when it fails.
-
Stop Reporting ROI to Four Significant Figures
A point estimate written as 2.347 looks like you know the answer to a tenth of a percent. If your interval is ±10%, you don't — you know the first digit and you're guessing at the second. The decimal places are a confidence claim the model never made.
-
The Assumptions Are the Model
A model is a dumb number-crunching machine. Put data in, get numbers out — and unless something breaks loudly, those numbers look exactly as confident when your assumptions hold as when you've shredded them. The meaning was never in the arithmetic. It was in the assumptions.
-
mmm-framework 0.1.0 Is on PyPI
The first public release of mmm-framework — a Bayesian marketing-mix modeling library built on PyMC-Marketing, designed around methodological rigor instead of specification shopping. pip install mmm-framework.
-
Measurement Is a Loop, Not a Report
A marketing-mix model usually ships as a quarterly slide deck — a snapshot that's stale on arrival and impossible to interrogate. The more honest unit of measurement is a living workspace where evidence has a status and a shelf life.
-
Wiring Your MMM to Your Experiments
Most teams run MMMs and geo-lift experiments as separate silos, then argue about which to trust. The better move is to wire them into a loop — the model picks the experiments, the experiments calibrate the model — and watch the uncertainty contract.
-
All Models Are Wrong, So Make Yours Generative
If you can't run your model forward to simulate data, you don't understand it. Generative modeling turns that test into a workflow — and exposes the gap between a model that fits and a model that's right.
-
Coincidence Is Not Contribution
A marketing-mix model answers a causal question — what would sales have been without this media — not "what moved together." Most MMMs quietly answer the easier question and dress it up as the hard one.
-
Your MMM's Control Coefficients Are Not Findings
In a marketing-mix model you add seasonality, price, and competitor spend so your media coefficients come out clean. Then someone reads those control coefficients as insights. That's the Table 2 fallacy, and in an MMM it comes with two extra ways to get burned.
-
What Decades of Marketing-Mix Data Actually Tell Us
Forty years of scanner data and split-cable experiments converge on a few numbers that are remarkably stable across brands and categories. Knowing them turns a media model from a free-for-all into something with priors.
-
You Are Your Relationships: The Yoneda Lemma
Category theory's most famous lemma says something almost philosophical: an object is completely determined by its relationships to everything else. The same idea quietly powers embeddings, interfaces, and most good abstraction.
-
The Effect You're Looking For Isn't in Your Panel Data
A between-person association and a within-person effect can differ in size or even flip sign. Most longitudinal models silently estimate a blend of the two, and the model you reach for decides which question you're actually answering.
-
Designing Experiments to Maximize Information
There's a single objective that says what makes one experiment better than another — expected information gain. It's beautiful, it's principled, and it's a nightmare to compute. Here's the arc from Lindley in 1956 to policies that design experiments in real time.
-
NO TEARS: How Acyclicity Became Differentiable
Learning the structure of a causal graph from data used to be a combinatorial search over a space that grows superexponentially. One change of variables turned it into gradient descent.
-
The Illusion of Significance: Why p-value Variable Selection Breaks Marketing Mix Models
Stepwise regression produces overconfident models with biased estimates — here's why that matters for MMM, and how Bayesian shrinkage priors fix the problem without breaking your causal identification.
-
Noisy Covariates Bias Your Coefficients Toward Zero
When a predictor in your regression is measured with error, its coefficient shrinks toward zero in a predictable, quantifiable way — here's the math and the Bayesian fix.
-
Building a Pre-Specified Bayesian MMM
Most marketing mix models are tuned until the numbers flatter the brief. Here's the case for pre-specifying the model instead, and how mmm-framework builds the discipline into its API.
-
The Table 2 Fallacy: Your Control Variables Aren't What You Think
Controlling for a variable to identify your treatment effect doesn't mean that variable's coefficient is causally interpretable — and confusing the two is surprisingly common.
-
Hello, world
Welcome to my corner of the internet. A quick note on what this blog is for.
-
Atlas: Budget Optimization Over Any Model
A fitted model predicts response; it doesn't hand you the best budget. Atlas is a model-agnostic framework that turns any predictive model into constraint-respecting spend recommendations.
-
Bayesian Models as Configuration
Treating a Bayesian marketing-mix model as declarative configuration — variables, transforms, normalization, and priors in JSON — so a malformed input file fails validation before you fit instead of after you've shipped the wrong number.
-
Bayesian Brand Tracking, Honestly
Why weekly brand-tracker survey data needs a Binomial likelihood instead of raw percentages, what a small PyMC model actually buys you, and where partial pooling and state-space smoothing come next.