bayesian link forecasting

Bayesian Forecasting of Link Building Outcomes

TL;DR

—  Link building is a small-data, high-uncertainty decision problem — a quarter’s campaign is a dozen links, not a dozen thousand. That is the exact regime where classical point-estimate forecasting quietly fails.

—  A Bayesian forecast is a distribution, not a number. The distribution is the deliverable: it powers “70% chance of reaching the top five” and expected-value budget calls that a single ROI figure cannot.

—  Your benchmark statistics are a prior you already own. Encode “a strong PR link moves a page two to four positions” as a prior distribution, then let the campaign’s own data update it.

—  Partial pooling is the one idea that makes thin per-page data usable: a page with three weeks of noise borrows strength from the portfolio and is shrunk toward the group mean until it earns its own evidence.

—  You can read the posterior at any sample size — but Bayesian forecasting is not a free pass to peek-and-stop. Use an expected-loss threshold, not a naive posterior cutoff.

—  Below a handful of data points, stop modelling and forecast from the prior alone (reference-class forecasting); wide honesty beats false precision.

The previous article in this cluster showed how to prove, after the fact, that links caused a lift. This one runs the clock the other way: before the budget is committed, what is the honest range of outcomes a link campaign might produce, and how should that range drive the decision to fund, scale, or kill it? Forecasting link building is where most measurement talk goes to die, because the honest answer is “we are not sure” — and a point-estimate forecast papers over exactly the uncertainty a decision-maker needs to see. Bayesian methods do not remove the uncertainty. They quantify it, carry it through to the decision, and let you improve it as evidence arrives.

The n = 12 problem: why link building breaks classical forecasting

Open any agency’s campaign proposal and you will find a forecast that reads like certainty: “this campaign will deliver a 15% traffic uplift.” Ask where the number came from and the honest answer is a blend of a case study, a spreadsheet, and hope. The deeper problem is not dishonesty; it is sample size. A conversion-rate experiment on a large site sees tens of thousands of sessions. A link campaign produces a dozen placements, landing on a handful of pages, measured over a few volatile months. At that scale the classical toolkit — point estimates, p-values, confidence intervals that only mean anything asymptotically — is being asked to do a job it was never built for.

Two things go wrong at n = 12. First, a single point estimate hides how little you actually know: “+4 positions” and “somewhere between −1 and +9, most likely around +4” are wildly different claims, and only the second is honest. Second, the p-value machinery, designed to control error rates across many repetitions, is close to meaningless when you have one campaign and cannot repeat it. Declaring a result “not significant” at n = 12 tells you almost nothing — you had no power to detect anything short of a miracle. The classical framework answers a question link builders rarely ask (how often would this happen by chance across infinite replications) and stays silent on the one they always ask: given what I have seen, what will probably happen next?

The question a forecast should answer

Not “is the effect statistically significant?” but “what is the probability distribution of outcomes, and what decision does it imply?”

Bayesian inference answers that directly, because it treats the unknown effect as a distribution you update with evidence — not a fixed truth you either reject or fail to reject.

The objection that Bayesian methods are “too complicated” for a marketing team gets it backwards. The complicated thing is pretending a dozen noisy links support a confident percentage, then defending that number when the campaign lands somewhere else entirely. The honest thing is to state a range and a probability, and to let both sharpen as evidence arrives. Small samples are not a reason to avoid Bayesian forecasting; they are the reason to insist on it. The less data you have, the more the choice of method decides whether your forecast informs the decision or merely decorates it.

A forecast is a distribution, not a number

The central shift is to stop forecasting a value and start forecasting a shape. A Bayesian model of a link campaign does not output “+4 positions.” It outputs a posterior predictive distribution: a full curve over every outcome the campaign might produce, with more mass on the likely values and thinning tails on the unlikely ones. From that one object you can read everything a decision actually needs, and each read is a probability rather than a guess.

  • A point forecast, if you must: the posterior mean or median.
  • An honest range: a 90% credible interval, which — unlike a frequentist confidence interval — genuinely means “90% probability the effect lies in here, given the model and data.”
  • A probability of hitting the goal: the share of the distribution above your target, e.g. P(page reaches the top three) = 0.62.
  • A downside: the share below break-even, which is the number that should decide whether a campaign is worth its cost.

That last translation is what turns a forecast into a decision. A client rarely wants “the expected uplift is 4 positions.” They want “there is a 62% chance we crack the top three, a 20% chance we barely move, and a 5% chance this is money down the drain.” Those three numbers, pulled from one posterior, frame a real budget conversation. The same machinery forecasts a specific SERP outcome — the probability a page wins a featured snippet after a link push is just the mass of the posterior above the position where snippets are typically awarded.

Consider two campaigns a distributional forecast can tell apart but a point estimate cannot. Campaign X has an expected uplift of +4 positions with a tight distribution: almost every outcome lands between +2 and +6. Campaign Y also has an expected uplift of +4, but its distribution is bimodal — a good chance of +8 and a real chance of zero, averaging to +4 with almost no mass actually near four. Reported as point estimates, the two are identical and you would be indifferent between them. Reported as distributions, they are entirely different bets: X is a dependable base hit, Y is a coin-flip between a home run and a strikeout. Which you should fund depends on whether you need a reliable floor or can tolerate variance for upside — a choice the average conceals and the shape reveals.

Priors: your statistics page is data you already have

The word “prior” scares practitioners because it sounds like inventing your conclusion. It is the opposite. A prior is the evidence you already hold before this campaign runs — and in link building you hold a great deal. Years of industry surveys tell you roughly how much a strong editorial link moves a mid-authority page, how long it takes, and how often outreach converts. That is not a subjective belief to be embarrassed about; it is structured knowledge about the problem, and ignoring it to “let the data speak” is the genuinely unscientific move when the data is a dozen noisy points (Gelman et al., 2013).

Prior elicitation is the craft of turning that knowledge into a distribution. Suppose the 2026 benchmarks say a followed link from a domain rated 40+ lifts a mid-authority page by two to four positions over a quarter. Encode it as a normal prior centred on +3 with a standard deviation of about 1.5 — most of the mass between +1 and +5, tails allowing for the occasional dud or breakout. Calibrate the width to the tactic: a steady guest-contribution programme earns a tight prior, whereas newsjacking — which either goes viral or flops — deserves a deliberately wide, heavy-tailed prior that admits both a nothing-burger and a windfall. The prior should look like the tactic’s real outcome history, and the 2026 link building statistics are the closest thing the industry has to that history in one place.

Always run a prior predictive check

Before touching campaign data, simulate outcomes from the prior alone and ask: do these look like link campaigns I have actually seen? If your prior generates +30-position leaps or routine negatives, it is wrong — fix it now, not after it has quietly distorted the posterior.

This one habit catches more forecasting disasters than any diagnostic run later. A prior you never visualised is a prior you do not understand.

The prior’s influence is self-correcting. When the campaign is young and the data thin, the forecast leans on the prior — which is exactly what you want, because the prior is the more reliable evidence at that point. As real placements accumulate, the data progressively overrides the prior. A weakly-informative prior barely nudges a data-rich forecast; an informative one rescues a data-poor one. You are not choosing between “prior” and “data.” You are letting their relative weight follow their relative strength, automatically.

Stress-test the prior: sceptical, neutral, enthusiastic

The fair objection to informative priors is that a motivated forecaster can pick one that flatters the pitch. The answer is not to abandon priors but to make the choice transparent by running three of them. Fit the forecast under a sceptical prior (centred near zero — “assume links do little until proven otherwise”), a neutral one (centred on the benchmark), and an enthusiastic one (centred on your best past results). If the decision is the same under all three, your prior choice is not driving the answer and you can proceed with confidence. If the three disagree, you have learned something more valuable than any single forecast: the decision hinges on an assumption the data cannot yet settle, so you should either gather more evidence before committing or size the bet to survive the sceptical case.

This is the forecasting analogue of a sensitivity analysis

A measurement study reports how robust its effect is to assumptions; a forecast should report how robust its decision is to the prior. “Fund” under all three priors is a strong recommendation. “Fund” under the enthusiastic prior only is a warning label.

Report the range, not just your favourite. A forecaster who shows you their sceptical case has earned the right to show you their optimistic one.

Partial pooling: the one idea that makes thin per-page data usable

Here is the technique that separates a real Bayesian forecast from a dressed-up average, and that virtually no SEO writing covers. You are rarely forecasting one page. You are forecasting a campaign that touches several pages, each with its own sparse, noisy history. You have three options for how to handle them, and the first two are both traps.

  • Complete pooling lumps every page together and forecasts one number for all of them — ignoring that a thin blog post and a mature product page respond very differently.
  • No pooling forecasts each page in isolation from its own handful of weeks — which, at three or four data points, produces estimates so noisy they are worse than useless.
  • Partial pooling — a hierarchical model — does both at once: each page gets its own estimate, but every estimate is tied to a campaign-level distribution the pages share (Gelman et al., 2013).

The magic word is shrinkage, and it is not a hack but the mathematically optimal response to scarce data. A page with only three weeks of wildly swinging post-link data has its raw estimate pulled toward the portfolio mean, because three weeks is weak evidence and the portfolio is the better guide. A page with twelve stable weeks barely moves, because it has earned the right to speak for itself. The degree of pull is set automatically by the ratio of within-page noise to between-page variation — the model decides how much each page should borrow, so you do not have to.

Shrinkage, made concrete

Portfolio average lift across the campaign: about +3 positions. Page A shows a raw +6.5 after three noisy weeks; Page B shows +4.0 after twelve stable weeks.

Partial pooling pulls Page A down to roughly +3.7 (wide interval — it has barely any evidence), and leaves Page B near +4.0 (tight interval — it has earned it). The eye-catching +6.5 was mostly luck, and the model refuses to be fooled by it.

This is why a portfolio forecast is more accurate than the sum of its isolated parts. Data-rich pages stabilise data-poor ones; the whole borrows strength across itself. For an agency running many similar campaigns, the hierarchy can climb another level — pages within campaigns within clients — so a brand-new client’s first campaign inherits a sensible forecast from the fleet of campaigns that came before it, before it has produced a single data point of its own. That is reference-class forecasting with the arithmetic done honestly.

The one discipline partial pooling demands is honesty about exchangeability: you may only pool units that plausibly come from the same underlying distribution. Pooling an e-commerce category page with a thin thought-leadership post assumes links act on them alike, which they do not, and the shrinkage will drag both toward a mean that describes neither. The fix is to pool within genuinely comparable groups — by page type, by intent, by authority band — and let the hierarchy, not a forced average, express how those groups differ. Done well, a page inherits strength from its true peers and from no one else. Done carelessly, pooling manufactures confident nonsense, which is worse than the noisy honesty of no pooling at all. Exchangeability is the assumption to interrogate before you trust a hierarchical forecast, exactly as parallel trends was the assumption to interrogate in the measurement design.

Choosing the likelihood: position is not a normal variable

A forecast is only as good as the model of how outcomes are generated, and the default choice — a normal likelihood on average position — is convenient but wrong in ways that matter. Search position is bounded (you cannot rank better than one), heavily skewed, and its business value is wildly non-linear: moving from position nine to seven is nearly worthless, while moving from four to two can double clicks. A normal model treats all those moves as equal and cheerfully forecasts a page ranking at position −0.5. The fix is to match the likelihood to the quantity you actually care about.

  • Model clicks, not raw position, when traffic is the goal. Clicks are counts, so a negative-binomial likelihood — which handles the overdispersion real search traffic shows — forecasts a distribution you can convert straight into value, with no impossible negatives.
  • If you must model position, transform it. Work on a scale where a one-unit move means the same thing everywhere (a log or logit-style transform), so the model does not treat a top-of-page gain and a page-two gain as identical.
  • Respect censoring. A page that never cracks the first page has a position you only know is “worse than roughly ten.” Treating that as a precise number biases the forecast; a censored likelihood handles it honestly.

This is not statistical fastidiousness for its own sake. The likelihood is where your assumptions about how links translate into results live, and getting it wrong produces forecasts that are confidently, structurally miscalibrated — the same failure mode as the broken measurement regression in the previous article, arriving from a different direction. Pick the likelihood that mirrors your real outcome, and the credible intervals it produces will actually mean what they claim.

From posterior to decision: expected value, not vibes

A distribution is only useful if it changes what you do. The bridge from posterior to decision is expected value. Take the posterior over the outcome, map each outcome to what it is worth — incremental clicks, then sessions, then revenue — and average across the whole distribution, weighting by probability. The result is the expected incremental value of the campaign, and because it is computed over the full posterior, it carries the uncertainty with it rather than hiding it.

Set that against cost and you have the only forecast that matters: the probability the campaign returns more than it costs, and by how much on average. This reframes the whole conversation. Instead of “will it work,” you ask “is the expected value, net of cost, positive, and is the downside tolerable?” A campaign with a 55% chance of a modest win and a capped, survivable downside can be a better bet than one with a 70% chance of a win and a catastrophic tail. Only a distributional forecast lets you see that difference; a point estimate erases it.

The “threshold of caring”, not the coin-flip

Do not act on P(effect > 0) alone — a link with a 90% chance of a trivially small gain is not worth funding. Borrow the decision-analysis idea of a threshold of caring: define the smallest effect that would justify the spend, and compute the probability of clearing that, plus the expected loss if you commit and are wrong.

A forecast that reports “P(uplift clears the break-even threshold) = 0.58, expected loss if wrong ≈ £900” gives a decision-maker something to actually decide with.

A worked version makes the arithmetic concrete. Suppose a £6,000 campaign has a posterior over incremental annual value: draw ten thousand samples from it, subtract the cost from each, and average. If the mean net value comes to +£4,100, that is the expected return — but the single number that usually decides funding is the fraction of draws below zero, say 18%. The campaign clears expected-value on average, loses money roughly one time in five, and the worst decile of draws bottoms out around −£2,500. A decision-maker can now weigh a healthy expected return against a one-in-five chance of a modest, survivable loss — a judgement they can actually make, because the forecast handed them the whole shape instead of a reassuring average.

Updating as data arrives — and the peeking myth

A frequentist forecast is a one-shot event: set your sample size, run to the end, read the result. A Bayesian forecast is a living object. Every week of new Search Console data updates the posterior, tightening the credible interval and refining the probability of success. You watch the forecast converge in real time, and you can rescope a campaign the moment the evidence justifies it rather than waiting for an arbitrary end date. For a discipline where campaigns unfold over months, that continuous updating is worth more than any single readout.

But here is the honesty that separates a rigorous practitioner from a vendor’s brochure. It is widely claimed that Bayesian methods are “immune to peeking” — that you can check daily, stop the instant the posterior crosses 95%, and suffer no penalty. That is not quite true, and recent work has been blunt about it (a point re-litigated across the experimentation community through 2025). If you stop the moment a naive posterior threshold is crossed, you still inflate your error rate, because outcome-based stopping is part of the data-generating process whether your statistics are Bayesian or not.

What is genuinely true, and genuinely useful, is subtler: the Bayesian posterior is interpretable at every sample size. P(page reaches the top three) = 0.62 means the same thing at week two and week twelve — no asymptotics required. So you may look whenever you like and read the current probability honestly. What you may not do is pretend that stopping on the first favourable look is unbiased. The disciplined stopping rule is decision-theoretic: continue until the posterior expected loss falls below your threshold of caring, then stop. That controls the thing you actually care about — the cost of a wrong decision — rather than a significance ceremony.

Regression to the mean and the winner’s curse

One last reason link builders need Bayesian thinking: it inoculates you against your own best results. Every quarter, some campaign looks spectacular. The instinct is to pour next quarter’s budget into whatever that campaign did. The trap is that extreme results are extreme partly because of luck, and luck does not repeat. The campaign that returned +8 positions was probably a genuinely good campaign that also caught a favourable roll of the dice — an algorithm update that happened to help, a competitor who happened to slip. Next time, the dice are fresh.

This is the winner’s curse, and shrinkage is its cure. A hierarchical model automatically discounts the spectacular result toward the portfolio mean in proportion to how flukish it looks, giving you a de-biased estimate of what that tactic will really deliver on repeat. The practical payoff is real money: you stop over-investing in last quarter’s outlier and under-investing in the steady performers whose modest, reliable numbers never dazzled anyone. The naive “double down on what worked” heuristic systematically buys the fluke; the Bayesian forecast buys the signal.

The workflow, with code

The tooling is mature and free. In R, brms compiles a hierarchical model to Stan with a formula interface; in Python, PyMC does the same. The model below forecasts position lift with an informative prior from benchmarks and partial pooling across pages within a campaign. It is illustrative, not copy-paste production code, but the shape is exactly what you would run.

# R / brms: hierarchical forecast of link-driven position lift.

# Outcome: weekly position improvement vs a matched pre-link baseline.

# Partial pooling across pages; informative prior from 2026 benchmarks.

library(brms)

priors <- c(

  prior(normal(3, 1.5), class = “Intercept”),      # ~ +3 positions

  prior(exponential(1), class = “sd”),             # between-page spread

  prior(exponential(1), class = “sigma”)           # within-page noise

)

fit <- brm(

  lift ~ 1 + weeks_since_link + (1 + weeks_since_link | page),

  data = panel, family = gaussian(), prior = priors,

  chains = 4, iter = 3000, seed = 42,

  control = list(adapt_delta = 0.95)   # guard against divergences

)

pp_check(fit)                          # posterior predictive check

# Decision reads, straight off the posterior predictive:

draws <- posterior_predict(fit, newdata = target_page)

mean(draws >= 4)          # P(reach +4 positions) = probability of target

mean(pmax(0, cost – value(draws)))     # posterior expected loss vs cost

Note what the code makes routine that a spreadsheet cannot: an honest prior you can inspect, automatic pooling across pages, a convergence guard, a predictive check, and — the payoff — decision quantities read directly off the posterior. The counterfactual “what would traffic have been without the links” can be forecast the same way with a Bayesian structural time-series model (the approach behind Google’s CausalImpact), which is the natural bridge back to the measurement methods in the rest of this cluster.

Cost, failure modes, and when not to model at all

Cost

The expensive resource is neither money nor compute — a hierarchical model over a few dozen pages and forty weeks samples in seconds to a couple of minutes on a laptop, and the software is free. The real cost is judgement: eliciting defensible priors, specifying the hierarchy, and reading diagnostics. Budget analyst time, not cloud spend. At agency scale, the one-off cost of building a reusable model and a benchmark-derived prior library is repaid across every campaign that follows, because each new forecast starts from the accumulated hierarchy rather than a blank sheet.

Production failure modes

  • Overconfident priors. A prior too narrow around your hoped-for number will drag the forecast toward it and resist correction. Symptom: the posterior ignores surprising data. Fix: widen the prior and always run the prior predictive check.
  • Non-convergence. Divergent transitions or R-hat above 1.01 mean the sampler did not explore the posterior; the numbers are not trustworthy. Fix: raise adapt_delta, reparameterise, or simplify the hierarchy. Never report a model you have not diagnosed.
  • Garbage benchmarks in, garbage prior out. A prior built from a vendor case study selected for being impressive bakes in survivorship bias. Fix: source priors from broad, dated surveys, and stress-test with a sceptical alternative prior.
  • Pooling across the wrong groups. Pooling a homepage with thin blog posts shrinks toward a meaningless average. Fix: pool only genuinely exchangeable pages, or add a page-type level to the hierarchy.

Reproducibility metadata to record with every forecast

A Bayesian forecast is only defensible if someone can rebuild it and see your assumptions. Store, with every readout: the full prior specification and the reasoning behind it; the model formula and hierarchy; the sampler settings and random seed; convergence diagnostics (R-hat, effective sample size, divergence count); the posterior predictive check; and the exact decision rule and threshold of caring. The prior is not an embarrassing detail to hide — it is the single most important thing to disclose, because a hidden prior is how dishonest forecasts get made.

Failure threshold and the honest fallback

When to stop modelling

With only two or three data points, or fewer than about five pages to pool across, the between-group variance is barely identified and a full hierarchical model is false precision. The machinery will run; the answer will not mean much.

Fallback: forecast from the prior alone. Reference-class forecasting — “campaigns like this, in our records and the benchmarks, landed here” — is a legitimate Bayesian forecast with a wide, honest interval and no pretence of having learned from data you do not have. For a slightly richer setting (five to a few dozen groups), empirical Bayes gives almost the same shrinkage as full MCMC at a fraction of the effort. Match the method to the evidence; never let the model look more certain than the data warrants.

An anonymised worked example

A composite, figures illustrative, structure faithful to a real engagement. A UK agency pitched a two-quarter digital-PR retainer aimed at four commercial pages for a B2B client, and the client’s procurement team wanted a forecast with its risks, not a hype number.

  • Prior: from 2026 benchmarks, a normal centred on +3 positions per qualifying link with a standard deviation of 1.5; widened for two pages targeting volatile, newsy queries.
  • Model: hierarchical, partial pooling across the four pages, with the agency’s prior campaigns forming an upper level so the new client inherited a sensible starting forecast.
  • Outcome: posterior predictive over end-of-retainer position, converted to expected incremental clicks and revenue.

The forecast the client received was not “we will get you a 15% uplift.” It was: a 64% probability that at least three of the four pages reach the top five; an expected gain of roughly 2,900 incremental monthly clicks with a 90% credible interval spanning 1,100 to 5,400; and a 12% probability the retainer fails to clear its own cost, driven almost entirely by the two volatile pages. Procurement approved it precisely because the downside was stated, quantified, and survivable. The point forecast a competitor offered — a confident single percentage — lost the pitch by looking less credible, not more.

The forecast then earned its keep by updating. By week five, real data had arrived: two pages were tracking ahead of prior, one was flat, one was drifting. The posterior sharpened, the probability of hitting the top-five target on three pages rose to 78%, and the flat page’s expected loss crossed the threshold of caring. The agency rescoped mid-retainer — pulling budget off the laggard and onto a fifth page the sharpened model now favoured. That is the whole point of a living forecast: not to be right on day one, but to get less wrong every week, in public, with the decision rule agreed in advance.

What a defensible Bayesian forecast readout contains

  1. The prior, stated and justified: its centre, its width, and the benchmark or history it came from — disclosed, never hidden.
  2. A prior predictive check: evidence the prior generates plausible campaigns before any data is added.
  3. The model structure: what is pooled, across which groups, and why those groups are exchangeable.
  4. The posterior as a distribution: point estimate, credible interval, P(target), and P(below break-even) — not a lone number.
  5. A decision rule: the threshold of caring and the expected-loss cutoff, fixed before you look at results.
  6. Diagnostics: R-hat, effective sample size, divergences, and a posterior predictive check — the proof the numbers are trustworthy.
  7. An update plan: how often the posterior will be refreshed and what movement triggers a rescope.

None of this is about looking clever. It is about giving a decision-maker the one thing a point forecast structurally cannot: a truthful picture of what might happen and what it is worth, updated as reality reports in. When domain authority is the constraint on a site’s growth and every link costs real money, the ability to say “here is the probable range of what this spend will buy, here is the chance it disappoints, and here is how we will know early” is not statistical vanity. It is how a link programme earns the right to its budget — and keeps it.

Keep going: this forecasting piece pairs with the measurement methods in the same cluster — use forecasts to decide what to fund, and causal designs to prove what worked. Ground your priors in the 2026 link building statistics, choose the platforms that supply the data your models run on in our best link building tools roundup, match forecasts to the right tactics via our link building strategies hub, and start with the foundations in what link building is.

Leave a Reply

Your email address will not be published. Required fields are marked *

causal inference seo Previous post Causal Inference for SEO: Difference-in-Differences for Backlinks
synthetic control seo Next post Synthetic Control Methods for Measuring a Single Campaign’s Impact