Skip to content

Main content

Ballot Abstention Coverage Table

Explicit supplied candidate IDs and finite ballot observations only; no voter authenticity, eligibility, audit certification or election-result guarantee. Report whole-ballot abstentions separately from candidate non-observation in partial rankings/approval sets; missing does not imply opposition.

Loading tool…

Description

Separate empty-ballot counts from each candidate’s observation and non-observation counts.

A ballot record is an explicit selection or ordered list of literal candidate IDs. A tally depends on its rule: first choice, approval, positional scores and pairwise comparisons use different evidence. Partial rankings do not by themselves define a preference for or against omitted candidates. Counts and weights describe supplied records, not certified voters.

Separate empty-ballot counts from each candidate’s observation and non-observation counts.

When to use this tool

Use this report to separate whole-record abstention from candidate omission in partial ballots.

How to use the tool and how it works

  1. Enter candidates, ballotsJson using the definitions below. Serialize JSON text fields in the decoded shape shown below.
  2. Run the operation. Resolve input-format errors before interpreting an output.
  3. Read result.ballots, result.abstentions, result.candidates, using the stated boundary, ordering, sign and absence conventions.

Count supplied ballots and empty ballots. For each candidate, count ballots containing it and ballots not containing it.1

Input fieldMeaning and unitsAccepted input
candidatesDistinct literal candidate IDs in the output row/column order.Dense list of at most 128 literal strings, each at most 8,192 UTF-16 units.
ballotsJsonJSON array of ballot arrays of literal candidate IDs. Each row is a selection or partial ranking according to this operation; empty ballots are allowed.Text, at most 8,192 UTF-16 code units; narrower grammar/range rules also apply.

These decoded structures show the examples inside JSON text fields. Supply their serialized JSON strings as input.

json
{
  "ballotsJson": [
    [
      "a",
      "b"
    ],
    [
      "b",
      "a"
    ],
    []
  ]
}
Output fieldInterpretation
resultObject containing the fields below.
result.ballotsNumber of supplied ballot records, including empty ones.
result.abstentionsNumber of empty ballot records, without weighting.
result.candidatesOne {candidate,observed,notObserved} record per candidate in declared bank order.
json
{
  "input": {
    "candidates": [
      "a",
      "b",
      "c"
    ],
    "ballotsJson": "[[\"a\",\"b\"],[\"b\",\"a\"],[]]"
  },
  "output": {
    "result": {
      "ballots": 3,
      "abstentions": 1,
      "candidates": [
        {
          "candidate": "a",
          "observed": 2,
          "notObserved": 1
        },
        {
          "candidate": "b",
          "observed": 2,
          "notObserved": 1
        },
        {
          "candidate": "c",
          "observed": 0,
          "notObserved": 3
        }
      ]
    }
  }
}

Limitations and assumptions

  • A partial or approval ballot’s omission is an observation gap, not necessarily opposition. The counts describe records and do not establish turnout or voter eligibility.
  • Candidate banks use distinct exact string IDs. Unless an audit explicitly accepts them for reporting, unknown IDs and repeated IDs within a ballot are rejected. Rankings may be partial. These operations do not authenticate records, infer voter intent or apply jurisdiction-specific election rules.
  • Every declared outer field is required and unknown outer fields are rejected. Strings and JSON text have size limits, lists are bounded to 128 entries, and JSON nesting/node counts are bounded. Tighter operation-specific bounds stated above take precedence.
  • Numeric outputs must remain finite and within safe-integer magnitude. Original record indexes and cell coordinates are zero-based; stated half-open ranges exclude their end.

Alternative or Complementary methods

Choose a tally rule before comparing outcomes. Audit candidate identity and repeated entries first, retain the treatment of empty and partial ballots, and apply any election-specific eligibility or tie-breaking procedure separately.

References

  1. Tool behavior and example: Ballot Abstention Coverage Table — tool.io

Similar or alternative tools