PENNER STRATEGYResearch and analysis

Ballot analysis: data and calculations

Washington ballot analysis

Source dates: August 25, 2026 final ballot status; 2024 EAVS version 2; Census 2024 county boundaries.

Install Python 3, matplotlib, numpy and pyshp. Download the source archives linked in supporting-sources.json. Extract the August 25 final ballot CSV. Its hash is for the extracted CSV, while the Census and EAVS hashes are for ZIPs.

Run:

python3 reproduce_support.py "Ballot Status Report 2026-08-25_Final.csv" cb_2024_us_county_500k.zip 2024_EAVS_for_Public_Release_nolabel_V2_csv.zip
python3 wa_ballot_check.py "Ballot Status Report 2026-08-25_Final.csv"
python3 render_chart.py

The supporting script recomputes county and precinct counts, threshold sensitivity, the Snohomish ZIP-prefix comparison and Washington EAVS totals from the original files. Assertions check row count, statewide counts, county coverage, the earlier gist threshold result and the EAVS partition total. Graphics are outputs, not inputs to the calculations.

Mail and Drop Box are exact categories except the explicitly labeled Snohomish comparison, which combines Mail and Non-Standard Mail. Precinct keys combine county and name, strip whitespace and combine case variants. Statewide and new precinct comparisons include all counties. County maps use Census names matched to all 39 county names. ZIP-prefix analysis uses the first three characters of the recorded ZIP field. No party preferences are inferred from rejected ballots.

The earlier research contains additional historical, distance and causal interpretations. Those are outside this reproduced package. The charts here are recreated from the final source and do not certify those other claims.

Sources and production

Silphium is Penner Strategy’s research system. These studies use AI-assisted analysis and code-generated calculations and charts. The linked review records describe the calculation checks and remaining limitations.

Earlier publication comparison

An earlier publication excluded counties reporting zero late ballots, giving 7,115 qualifying precincts rather than 7,132. The count of precincts with late rates of at least 5% is 1,694 under either rule; both proportions round to 23.8%. The current calculation includes every county.