Skip to content

Vote splitting — two chocolates split the majority

Generated from vote_splitting3.yaml — do not edit by hand. Regenerate: python STARVote_LH_tabulation_engine/tools_adam/scripts/build_yaml_pages.py.

Method: STAR (single winner) · 1 seat · Expected winner: DarkChoco

Scenario

Two chocolate flavors court the same majority while Vanilla consolidates the rest — the classic vote-splitting shape. STAR shrugs it off: scores add up per candidate, BOTH chocolates reach the runoff, and DarkChoco wins the head-to-head 14-7. The blocs: entry makes the engine quantify the Chocolate split explicitly ([Vote-Splitting Check]). For versions where splitting actually flips a Choose-One winner, see method_comparisons/split_voting/.

Parameters (from the YAML)

blocs:
  Chocolate: [DarkChoco, MilkChoco]

Ballots

The ballots as marked — the filled bubble is the score given, and the score is the number in its column:

# Ballot as marked DarkChoco MilkChoco Vanilla
1 A 0–5 STAR ballot — 8 voters — love dark, like milk, vanilla is OK: DarkChoco 5, MilkChoco 4, Vanilla 3. 5 4 3
2 A 0–5 STAR ballot — 7 voters — love milk, like dark, no vanilla: DarkChoco 4, MilkChoco 5, Vanilla 0. 4 5 0
3 A 0–5 STAR ballot — 6 voters — love vanilla, mild on chocolate: DarkChoco 2, MilkChoco 1, Vanilla 5. 2 1 5

The same ballots as the file records them:

Row 1 = candidate names; each later row is one voter's 0–5 scores (a N × prefix = N identical ballots).

Count:DarkChoco,MilkChoco,Vanilla
8:5,4,3   # love dark, like milk, vanilla is OK
7:4,5,0   # love milk, like dark, no vanilla
6:2,1,5   # love vanilla, mild on chocolate

What the engine says

The count, step by step — the rounds and how the winner is reached:

[Vote-splitting check]
  Choose-One first choices: DarkChoco 8, MilkChoco 7, Vanilla 6
  Plurality winner: DarkChoco (8, 38.1%)
  Bloc 'Chocolate' = DarkChoco, MilkChoco: combined 15 (71.4%); winner DarkChoco is INSIDE it.
  => No vote splitting: the bloc's own front-runner (DarkChoco) also wins
     Choose-One overall.

--- STAR Voting Method (single winner) ---

[STAR Voting]
 Tabulating 21 ballots.
Count × DarkChoco,MilkChoco,Vanilla
    8 ×         5,        4,      3
    7 ×         4,        5,      0
    6 ×         2,        1,      5

[STAR Voting: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   DarkChoco     -- 80 -- First place
   MilkChoco     -- 73 -- Second place
   Vanilla       -- 54
 DarkChoco and MilkChoco advance.

[STAR Voting: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   DarkChoco     -- 14 -- First place
   MilkChoco     --  7
   Equal Support --  0
 DarkChoco wins.
   Runoff math:
     21  ballots cast
   −  0  Equal Support (no preference between the two finalists)
     ──
     21  voters with a preference  (majority = 11)
           DarkChoco 14 (67%)  ·  MilkChoco 7 (33%)

[STAR Voting: Winner — STAR Voting Method (single winner)]
 DarkChoco

Full audit — preference matrix, Condorcet, and score distribution

--- Runoff (Preference) Matrix ---
Head-to-head / pairwise comparison
Legend: For - Equal Support - Against
        * indicates Top 2 Finalist
                  |  * DarkChoco  | * MilkChoco  |    Vanilla   |
-----------------------------------------------------------------
    * DarkChoco > |      ---      |14 -  0 -  7  |15 -  0 -  6  |
    * MilkChoco > |  7 -  0 - 14  |     ---      |15 -  0 -  6  |
        Vanilla > |  6 -  0 - 15  | 6 -  0 - 15  |     ---      |

[Condorcet Winner]
  Condorcet Winner: DarkChoco — matches the STAR winner

[Condorcet Loser]
  Condorcet Loser: Vanilla — loses every head-to-head matchup

[Score Distribution] (how many ballots gave each star rating)
                Score
Candidate  5  4  3  2  1  0  | Total   Avg
DarkChoco  8  7  0  6  0  0  |    80   3.8
MilkChoco  7  8  0  0  6  0  |    73   3.5
Vanilla    6  0  8  0  0  7  |    54   2.6

Everything in one file: the _tabulated mirror (regenerated on every run; every analysis forced on).

Run it yourself:

python STARVote_LH_tabulation_engine/starvote_larry_hastings.py 01_STAR/02_Examples/cases/vote_splitting3.yaml

See also

More cases in this set: 02a_c3_b1_three-candidates · 02b_c3_b2_three-candidates · 03a_c3_b3_style-bullet-vote · 03b_c3_b3_1_style-protest-vote · 03b_c3_b3_2_expand_style-protest-vote · 03c_c6_b8_style-gallery · 03d_c5_b5_style-gallery-five-more · 04b_c4_b3_display-options-all · 05a_c5_b3_unanimous-ballots · 06a_c9_b3_large-field-equal-support · 06b_c9_runoff-overturns-leader · 09_c4_b100_tennessee-capital · abstentions · bv2182_tg4779_faq_runoff_reversal · bv2184_fyy886_lunch_vote · bv2187_qrw6wb_ann-bob-cal · bv2256_c8h3tb_traditional_style · bv2263_xw23m9_over_50_percent · csv_ambiguity_ex1_c4_b8 · display_options_demo · equal_support_runoff_demo · quorum_demo_c3_b6 · quorum_fail_demo_c3_b6 · same_mean_different_spread_c2_b5 · star_ala_approval · three_winners_cw_score_runoff · vote_splitting · vote_splitting2 · vote_splitting_scenario1_spoiler · vote_splitting_scenario2_bloc_leads · vote_splitting_scenario3_outsider_wins