The model
How we built this
This analysis uses Bayesian statistics to help us understand the uncertainty
around any given candidate's vote totals. At its core, Bayesian techniques help
you to mathematically quantify every quantity you don't know — how much a
slate was worth, how generously a county's room spread its votes, etc. Each
piece of evidence narrows the range of uncertainty on our estimates of those
factors. A model fit this way states assumptions up front, then uses data to
find the parameters that best represent that data.
We model every candidate's vote total like this:
Breaking that down:
- votes ~ BetaBinomial(ballots, p, κ). We assume that each
candidate's total is a stack of yes/no approvals out of their county's
ballots cast; p is the share of the room that marks them, and
κ is a "spread" term that absorbs ordinary person-to-person variation.
- County baseline. What a name collects in that room
before anything else is known. Rooms differ enormously — Cumberland
cast 6,848 ballots to Piscataquis's 94 — but modeling them together
allows small counties to "learn" from large ones.
- Ballot position. Where the name falls
alphabetically.
Research
on name-order effects shows that being listed earlier matters,
especially in low-information races on ballots that ran as long as
Cumberland's 1,296 names.
- Slate boost(s). Whether the name appeared on the
Jackson, Bellows, or Shah list, or any combination thereof.
By stating these assumptions up front, we can use them to calculate
the expected result, as well as
the degree to which our observed result differed. Whatever remains for
any one candidate once county, ballot position, and slate are priced in
— actual votes minus the model's expectation — is fairly called their
personal vote. As an added feature of Bayesian statistics,
every effect arrives with an uncertainty range instead of just a point
guess. See the Method section below for details, or scroll on to see
it in practice.
Your turn
Look up a delegate card
All 3,666 candidates from the July 18–19 county meetings are here.
You start with a card dealt at random — search a name, deal again, or
jump to any county's top vote-getter. Chances are you know someone in
the deck.
Cards show official results (Maine Democratic Party) against this model's
expectations. The shaded band on the actual bar is the model's 95%
expected range for a card like that one; a red tag appears only on the
5% of cards that landed outside their band — everything untagged is
within ordinary spread. A card's "personal vote" is a model residual,
not a judgment — for slate members, matching the prediction just means
the slate was the story. Public roles are noted only for verified
current state legislators.