A Bayesian Field Guide
A small series, one ink language: how probability distributions relate, how the Bayesian workflow runs, and which model shape fits which people-analytics question.
Plate II — By Descent
The genealogy of distributions: a few atoms (Bernoulli, Exponential, Normal) built up by summing, limits, ratios and transforms.
Plate III — By Iteration
The Bayesian workflow as a loop — Define, Design, Fit, Check, Predict, and back again — mapped across four people decisions.
Plate IV — By Structure
A model zoo: eight decisions, eight fundamental model shapes, each with the trap to avoid.
Plate V — By Decision
From posterior to action: a loss function, an expected-value threshold, and how to say it to a non-technical stakeholder.
The four plates are the wall pieces (open in a browser to see the brush type). The three cheat sheets are the working references — open those when a problem actually lands on your desk. Everything under Reference is supporting material.
Plate II — By Descent
the distribution genealogy · open the .svg in a browser for the brush type
Plate III — By Iteration
the Bayesian workflow · open the .svg in a browser for the brush type
Plate IV — By Structure
a model zoo for people decisions · open the .svg in a browser for the brush type
Plate V — By Decision
from posterior to action · open the .svg in a browser for the brush type
Plate III — The Bayesian Workflow, Applied to People Decisions
Companion to the workflow poster. The poster is the map; this is the territory — one case worked end-to-end, plus how the same five moves play out across four people-analytics decisions.
Why a workflow, not a recipe
A single model fit is almost never the point. Following Gelman et al. (Bayesian Workflow, 2020), the real activity is navigating a sequence of models: you specify one, simulate from it, fit it, interrogate it, and — when it fails a check — expand it and go around again. The loop is the method. A model you never tried to break is a model you don't yet understand.
The five headline moves below are deliberately memorable. Nested under each are the steps that do the actual work.
| Headline move | What you actually do (the Gelman sub-steps) |
|---|---|
| 1 · Define | Write the generative model: an outcome distribution (likelihood) and priors on its parameters. State the data-generating story in words first. |
| 2 · Design | Prior predictive check — simulate fake outcomes from the priors alone; are they plausible? Decide what to measure, how outcomes are defined, and how the sample is selected. |
| 3 · Fit | Run inference (HMC/NUTS). Diagnose computation: R-hat ≈ 1, adequate effective sample size, no divergences. Validate on fake data (simulation-based calibration) before trusting real fits. |
| 4 · Check | Posterior predictive checks — does the fitted model reproduce features of the real data? Check calibration. Compare candidate models (LOO cross-validation). If it fails: expand and loop back to Define. |
| 5 · Predict | Posterior predictive distribution for new cases — always with uncertainty. Turn the predictive distribution into a decision using costs/utilities, not a bare cut-off. |
The arrow that matters most runs from Check → Define: model expansion. Everything else is in service of knowing when to take it.
The four decisions at a glance
All four are the same workflow with different outcome types. Three are binary (a Bernoulli likelihood — the same family we started this whole thread on, LPM vs. logit); the fourth is a latent-trait problem.
| Step | Hiring success | Promotion readiness | Attrition (stay/leave) | Role fit (future role) |
|---|---|---|---|---|
| Define | hired_success ~ Bernoulli(p); logit p = α + β·(interview, work-sample, résumé); β ~ Normal(0, 1) on standardized inputs |
promoted ~ Bernoulli(p); logit p = α + β·(performance, coaching dose, tenure) + manager_effect; hierarchical over managers |
left ~ Bernoulli(p) in a window — or time_to_leave ~ Weibull(k, λ) for when; logit/log link on engagement, pay ratio, tenure + team effect |
latent fit θ from a factor/IRT model over experience, competencies, cognitive ability, personality/values; θ ~ Normal, loadings with weakly-informative priors; multivariate-Normal correlations among dimensions |
| Design | Prior predictive: implied success rate ~40–70%? Define "success" (e.g. 12-month performance). Range restriction: you only observe hires. | Prior predictive: base promotion rate ~10–20%/yr? Coaching is an intervention — who got it and why? | Prior predictive: annual attrition ~10–25%? Engagement is measured with error; current employees are censored (haven't left yet). | Prior predictive on the fit-score spread; anchor the latent scales so dimensions are identified; multi-instrument measurement. |
| Fit | NUTS; R-hat, ESS, divergences. Small per-source samples → partial pooling. | Hierarchical → watch funnels; non-centered parameterization. SBC on the manager effects. | If survival model, fit hazard; check censoring handled. Watch separation if a predictor perfectly splits leavers. | Latent-variable models are computationally delicate — identify rotation/sign, check label switching. |
| Check | PPC: reproduce success rate by source/role? Calibration of predicted probabilities. Adverse-impact check across protected groups. | PPC: promotion rates by level/manager. Is the coaching coefficient's sign/size believable, or confounded? LOO vs. a no-coaching model. | PPC: attrition by tenure/team; calibration. LOO vs. a simpler model. If survival: does the hazard shape match? | PPC: recover known-anchor patterns; prior sensitivity; are dimension correlations sensible? |
| Predict | p(success | new candidate) with an interval; rank/threshold using the cost of a bad hire vs. a missed good one. |
p(ready) with uncertainty; counterfactual: expected lift from coaching (a do-intervention, not a correlation). |
p(leave in 6 mo) with uncertainty; expected value of a retention action per person. |
posterior fit score with uncertainty; show which dimensions drive it; shortlist with intervals, not point ranks. |
Worked end-to-end: who is likely to leave?
Attrition is the cleanest full illustration — a binary outcome, the model we opened this conversation discussing, and a decision with real costs. Suppose we have ~2,000 employees, an annual engagement survey, tenure, a pay-vs-market ratio, and team membership; the outcome is left within 12 months.
1 · Define
The data-generating story: each employee has some latent monthly risk of leaving; higher engagement and fair pay lower it; teams differ. As a binary-in-window model:
left_i ~ Bernoulli(p_i)
logit(p_i) = α + β_eng·engagement_i + β_pay·pay_ratio_i + β_ten·tenure_i + u_team[i]
u_team[j] ~ Normal(0, σ_team) # partial pooling across teams
α ~ Normal(logit(0.15), 0.5) # centred on a ~15% base rate
β_* ~ Normal(0, 1) # standardized predictors → these are "modest effect" priors
σ_team ~ HalfNormal(0.5)
The Normal(0,1) priors are not "uninformative" — on the log-odds scale they say a one-SD change in a predictor probably shifts the odds by less than ~e¹ ≈ 2.7×, which is a deliberately reasonable claim. (For when rather than whether, swap the Bernoulli for a Weibull survival model — see Plate II — and keep the rest.)
2 · Design (prior predictive check)
Before touching the data, simulate employees from the priors and look at the implied attrition rate. With α ~ Normal(logit 0.15, 0.5) and standardized predictors, simulated rates land roughly in 7–28% — plausible. Had we used the reflexive β ~ Normal(0, 10), the prior predictive would pile most employees at p≈0 or p≈1 (near-certain stayers and leavers) — absurd, and a sign the "vague" prior is actually a strong, silly claim. This is also where you confront measurement (engagement is a noisy survey measure) and censoring (employees still present are not "stayers" — they simply haven't left yet; a survival model handles this honestly).
3 · Fit (inference + diagnostics)
Fit with HMC/NUTS. Acceptance criteria before reading any coefficient: all R-hat ≤ 1.01, bulk- and tail-ESS in the hundreds, zero divergences. The team effects invite a funnel — if divergences appear, switch u_team to a non-centered parameterization (u = σ_team · z, z ~ Normal(0,1)). Validate the whole pipeline on simulated data (simulation-based calibration): fit the model to data generated from known parameters and confirm it recovers them.
4 · Check (posterior predictive + comparison)
Draw replicated datasets from the posterior and compare to reality: - Aggregate: does the predicted attrition rate match the observed ~15%? - By segment: attrition by tenure band and by team — does the model track the curve, or miss the high-churn first-year cohort? - Calibration: among people the model called "20% risk," did ~20% actually leave?
Then compare models with LOO cross-validation: does adding the team hierarchy, or a tenure spline, actually improve out-of-sample prediction, or just fit noise? If the model systematically under-predicts early-tenure churn, that's the loop firing — expand (add a tenure nonlinearity or a survival hazard) and return to Define.
5 · Predict (and decide)
For a new employee you get a full posterior predictive distribution for p(leave), e.g. a median of 0.22 with an 80% interval of [0.11, 0.38] — the interval is the product, not the point. Turn it into a decision with a utility: if a regretted exit costs ~C and a retention conversation costs ~c, act when E[benefit] = p(leave)·(value retained) > c. The same posterior tells you where the uncertainty is — sometimes the right action is to reduce uncertainty (a stay interview) rather than to intervene.
People-analytics cautions (the part that bites)
These cut across all four decisions and belong on every plate:
- Selection bias / range restriction. Hiring and promotion models are trained only on people who got hired or promoted. The relationship you estimate is conditional on passing an earlier gate, and can invert the true one (the classic: among hires, interview score and résumé strength look negatively correlated purely because both can't be low).
- Causal ≠ predictive. Coaching, engagement, and pay are interventions someone chose. A predictive coefficient is not the effect of changing it. If you want "what happens if we coach," you need a causal estimand (a do-intervention), confounders, and ideally a design — not just a fitted slope.
- Fairness and adverse impact. A calibrated, accurate model can still produce disparate outcomes across protected groups. Check it explicitly, decide on a fairness criterion deliberately, and remember that omitting a protected attribute does not remove its influence (proxies remain).
- Measurement error. Engagement scores, competency ratings, and interview scores are noisy, and the noise is often not random (halo effects, rater leniency). Model the measurement, or at least don't treat a survey mean as ground truth.
- Pooling and small N. Per-manager or per-team estimates from tiny samples are mostly noise; hierarchical partial pooling shrinks them toward the population and is almost always the right default.
Where this sits in the series
Plate I — the distributions in the abstract (LPM vs. logit, links, families). Plate II — the genealogy of distributions. Plate III (this) — the workflow that uses those distributions to answer a question. The natural Plate IV would be decision & communication: turning a posterior into an action and explaining it to a non-technical stakeholder, which is where most people-analytics work actually lives or dies.
Plate IV — Model Zoo Cheat Sheet
A day-job reference for picking the right model shape for a people-analytics question. The poster is the glance; this is the manual. Each entry stands on its own — start with the picker, jump to the scenario you're in.
How to use this
- Look at your outcome — the thing you're trying to explain or predict — and its structure. The picker below routes you to a scenario by the shape of that outcome.
- Read that scenario's entry: when it applies, the model, the choices you must make, how to check it, and the one trap that most often bites.
- The workflow itself (how to define → design → fit → check → predict, and when to iterate) is in the workflow cheat sheet (Plate III companion). This sheet is about which model; that one is about how to run it.
A glossary of the recurring terms is at the bottom.
The picker — which model do I even need?
| What does your outcome look like? | Scenario | Go to |
|---|---|---|
| Yes / no (hired, promoted, left) | Binary | Plate III main examples |
| A count (incidents, tickets, applications) | Counts & overdispersion | §1 |
| Time until something happens — and some haven't yet | Time-to-event & censoring | §2 |
| An ordered rating (1–5, low/med/high, 9-box) | Ordinal | §3 |
| You care how much variation is "the team / the manager" | Hierarchical variance | §4 |
| You want the effect of an action you could take | Causal, not predictive | §5 |
| You suspect hidden subgroups in the population | Latent classes / mixture | §6 |
| A choice among options, or "who beats whom" | Choice & comparison | §7 |
| A set of proportions that sum to 1 (time, budget, headcount mix) | Compositional | §8 |
| A quality you can't measure directly, inferred from many indicators | Latent trait | Plate III role-fit |
If two apply, you probably have two linked models (e.g. who leaves is binary; when they leave is time-to-event). That's normal — model the question you actually need to answer.
1 · Counts & overdispersion
You're here when: the outcome is a non-negative count — safety incidents, support tickets, applications per req, sick days — often over unequal exposure (different team sizes or time windows).
The model: start with Poisson (count ~ Poisson(λ), log λ = α + βx). Almost always move to Negative Binomial, which adds a dispersion parameter for the very common case where the variance exceeds the mean.
Key choices: include an offset — log(exposure) (headcount, hours, days at risk) added to the linear predictor — so you model a rate, not a raw count. Weakly-informative priors on β (e.g. Normal(0,1) on standardized predictors).
Fit & check: posterior predictive check on the count distribution — does the model reproduce the spread and the number of zeros? If zeros pile up beyond what Negative Binomial allows, consider a zero-inflated model.
The trap: using Poisson when variance > mean. Poisson forces variance = mean, so your standard errors come out far too small and everything looks "significant." Check dispersion; reach for Negative Binomial by default.
Example: modelling safety incidents per site per quarter. Offset by hours worked; Negative Binomial because a few sites have incident clusters; predictor = a safety-climate survey score.
2 · Time-to-event & censoring
You're here when: the outcome is how long until something — time to attrition, time-to-fill a req, time-to-promotion — and crucially, for some people it hasn't happened yet.
The model: a survival model — Weibull (or exponential, or a Cox proportional-hazards model) for the time, with a hazard that predictors shift. The Weibull's shape parameter lets risk rise or fall with tenure.
Key choices: handle censoring explicitly — an employee still here at the end of the window contributes "survived at least this long," not "stayed." This is the whole point; a model that ignores it is wrong.
Fit & check: compare predicted vs. observed survival curves (Kaplan–Meier overlay); check the hazard shape matches reality (e.g. first-year churn spike).
The trap: treating "hasn't left yet" as "is a stayer," or throwing current employees out of the data. Both bias you badly — the people who haven't left are exactly the informative censored cases.
Example: time-to-attrition. Weibull hazard rising then falling; predictors = engagement, pay ratio, tenure; current staff censored at today's date. Upgrades the binary "will they leave?" to "when, and how does risk evolve?"
3 · Ordinal outcome
You're here when: the outcome is an ordered category — performance rating 1–5, a 9-box cell, a Likert engagement item, low/medium/high potential.
The model: ordered (cumulative) logit/probit — one slope per predictor, plus a set of estimated cutpoints that carve the latent scale into the ordered categories.
Key choices: let the cutpoints be estimated (don't assume equal spacing). Decide whether the proportional-odds assumption (same slope across thresholds) holds; relax it if not.
Fit & check: posterior predictive check on the category proportions; inspect whether predicted and observed distributions match per group.
The trap: treating a 1–5 rating as a continuous number and running ordinary regression. That invents distances ("4 is exactly twice 2") that don't exist and can distort or reverse conclusions, especially with floor/ceiling effects.
Example: predicting performance-review rating from goal attainment and tenure. Cumulative logit; check that the model reproduces the lump of "meets expectations" ratings.
4 · Hierarchical variance (partial pooling)
You're here when: your data are nested — employees in teams in regions — and you want to compare groups, or know how much of the variation is the group vs. the individual.
The model: a multilevel model with a random effect per group (y = α + βx + u_group, u_group ~ Normal(0, σ_group)). The variances (σ_group, residual) decompose where the signal lives; the intraclass correlation (ICC) summarizes the group share.
Key choices: partial pooling is the default — group estimates are pulled toward the population mean by an amount set by how much data each group has. Tiny groups shrink a lot; large groups barely move.
Fit & check: watch for divergences (hierarchical models create "funnels"); use a non-centered parameterization if they appear. Check the group-level standard deviation is identified.
The trap: ranking managers or teams on raw per-group averages from tiny samples (n = 4). That's mostly noise; the "best" and "worst" are usually just the smallest teams. Pool, and report uncertainty on the ranking.
Example: "how much of engagement is the manager?" Variance decomposition across individual / team / region; shrink small-team scores; an ICC of, say, 0.12 says managers matter but most variation is within-team.
5 · Causal, not predictive
You're here when: the question is "if we do X, what happens?" — does the coaching program work, does the 4-day week reduce attrition, does a pay raise retain people. You want the effect of intervening, not a correlation.
The model: a causal design first, model second — difference-in-differences, propensity weighting/matching, regression discontinuity, or an instrumental variable. State the estimand (the specific counterfactual contrast) before fitting.
Key choices: identify and adjust for confounders (why did some people get the treatment?). A randomized or quasi-random source of variation is worth more than any modelling cleverness.
Fit & check: test the design's assumptions (parallel trends for diff-in-diff; balance after matching); sensitivity analysis to unmeasured confounding.
The trap: reading a fitted coefficient as an effect. "Coached employees were promoted more" is not "coaching causes promotion" — the people chosen for coaching were already on the up. A predictive slope answers a different question than a causal one.
Example: evaluating a leadership program. Diff-in-diff on promotion rates of participants vs. a comparable non-participant group, before vs. after — not a regression of promotion on "attended program."
6 · Latent classes / mixture
You're here when: you suspect the population is a mix of unobserved types — "thrivers vs. coasters vs. at-risk," distinct engagement profiles, behavioral archetypes — rather than one homogeneous group.
The model: a finite mixture (or latent class analysis) — the data come from K subpopulations with unknown membership; you estimate each class's parameters and each person's probability of belonging to each class.
Key choices: choosing K (use predictive comparison, not just fit); handling label-switching; deciding whether classes are substantively real or just convenient.
Fit & check: does the mixture reproduce the multimodal shape of the data? Are classes stable across runs and interpretable? Compare K via cross-validation.
The trap: treating soft, uncertain class membership as hard buckets ("you ARE an at-risk employee"). Membership is probabilistic; a person can be 60/40, and acting as if they're 100% one type discards real uncertainty and can stigmatize.
Example: segmenting employees from engagement-survey patterns into latent profiles; carry the membership probabilities forward rather than assigning everyone a single persona.
7 · Choice & comparison
You're here when: the outcome is a choice among alternatives (which offer a candidate accepts, which internal role someone bids for, which benefit they pick) or a comparison ("who's the tougher interviewer," forced ranking).
The model: multinomial / conditional logit for choices among options; Bradley–Terry for pairwise comparisons (turns "A was rated above B" data into a latent ability/strictness score per item or rater).
Key choices: model attributes of both the chooser and the alternatives; decide the choice set each person actually faced.
Fit & check: posterior predictive on choice shares; for Bradley–Terry, check that estimated abilities predict held-out comparisons.
The trap: ignoring the choice set or the alternatives' attributes — modelling "what was chosen" without "what was on offer." Also, comparing raw interviewer scores without modelling the rater conflates candidate quality with rater strictness.
Example: interviewer calibration. Bradley–Terry over which candidate each interviewer rated higher recovers each interviewer's strictness, so you can adjust scores rather than penalize candidates who drew tough panels.
8 · Compositional (sum-to-one)
You're here when: the outcome is a set of proportions that must sum to 1 — how a team splits time across activities, headcount mix across functions, budget allocation, a diversity composition.
The model: treat the vector on the simplex — a Dirichlet likelihood, or transform with log-ratios (additive/centered log-ratio) and model in that space. (This is exactly the Dirichlet from Plate II — multivariate Beta.)
Key choices: which log-ratio transform / reference component; priors on the Dirichlet concentration.
Fit & check: predictions stay on the simplex (non-negative, sum to 1); posterior predictive on the component shares.
The trap: running ordinary regression on each share independently. The shares aren't independent — if one goes up another must come down — so independent models give incoherent predictions (shares that don't sum to 1, impossible negatives).
Example: modelling how engineering teams split time across build / maintenance / meetings as a function of team size and tenure mix; Dirichlet so the predicted split is always a valid composition.
Glossary
- Offset — a known quantity (like
log(headcount)) added to a count model's linear predictor so you model a rate per unit exposure, not a raw count. - Censoring — you know an event hasn't happened yet but not when it will; the observation is partial, not missing. Survival models use it instead of discarding it.
- Cutpoints — the estimated thresholds in an ordinal model that divide a continuous latent scale into ordered categories.
- Partial pooling — estimating group effects by borrowing strength across groups; each group's estimate is shrunk toward the overall mean in proportion to how little data it has.
- ICC (intraclass correlation) — the share of total variation attributable to the grouping (e.g. the manager/team).
- Prior predictive check — before fitting, simulate fake outcomes from the priors alone; if they're implausible, your "vague" prior is actually a strong, silly claim.
- Posterior predictive check (PPC) — after fitting, simulate datasets from the fitted model and compare to the real data; the main way to find where the model is wrong.
- LOO — leave-one-out cross-validation; estimates out-of-sample predictive accuracy to compare models without overfitting to the sample.
- R-hat / ESS / divergences — MCMC health checks: R-hat ≈ 1.00 means chains agree; effective sample size (ESS) should be in the hundreds+; divergences flag a geometry the sampler can't explore (often fixed by reparameterizing).
- Non-centered parameterization — rewriting a hierarchical model (
u = σ·z,z ~ Normal(0,1)) to remove the "funnel" that causes divergences. - SBC (simulation-based calibration) — validate the whole pipeline by fitting to data simulated from known parameters and checking it recovers them.
- Estimand — the precise quantity you're after (e.g. "the average effect on promotion of assigning coaching"), stated before modelling so you know what would even count as an answer.
Plate V — From Posterior to Action
Companion to the decision poster. Plate III showed the workflow that produces a posterior; this sheet is about the two moves that come after the model is good enough: deciding what to do, and saying it to someone who never saw the model. It is where people-analytics work actually lands or dies.
Why the model is only half the job
A fitted, well-checked model hands you a posterior — a distribution over the thing you care about. It does not hand you an action. Two further steps stand between the posterior and a result, and both are routinely skipped:
- Decision — combine the posterior with a loss function (what each outcome costs) to choose the action with the best expected consequences. A probability is not a decision until you say what acting, or not acting, is worth.
- Communication — render that decision in language a non-technical stakeholder can trust and act on. A correct analysis that the decision-maker misreads is, operationally, a wrong analysis.
The running example is the attrition model worked end-to-end in Plate III: ~2,000 employees, outcome left within 12 months, a hierarchical logistic model. For one employee the posterior predictive for p(leave) has a median of 0.22 with an 80% interval of [0.11, 0.38]. Everything below starts from that distribution.
Act I — the decision calculus
1 · The posterior is the input, in full
The input to a decision is the whole distribution, not a summary of it. The median (0.22) tells you the central guess; the spread ([0.11, 0.38]) tells you how much you should hedge. Two employees with the same median but different spreads can warrant different actions — the one whose interval reaches well past your threshold is the more urgent case, and the one whose interval is wide is the better candidate for gathering information before acting.
2 · A loss function turns belief into action
Name what outcomes cost. For attrition there are two error types and they are wildly asymmetric:
| They actually leave | They actually stay | |
|---|---|---|
| You reach out | conversation cost c, exit possibly averted |
conversation cost c (small, sometimes positive) |
| You do nothing | regretted exit cost R (≈ ½–2× salary + ramp) |
nothing lost |
A regretted exit R dwarfs a retention conversation c. That asymmetry — not the raw probability — is what should drive the cut-off. A decision made without writing down the loss function is a decision that has silently assumed a symmetric one.
3 · Average the utility over the posterior — don't plug in the median
The expected utility of an action a integrates over your uncertainty:
E[U(a)] = ∫ U(a, θ) · p(θ | data) dθ
You compute this for each candidate action and choose the largest. Crucially you average U over the posterior, rather than evaluating U at the posterior mean. When the utility is non-linear (and asymmetric costs make it so), E[U(θ)] ≠ U(E[θ]) — plugging in the median throws away exactly the tail risk the decision is supposed to manage.
4 · The decision rule is a threshold, set by costs not by p < 0.05
For the act/don't-act case the rule reduces to a probability threshold. Reaching out beats doing nothing when its expected benefit clears its cost:
act when p(leave) · (value retained) > c
i.e. when p(leave) > p* = c / (value retained)
The data picks the posterior; the costs pick the cut. With our numbers, a p* ≈ 0.15 means the employee at median 0.22 is comfortably over the line. There is nothing magic about 0.05 — significance thresholds answer a different question and have no business setting an operational cut-off.
5 · Sometimes the right action is to buy information
When the 80% interval straddles p*, you genuinely don't know which side of the threshold you're on. The expected-utility-maximising move may be neither "act" nor "wait" but reduce the uncertainty — a stay interview, a pulse survey, another month of data — provided the cost of that information is less than the decision swing it could produce. This is the value-of-information view, and it is why "the interval straddles the line" is an answer, not a failure.
Act II — the communication craft
The posterior is the analyst's; the decision is the stakeholder's. Communication is the bridge, and most of its failures are predictable.
1 · Lead with the decision, not the model
The first sentence is the recommended action — "I'd reach out to these twelve people this quarter." Priors, link functions, R-hat and LOO are answers to questions the stakeholder hasn't asked yet. Open with what to do; keep the method in your back pocket for when they ask "how do you know?"
2 · Numbers as natural frequencies
"Of 100 people like this, about 22 leave within a year" lands where "p = 0.22" slides off. Decades of risk-communication research show people reason far more accurately with natural frequencies (counts out of a stated whole) than with probabilities or percentages. Convert before you present, and keep the denominator fixed across comparisons.
3 · Always carry the interval
A point estimate spoken aloud is heard as a certainty. Say the range every time: "about 1 in 5 — could be as low as 1 in 9 or as high as 1 in 3." The interval is not a hedge or an apology; it is the part of the answer that tells the stakeholder how hard to lean on it. Dropping it is the single most common and most expensive miscommunication in applied modelling.
4 · Predictive ≠ causal — say it out loud
The model flags who is at risk; it does not tell you what will fix it. The coefficient on engagement is not the effect of raising engagement. State plainly that acting on a predictor is a bet, not a guarantee, and that testing whether the intervention works is a separate (causal) question. Letting a stakeholder hear "raise engagement and they'll stay" from a predictive model is a failure of communication, not just of method.
5 · Name what acting on it could break
Three failure modes belong in the same breath as the recommendation:
- Gaming / feedback. Once people know the score exists and how it's used, the behaviour that produced the data changes, and the model decays.
- Fairness of the action. A perfectly calibrated model can still drive disparate action across protected groups. Decide the fairness criterion deliberately, and remember that omitting a protected attribute doesn't remove its influence (proxies remain).
- Self-fulfilling labels. Flagging someone "high flight-risk" can change how they're treated and thereby cause the exit it predicted.
The misreads to pre-empt
These are the specific wrong conclusions a stakeholder will reach unless you head them off:
- "The model says she'll leave." No — it says roughly a 1-in-5 chance, with real uncertainty around it.
- "0.22, so basically a quarter, so act" without ever asking what acting and not acting cost. The number doesn't decide; the loss function does.
- "The model found that engagement drives attrition." It found a predictive association; the causal claim needs a different design.
- "It was 0.22 last quarter and 0.19 now, so we improved." Two overlapping intervals are not a trend. Show the uncertainty before anyone reads movement into noise.
Where this sits in the series
Plate II — the genealogy of distributions. Plate III — the workflow that fits one to a question and yields a posterior. Plate IV — which model shape each decision demands. Plate V (this) — what to do with the posterior, and how to say it. It is deliberately the last plate: every earlier move exists to support a decision that someone who never saw the math has to make and own.
Possible Plate VI — By Comparison: model selection, stacking and the honest reporting of "we tried several models," which is the part of the workflow a decision-maker most often needs translated.
Gamma — hero tile
one distribution in full · open the .svg in a browser for the brush type
Distributions Poster — Contents Sketch
Plate II in a series on the Bayesian modeling workflow (after Gelman et al., Bayesian Data Analysis / Regression and Other Stories). This sheet plans the content; the visual language is fixed by the Gamma hero tile.
What the plate covers
A field guide to the distributions you actually reach for when specifying likelihoods and priors, drawn as a connected family rather than an alphabetical list. Each distribution gets one tile with a fixed anatomy (see below). The recommended set — broad enough to be a reference, tight enough to stay legible at arm's length on a wall:
Discrete
- Bernoulli — single yes/no trial
- Binomial — count of successes in n trials
- Poisson — count of events in fixed time/space
- Negative Binomial — count with overdispersion (Poisson–Gamma mixture)
- Geometric — trials until first success
- Categorical / Multinomial — counts across k outcomes
Continuous
- Uniform — flat over an interval
- Normal (Gaussian) — the central hub
- Student-t — heavy-tailed Normal (robustness)
- Cauchy — t with 1 df; weakly-informative prior staple
- Exponential — waiting time, memoryless
- Gamma — waiting time for the k‑th event (hero tile)
- Beta — proportion / probability on (0,1)
- Log-normal — positive, multiplicative
- Weibull — time-to-failure with shape
- Chi-squared — sum of squared Normals
Multivariate (a small upper band)
- Multivariate Normal — correlated continuous vector
- Dirichlet — vector of proportions (Beta generalized)
The relationship web (the edges that make it a family)
These are the connections the "relationship web" layout would draw. They're the most interesting content of the poster and worth foregrounding regardless of final layout.
| From | Relationship | To |
|---|---|---|
| Bernoulli | sum of n i.i.d. | Binomial |
| Binomial | n→∞, np→λ | Poisson |
| Binomial | n→∞ (CLT) | Normal |
| Poisson | mix rate over Gamma | Negative Binomial |
| Geometric | special case (1 failure) | Negative Binomial |
| Exponential | sum of k i.i.d. | Gamma |
| Exponential | = Gamma(k=1) | Gamma |
| Gamma | shape (ν/2, scale 2) | Chi-squared |
| Gamma | k→∞ (CLT) | Normal |
| Normal | ratio / 1 df | Cauchy |
| Normal | with estimated variance | Student-t |
| Beta | 2-category case of | Dirichlet |
| Normal | exp of | Log-normal |
| Beta | conjugate prior for | Bernoulli / Binomial |
| Gamma | conjugate prior for | Poisson rate |
| Dirichlet | conjugate prior for | Multinomial |
| Normal | conjugate prior for | Normal mean |
The conjugacy edges (last four) are what would drive the "by Bayesian role" layout — they pair each likelihood with its natural prior.
Use-case map — how each narrative supplies the example
You wanted to compare the three narrative worlds before committing. Here's the same set of distributions populated three ways, so you can see which world covers the family most naturally. (Cells show the synthetic-data story each tile would tell.)
| Distribution | 🍵 Tea house | 🏺 Kiln / pottery | 🔭 Mountain observatory |
|---|---|---|---|
| Bernoulli | guest orders matcha? (y/n) | does a piece survive firing? | is the night clear? |
| Binomial | matcha orders out of 20 guests | survivors per kiln load | clear nights per lunar month |
| Poisson | guests arriving per hour | chips/defects per glaze batch | photons / meteors per minute |
| Neg. Binomial | arrivals, busier-than-Poisson days | defects clustered by clay batch | meteor counts during a shower |
| Geometric | guests until first tea-ceremony booking | firings until first crack | nights until first clear sky |
| Categorical/Multinomial | tea type chosen (sencha/houji/matcha) | glaze finish grade (A/B/C) | object class (star/planet/galaxy) |
| Uniform | random table assignment | kiln shelf position | telescope slew angle |
| Normal | water temperature at pour | kiln peak temperature | measurement/instrument error |
| Student-t | ratings with occasional outliers | temperature with sensor spikes | faint-source flux, heavy tails |
| Cauchy | tip size (wild outliers) | shrinkage outliers | resonance line width |
| Exponential | gap between guests | time between cracks | gap between detections |
| Gamma | time until k‑th guest (hero) | time until k‑th crack | time until k‑th photon |
| Beta | fraction of guests reordering | pass rate of a kiln load | fraction of usable frames |
| Log-normal | bill size per table | particle/grain size | galaxy brightness |
| Weibull | teapot lifespan | time-to-failure of a kiln element | component reliability |
| Chi-squared | goodness-of-fit of demand model | variance test on temperatures | spectral fit statistic |
| Multivariate Normal | temp & steep-time jointly | shrinkage in x and y | RA/Dec position errors |
| Dirichlet | tea-type market shares | grade mix across loads | class proportions in a survey |
Read of the three worlds: the tea house covers the discrete/waiting-time families most charmingly and suits the ink aesthetic; the observatory is strongest for measurement-error and counting (Normal, Poisson, t) and feels the most scientifically "serious"; the kiln is the most tactile and covers reliability (Weibull) best. They're not mutually exclusive — a strong option is to pick one as the spine and let two or three tiles borrow from another world where the example is irresistible.
Tile anatomy (locked by the hero)
Every tile carries, in this order: family/section eyebrow → name + parametric notation → translucent ink density/PMF plot with a synthetic-data rug → the defining equation (PDF/PMF) → parameters with support → moments (mean, variance, mode) → "family ties" line with brush arrows → a corner seal. Discrete tiles use brush-stroke stems/lollipops instead of filled washes.
Visual specification
- Paper: warm washi
#f4f0e5. Ink: sumi black#211e1a. - Grayscale via translucency only: layered fills at ~10 / 12 / 14% opacity; strokes at 66–90% and 1.7–2.4 px. Overlaps darken naturally — this is the whole grayscale strategy, no extra grays needed.
- One accent option: a single vermilion seal (
#9e3b2e) is the traditional move if you ever want one spot of color; the hero keeps it monochrome to honor the black-and-white brief. Easy to toggle. - Type: display & math in a humanist serif (recommend EB Garamond or Spectral, both free/embeddable); eyebrows & axis labels in a geometric/humanist sans with wide tracking (recommend Gill Sans, Futura, or Inter tracked +3). Math is set in serif italic.
- Motifs: a faint enso (zen brush ring) behind the title; brush-stroke underlines; arrowheads as small ink chevrons.
- Print: delivered as vector SVG → scales to 24×36 in with no loss; export to PDF/CMYK for the printer. For crisp math at large format, the final pass can typeset equations in LaTeX → SVG and drop them into each tile.
Suggested next step
Pick a layout and a narrative spine from the studies, and I'll build the full 24×36 plate — all ~18 tiles in the hero's style, wired into the chosen organizing logic. After that, we can template the remaining plates in the series (priors, likelihoods, model checking, workflow loop).
LPM vs. logit / probit
interactive explainer