Categories
Election Data Analysis Election Integrity technical Uncategorized

Technical issues with Enhanced Voting Election Night Return JSON files

As I was going through and processing the (new) VA election night reporting data provided by Enhanced Voting, I noticed a number of technical issues with the data feed. I’ve tried to capture them here in the attempt to help assist the VA Department of Elections in correcting bugs and implementation issues with their new reporting format.

While the new ENR data feed is commendable in that it presents the data for the state in an easily obtainable JSON formatted file, the following issues were observed in my processing of the data. I am happy to provide specific examples of these issues to the Enhanced Voting development team in order to help address them.

  • Inconsistent JSON formats being returned. Sometimes locality group results information is a cell of structures, sometimes an array.
  • Occasional mal-formed JSON, missing opening or closing parentheses or brackets causing the file to not be able to be parsed by JSON importing functions in python, MATLAB, etc.
  • Occasional duplicated locality precinct group result information
Categories
Election Data Analysis Interesting technical

Observed indications of cross party voting in VA 2024 ongoing primaries

There are currently two completely separate but simultaneous primary elections being held in VA, with actual Election Day coming up fast on March 5th. As part of EPEC’s data analysis on the ongoing Democrat and Republican primaries, I took some time to look at the distribution of voter participation. VA does not have voter registration by party, but participation in primary elections is often used as a surrogate method to try and estimate a voter leaning.

I was specifically interested as to how many “cross-over” voters were participating in each parties primary. There have been multiple news articles (here, for example) discussing the potential for democrats to cross-vote in the 2024 Primaries, and I wanted to see if I could observe evidence of that behavior in the data.

Results:

As can be seen from the image below, there is definitely evidence of crossover voting occurring, with historically democratic primary voters crossing over and voting in this years (2024) Republican primary.

Approximately 17.5% of the 109,395 ballots cast in the 2024 VA Republican primary are associated with historically Democrat leaning registrants. Only 0.35% of the 159,505 ballots cast in the 2024 VA Democratic primary are associated with historically Republican leaning registrants. [Note this plot was updated on 2024-03-11 to reflect the latest values. The previous results from mid-February had the number of crossover D->R voters at ~12%]

Method:

Step 1: Compute an estimate of voter leaning.

The data utilized in this analysis all comes directly from the VA Dept of Elections (“ELECT”) and includes the statewide Registered Voter List (“RVL”) and Voter History List (“VHL”) files dated 03/11/2024, as well as the Daily Absentee List (“DAL”) files corresponding to each of the ongoing Democrat and Republican primaries.

An estimation of each party leaning is first computed by going through the VHL and for each unique voter in the VHL summing the number of Democrat or Republican primaries that voter has participated in historically. We then take the difference of these two fields and divide by the total number of election contests the voter has participated in. This gives us a resultant estimate of the “leaning” for each unique voter.

leaning = (# Dem Primaries – # Rep Primaries) / (# of Total Contests)

A leaning < 0 indicates a Republican lean, and > 0 indicates a Democratic lean. A voter might have a lean == 0 if they had a balanced participation in previous primaries, or if there is no voter history for that particular voter.

Step 2: Plot the histogram of voter leaning for ballots cast so far in both the Democratic and Republican primaries. Additionally plot the Computed voter leaning for the entire RVL as a reference.

Categories
Election Data Analysis Election Forensics Election Integrity

2024 VA March Republican Primary Election DAL File Metrics

Below you will find the current summary data and graphics from the VA 2024 Republican Primary Election Daily Absentee List files. We pull the DAL file everyday and track the count of each specific ballot category in each daily file.

Note: Page may take a moment to load the graphics objects.

Linear Scale Plot:

Place your cursor over the series name in the legend at right to see the series highlighted in the graphic. Place your cursor over a specific data point to see that data points value.

Logarithmic Scale Plot:

The logarithmic plot is the same underlying data as the linear scale plot, except with a logarithmic y-scale in order to be able to compress the dynamic range and see the shape of all of the data curves in a single graphic. Place your cursor over the series name in the legend at right to see the series highlighted in the graphic. Place your cursor over a specific data point to see that data points value.

Summary Data Table:
Print  CSV  Copy  

The underlying data for the graphics above is provided in the summary data table.

Additional Data:

Additional CSV datasets stratified by Locality, City, Congressional District, State House District, State Senate District, and Precinct are available here.

Data column descriptions:
  • ISSUED” := Number of DAL file records where BALLOT_STATUS= “ISSUED”
  • NOT_ISSUED” := Number of DAL file records where BALLOT_STATUS= “NOT ISSUED”
  • PROVISIONAL” := Number of DAL file records where BALLOT_STATUS= “PROVISIONAL” and APP_STATUS=”APPROVED”
  • DELETED” := Number of DAL file records where BALLOT_STATUS= “DELETED”
  • MARKED” := Number of DAL file records where BALLOT_STATUS= “MARKED” and APP_STATUS=”APPROVED”
  • ON_MACHINE” := Number of DAL file records where BALLOT_STATUS= “ON_MACHINE” and APP_STATUS=”APPROVED”
  • PRE_PROCESSED” := Number of DAL file records where BALLOT_STATUS= “PRE-PROCESSED” and APP_STATUS=”APPROVED”
  • FWAB” := Number of DAL file records where BALLOT_STATUS= “FWAB” and APP_STATUS=”APPROVED”
  • MAIL_IN” := The sum of “MARKED” + “PRE_PROCESSED”
  • COUNTABLE” := The sum of “PROVISIONAL” + “MARKED” + “PRE_PROCESSED” + “ON_MACHINE” + “FWAB”
  • MILITARY” := Number of DAL file records where VOTER_TYPE= “MILITARY”
  • OVERSEAS” := Number of DAL file records where VOTER_TYPE= “OVERSEAS”
  • TEMPORARY” := Number of DAL file records where VOTER_TYPE= “TEMPORARY”
  • MILITARY_COUNTABLE” := Number of DAL file records where VOTER_TYPE= “MILITARY” and where COUNTABLE is True
  • OVERSEAS_COUNTABLE” := Number of DAL file records where VOTER_TYPE= “OVERSEAS” and where COUNTABLE is True
  • TEMPORARY_COUNTABLE” := Number of DAL file records where VOTER_TYPE= “TEMPORARY” and where COUNTABLE is True

All data purchased by Electoral Process Education Corp. (EPEC) from the VA Dept of Elections (ELECT). All processing performed by EPEC.

If you like the work that EPEC is doing, please support us with a donation.

Categories
Election Data Analysis Election Forensics Election Integrity technical

2024 VA March Democratic Primary Election DAL File Metrics

Below you will find the current summary data and graphics from the VA 2024 Democratic Primary Election Daily Absentee List files. We pull the DAL file everyday and track the count of each specific ballot category in each daily file.

Note: Page may take a moment to load the graphics objects.

Linear Scale Plot:

Place your cursor over the series name in the legend at right to see the series highlighted in the graphic. Place your cursor over a specific data point to see that data points value.

Logarithmic Scale Plot:

The logarithmic plot is the same underlying data as the linear scale plot, except with a logarithmic y-scale in order to be able to compress the dynamic range and see the shape of all of the data curves in a single graphic. Place your cursor over the series name in the legend at right to see the series highlighted in the graphic. Place your cursor over a specific data point to see that data points value.

Summary Data Table:
Print  CSV  Copy  

The underlying data for the graphics above is provided in the summary data table.

Additional Data:

Additional CSV datasets stratified by Locality, City, Congressional District, State House District, State Senate District, and Precinct are available here.

Data column descriptions:
  • ISSUED” := Number of DAL file records where BALLOT_STATUS= “ISSUED”
  • NOT_ISSUED” := Number of DAL file records where BALLOT_STATUS= “NOT ISSUED”
  • PROVISIONAL” := Number of DAL file records where BALLOT_STATUS= “PROVISIONAL” and APP_STATUS=”APPROVED”
  • DELETED” := Number of DAL file records where BALLOT_STATUS= “DELETED”
  • MARKED” := Number of DAL file records where BALLOT_STATUS= “MARKED” and APP_STATUS=”APPROVED”
  • ON_MACHINE” := Number of DAL file records where BALLOT_STATUS= “ON_MACHINE” and APP_STATUS=”APPROVED”
  • PRE_PROCESSED” := Number of DAL file records where BALLOT_STATUS= “PRE-PROCESSED” and APP_STATUS=”APPROVED”
  • FWAB” := Number of DAL file records where BALLOT_STATUS= “FWAB” and APP_STATUS=”APPROVED”
  • MAIL_IN” := The sum of “MARKED” + “PRE_PROCESSED”
  • COUNTABLE” := The sum of “PROVISIONAL” + “MARKED” + “PRE_PROCESSED” + “ON_MACHINE” + “FWAB”
  • MILITARY” := Number of DAL file records where VOTER_TYPE= “MILITARY”
  • OVERSEAS” := Number of DAL file records where VOTER_TYPE= “OVERSEAS”
  • TEMPORARY” := Number of DAL file records where VOTER_TYPE= “TEMPORARY”
  • MILITARY_COUNTABLE” := Number of DAL file records where VOTER_TYPE= “MILITARY” and where COUNTABLE is True
  • OVERSEAS_COUNTABLE” := Number of DAL file records where VOTER_TYPE= “OVERSEAS” and where COUNTABLE is True
  • TEMPORARY_COUNTABLE” := Number of DAL file records where VOTER_TYPE= “TEMPORARY” and where COUNTABLE is True

All data purchased by Electoral Process Education Corp. (EPEC) from the VA Dept of Elections (ELECT). All processing performed by EPEC.

If you like the work that EPEC is doing, please support us with a donation.

Categories
Election Integrity mathematics technical Uncategorized

Ranked Choice Voting: An Example of a Perverse Social Choice Function

The below is based on the discussion of “Single Transferrable Vote” (“STV”) methods in [1], published in 1977. STV has more recently been called “Ranked Choice Voting” (RCV) or “Instant Runoff Voting” (IRF), among other names, by lobbying groups that are currently pushing for its incorporation into our voting systems. Irrespective of the name used, it represents a family of voting methods, with slightly different variants depending on how votes are removed and/or redistributed in each successive round of voting. [2][5]

What does STV/RCV/IRV entail, in general:

The core system is a proportional voting system, where voters are required to rank order their preferred candidate selections and all ballots are collected and centralized tabulation is performed in multiple rounds until winner(s), or candidates that have support above a specified quota (or “threshold”), are allocated.

A common definition of the quota utilized in STL/RCV/IRV systems is the “Droop quota”, and is defined as:

q = FLOOR( # of Voters / (# of Seats + 1) + 1)

In a given round the candidate with the least support is eliminated from further evaluation. Surplus votes from candidates that go over the droop threshold and votes from eliminated candidates can be distributed amongst remaining candidates for subsequent rounds. Surplus vote distribution is only applicable when multiple winners are allowed in a contest.

Vote allocation procedure for STV/RCV/IRV. Reprinted from [1].

The arguments used to support and push for RCV have not significantly changed since the time that the original paper was published, but the terms and language utilized have been modified. The authors note that much of the rationale in pushing for STV was centered around the ideas of inclusivity and making sure voters are able to cast “effective” ballots.

“Modem proponents emphasize the system’s effective representation of minorities, its sensitivity and accuracy in ‘measuring changes in popular will,’ and its tendency to encourage independent (nonparty line) voting.”

Doron, G., & Kronick, R. (1977) [1]

The same arguments have been recently repeated and pushed to legislators and the media. The name has changed from “Single Transferrable Vote” to “Ranked Choice Voting” or “Instant Runoff Voting”, but the argument remains largely the same, as can be seen by simply visiting the websites and promotional material for any of the current groups that are lobbying for RCV to be incorporated [3][4].

The issue pointed out by Doron & Kronick:

The authors in [1] note that the STV/RCV/IRV system allows for a “perversion” (their words, not mine) whereby a candidates chances to be selected as a winner can potentially be negatively impacted even when receiving increased support.

“… a function that permitted an increased vote for a candidate to cause a decline in that candidate’s rank in the social ordering-would probably strike most of us as a rather absurd, even perverse, method of arriving at a social choice. Consequently, some writers refer to this condition as the ‘Non-Perversity’ condition. All of the democratic social choice functions that have been considered in the literature were assumed to guarantee this condition, but the Single Transferrable Vote system does not.”

Doron, G., & Kronick, R. (1977) [1]

The authors present a hypothetical example to demonstrate the issue. Suppose we have 3 candidates (Candidate X, Candidate Y, Candidate Z) and two different voting groups, which we will refer to as group D and D’. Both D and D’ are fairly similar and only disagree on the relative ranking of two specific candidates.

In the tables below, recreated from [1], the only difference in the two voting group selections is that candidate X receives more support than candidate Y in group D’. However, if using the voting rules as described above candidate X wins in D, and loses in D’ even though X has increased support in D’.

# of VotersFirst ChoiceSecond ChoiceThird Choice
6XYZ
2YXZ
4YZX
5ZXY
Voting group D selections. Reprinted from [1].
# of VotersFirst ChoiceSecond ChoiceThird Choice
6XYZ
2XYZ
4YZX
5ZXY
Voting group D’ selections. Reprinted from [1].

There are 17 voters in each case, and only 1 seat available. Therefore, the Droop quota/threshold is 9 votes required in order to declare a winner.

In group D it is candidate Z that has the least amount of votes in the first round and is eliminated, therefore advancing 5 second-choice votes for X into the next round. Candidate X passes the threshold and wins in the second round.

In group D’, where candidate X received more support than candidate Y, it is candidate Y that has the least amount of votes in the first round and is eliminated, therefore advancing 4 second-choice votes for Z into the next round. Candidate Z then passes the threshold and wins in the second round.

Bibliography:

  1. Doron, G., & Kronick, R. (1977). Single Transferrable Vote: An Example of a Perverse Social Choice Function. American Journal of Political Science, 21(2), 303–311. https://doi.org/10.2307/2110496
  2. https://ballotpedia.org/Ranked-choice_voting_(RCV)
  3. https://campaignlegal.org/democracyu/accountability/ranked-choice-voting
  4. https://www.hhh.umn.edu/research-centers/center-study-politics-and-governance/research-and-initiatives-cspg/ranked-choice-voting
  5. Brandt F, Conitzer V, Endriss U, Lang J, Procaccia AD, eds. Handbook of Computational Social Choice. Cambridge: Cambridge University Press; 2016. https://doi.org/10.1017/CBO9781107446984
Categories
Election Data Analysis Election Forensics Election Integrity programming technical Uncategorized

Records of Early Ballots Cast Do Not Have Corresponding Registration Records in VA 2023 General Election Data

Update (2023-12-14 12:00:00 EST) : Special thank you to Rick Michael of the Chesterfield Electoral board for checking their records on issues #1 and #2 below. There were 3 x Issue #1 records and 9 x Issue #2 records identified in Chesterfield County.

According to Rick, the records in question were populated and visible when looking via the electronic VERIS (the states election database) login available to the Registrar. The 3 x Issue #1 records can be found and are Active records in the electronic system, and the 9 x Issue #2 records had an update that moved the records from Inactive to Active that were not reflected in the data supplied to us.

That implies that the data that we purchased (for approximately $12,000) directly from the department of elections is inaccurate and incomplete. Our initial purchase and download of the June 30 Registered Voter List (RVL) database does not show the registrants identified in Issue #1, even though the Registrar can see them in their electronic terminal. And our Monthly Update Subscription (MUS) we receive is missing the updates showing the registrant records identified in Issue #2 being moved from Inactive to Active status.

The department of elections is required by federal law (NVRA, HAVA) to keep and maintain accurate election records AND to make those records accessible for inspection and verification, and for use by candidates and political parties. Additionally, we have paid (twice!) for this data; once as taxpayers, and once again as a 501c3 entity. If the data we, and other campaigns and candidates are receiving is not representative of the actual records in the database, incomplete and inaccurate … that needs to be addressed and fixed.

Summary:
  • Issue #1: There are 99 records of ballots cast, according to the VA Department of Elections (ELECT) Daily Absentee List (DAL) data file that do not have corresponding voter ID listed in Registered Voter List (RVL) data.
  • Issue #2: There are 380 records of ballots cast in the DAL where the corresponding RVL record has been listed as “Inactive” since June-30-2023 and no modification to the RVL record has taken place.
  • Issue #3: There are 18 records of ballots cast in the DAL where the corresponding RVL record is listed as “Inactive” as of Dec-01-2023, but there has been previous modifications to the RVL record since June-30-2023.
  • We are currently reaching out in attempts to contact the VA AG’s office and to provide them the details of this analysis in order to have these anomalies further investigated.
Data files utilized for this analysis:

Our 501c3 EPEC purchased and downloaded the full statewide VA RVL on June-30-2023 from ELECT. We additionally purchased the Monthly Update Service (MUS) package from ELECT, where on the 1st of each month we are provided a list of all of the changes that have occurred to the RVL in the previous month. By applying these changes to our baseline data file, we are able to update our copy of the RVL to reflect the latest state as per ELECT. We can also create a cumulative record of all entries associated with a particular voter ID by simply concatenating all of these datafiles.

Additionally, during the VA 2023 General Election, we purchased access to the Daily Absentee List (DAL) file generated by ELECT that documents all of the transactions associated with early mail-in or in-person voting during the 45 day early voting period. The DAL file we utilized for this analysis was downloaded from ELECT on Nov-13-2023 at 6am EST.

Identification of ballots cast via the DAL file can be performed by checking for rows of the DAL data table that have the APP_STATUS field set to “Approved” and have the BALLOT_STATUS field set to any of the following: “Marked” | “Pre-Processed” | “On Machine” | “FWAB” | “Provisional”.

Once cast ballots are identified in the DAL, the Voter Identification Number can be used to lookup all of the corresponding records in our cumulative RVL data. The data issues summarized above can be directly observed using this process. Due to VA law, we cannot publish the full specific records here in this blog but have summarized, captured and described our process and results.

For Issue #1: If there does not exist a corresponding registration record for cast ballots, then the voter should not have been able to have their mail-in ballot approved or issued, or been able to check-in to an early voting precinct to vote on-machine. If the voter record actually does exists, then why is it not reflected in the data that we purchased from ELECT. Note that all provisional and Same Day Registration (SDR) ballots were required to be entered into the states database (“VERIS”) by the Friday after the election (Fri Nov-10-2023). We specifically waited until we received the Dec-01-2023 MUS data update from ELECT to attempt to perform this or similar analysis in order to ensure that we would not be missing any last minute registrations or RVL updates.

For Issue #2: There are 380 records of ballots being cast in the DAL where the baseline June-30-2023 RVL data file shows the registrant as inactive, and there has been no modifications or adjustments to the record presented in the MUS data files. Therefore these registrants should still have been listed as “Inactive” during the early voting period which started in September through Election Day (Nov 7).

For issue #3: There are 18 records that show the cast ballot is from a registrant that is currently listed as “Inactive” but there has been adjustments to the registration record over the last 6 months. An example of such is below. Note that I have captured the MUS data file generation dates in the 5th column to note when the file was generated and received by us.

In the example given below, the first invalidation operation on the registration record appears in the MUS file dated Sep-01, with the earliest transaction date listed as Aug-29-2023. The ballot application was not received until Sept 26 according to the DAL, so the application should never have been approved or the ballot issued as the registrant status should have been “Invalid” according to the states own data.

(Also … yes … I know there is a typo in the spelling of “APP_RECIEPT_DATE” in the tables below … but this is the data as it comes from ELECT).

APP_RECIEPT_DATEAPP_STATUSBALLOT_RECEIPT_DATEBALLOT_STATUS
“2023-09-26 00:00:00”Approved“2023-10-19 00:00:00”Pre-Processed
Example Extract of a DAL data record for a mail-in ballot cast during early voting.
TRANSACTIONDATETRANSACTIONTIMETrans_TypeNVRAReasonCodeFile Source
30-June-202312:12:00BASELINEBASELINEBaseline RVL
28-Jul-202309:34:03MODIFYChange OutMUS 08/01/2023
28-Jul-202309:34:04MODIFYAddress ChangeMUS 08/01/2023
28-Jul-202309:34:04MODIFYChange InMUS 09/01/2023
28-Jul-202309:34:03MODIFYChange OutMUS 09/01/2023
28-Jul-202309:34:04MODIFYAddress ChangeMUS 09/01/2023
28-Jul-202309:34:04MODIFYChange InMUS 09/01/2023
29-Aug-202311:55:49MODIFYInactivateMUS 09/01/2023
29-Aug-202311:55:49MODIFYInactivateMUS 10/01/2023
Extract of RVL Cumulative Data Records for Voter ID in above DAL entry
Categories
Uncategorized

Fluctuations in election night reporting ballot counts for multiple races in VA 2023 General Election

Well, election day came and went and everyone was glued to the internet to find out the results.

I took the extra step of logging all of the election night return files posted by the VA department of elections (“ELECT”) at 5 minute increments, as I wanted to plot the results over time as the numbers came in.

The data is from this link on ELECT’s website: https://enr.elections.virginia.gov/results/public/api/elections/Virginia/2023-Nov-Gen/files/json

I used a simple wget script to grab this file once every 5 minutes (approximately).

However, when I went to plot the results, I found some data curves that I can’t quite explain. Take, for example, the VA House of Delegates race in the 22nd District:

Now … last I checked, when accumulating counts of ballots … you wouldn’t expect the totals to go down, let alone oscillate back and forth.

This is not the only race where I found ballot curves that have a decrease in one of the ballot count after a data update. (The gallery is posted below.) Of the 183 races I looked at so far, 79 had a ballot trace that had its count total reduced after a data update. (I haven’t looked at all of the races yet.)

Now, one expects there to be some issues and corrections that have to be made to the election night reporting data. But when 43% of the races sampled have obvious data quality issues like this … I think that deserves some explanation.

So … can ELECT please address this:

  • Why do 79 (and counting) races (~43% of races sampled) in the VA election night reporting have obvious issues where the vote totals decreased after a data reporting update?
  • What was the cause?
  • Why was it not caught by your QA/QC procedures?
  • How will you be addressing it going forward?
Categories
Election Data Analysis Election Forensics Election Integrity technical

2023 VA General Election DAL File Metrics

Below you will find the current summary data and graphics from the VA 2023 General Election Daily Absentee List files. We pull the DAL file everyday and track the count of each specific ballot category in each daily file.

Note: Page may take a moment to load the graphics objects.

Linear Scale Plot:

Place your cursor over the series name in the legend at right to see the series highlighted in the graphic. Place your cursor over a specific data point to see that data points value.

Logarithmic Scale Plot:

The logarithmic plot is the same underlying data as the linear scale plot, except with a logarithmic y-scale in order to be able to compress the dynamic range and see the shape of all of the data curves in a single graphic. Place your cursor over the series name in the legend at right to see the series highlighted in the graphic. Place your cursor over a specific data point to see that data points value.

Summary Data Table:

The underlying data for the graphics above is provided in the summary data table.

Additional Data:

Additional CSV datasets stratified by Locality, City, Congressional District, State House District, State Senate District, and Precinct are available here.

Data column descriptions:
  • ISSUED” := Number of DAL file records where BALLOT_STATUS= “ISSUED”
  • NOT_ISSUED” := Number of DAL file records where BALLOT_STATUS= “NOT ISSUED”
  • PROVISIONAL” := Number of DAL file records where BALLOT_STATUS= “PROVISIONAL” and APP_STATUS=”APPROVED”
  • DELETED” := Number of DAL file records where BALLOT_STATUS= “DELETED”
  • MARKED” := Number of DAL file records where BALLOT_STATUS= “MARKED” and APP_STATUS=”APPROVED”
  • ON_MACHINE” := Number of DAL file records where BALLOT_STATUS= “ON_MACHINE” and APP_STATUS=”APPROVED”
  • PRE_PROCESSED” := Number of DAL file records where BALLOT_STATUS= “PRE-PROCESSED” and APP_STATUS=”APPROVED”
  • FWAB” := Number of DAL file records where BALLOT_STATUS= “FWAB” and APP_STATUS=”APPROVED”
  • MAIL_IN” := The sum of “MARKED” + “PRE_PROCESSED”
  • COUNTABLE” := The sum of “PROVISIONAL” + “MARKED” + “PRE_PROCESSED” + “ON_MACHINE” + “FWAB”
  • MILITARY” := Number of DAL file records where VOTER_TYPE= “MILITARY”
  • OVERSEAS” := Number of DAL file records where VOTER_TYPE= “OVERSEAS”
  • TEMPORARY” := Number of DAL file records where VOTER_TYPE= “TEMPORARY”
  • MILITARY_COUNTABLE” := Number of DAL file records where VOTER_TYPE= “MILITARY” and where COUNTABLE is True
  • OVERSEAS_COUNTABLE” := Number of DAL file records where VOTER_TYPE= “OVERSEAS” and where COUNTABLE is True
  • TEMPORARY_COUNTABLE” := Number of DAL file records where VOTER_TYPE= “TEMPORARY” and where COUNTABLE is True
Editorial Note:

When we first started receiving DAL data files on Sept-14-2023 after our purchase from ELECT, we noticed that there were a dozen or so records that were marked as being in a countable state, including records that should correspond to In-Person-Early votes. This is problematic as in person early voting facilities were not opened until Sept-22-2023. We respectfully raised this issue with the dept of elections and they acknowledged the error and directed registrars to correct the issues before the official start of early voting. (This can be observed in the logarithmic plot with the Overseas_Countable, On-Machine, Provisional, and Pre-Processed counts being reset to 0 on 9-21-2023.) We’d like to take a moment to thank the folks at ELECT and the registrars for listening to our concerns and correcting these errors before the start of early voting. Credit where credit is due.


All data purchased by Electoral Process Education Corp. (EPEC) from the VA Dept of Elections (ELECT). All processing performed by EPEC.

If you like the work that EPEC is doing, please support us with a donation.

Categories
Election Data Analysis Election Forensics Election Integrity Interesting mathematics technical

VA voter registrations greater than census determined eligible voters

One of our volunteers brought to our attention the following press release: https://www.honestelections.org/honest-elections-project-supports-new-pre-litigation-notices-against-arizona-and-virginia/. They claim that “… 43 counties and independent cities in Virginia and four counties in Arizona claim to have more voters than voting-age adult citizens.”

Attempt to directly validate the claim

After reading through the press release we decided to independently try to verify the claims in the release. Note that an analysis like this has been on our list of things-to-do, but there are only so many hours in the day! The fact this press release was issued gave us a well deserved prod to complete this analysis.

EPEC has purchased the entire statewide registered voter list data from the VA Department of Elections (ELECT) and has current records as of 2023-08-01. Eligible parties can purchase data from ELECT via their website here.

The necessary data from the US Census office can be downloaded here and included the estimates of the eligible voting age citizens in each county. From the documentation on the census site, the “cvap_est” field in the census data represents “The rounded estimate of the total number of United States citizens 18 years of age or older for that geographic area and group.”

It is therefore a straightforward process to accumulate the number of registrant records in each county, as well as accumulating the number of eligible voting age citizens and compute the registration percent “REG_PCT” as (# Registered / # Eligible * 100). The below table has the results of this direct computation for each county.

The results are only slightly different than the results presented by Honest Elections Project, but still show significant issues with 38 counties being over 100%.

Adjusting for population growth since 2020 census

As the census redistricting data is circa 2020, and the eligible voter data was estimated for 2021, we can attempt to account for population shifts since the 2020 census data was collected and the voter eligibility data was computed. The US Census bureau also makes available the estimates of population growth by county year-over-year since the date of the last census here, which we can use to find the recent rates of growth or decline for each county. We can then use these rates to adjust the number of eligible voter estimates to scale with the most recent rates of population change. This is admittedly an approximation and assumes a linear relationship, but it is arguably better than taking the 2020 census and 2021 eligible voter estimates and applying them directly to the latest (2023) RVL.

The REG_PCT_ADJ column in the table below represents this adjusted estimate.

Active vs inactive registrations

An additional consideration that can be made with this data, is to attempt to consider only “Active” voter registrations vs registrations with any status assigned. Note that “Inactive” voter registrations can be immediately returned to “Active” status by simply having any type of interaction with the department of elections (or through DMV, etc), and the registrant will then be allowed to vote. Because of this easy ability to change “Inactive” records to “Active”, it is most appropriate (IMO) to include them in this analysis. However, for completeness, and in order to bound the scope of the issue, the corresponding REG_PCT_ACTIVE and REG_PCT_ADJ_ACTIVE columns have also been computed which only consider “Active” voters.

Results

Even the most forgiving analysis we could compute with the official data from US Census and VA ELECT, which only considers active voters and attempts to adjust for population change since the census, still results in multiple (6) counties in VA having more than 100% registered voters than eligible voters, and many counties that had over 90%.

The most appropriate metric to consider, in my opinion, is the Adjusted and either Active or Inactive status results, as inactive status registrations can still be converted to active status and voted. There were 36 localities with over 100% in this category and 59 between 90% and 100%. There are 133 voting localities in total in VA.

The summary tabulated data and graphics for each of the methods of analyzing the data is presented below.

Tabulated Data Results:
LOCALITY_NAMEN_REGN_REG_ACTIVEN_ELIGIBLEN_ELIGIBLE_ADJREG_PCTREG_PCT_ADJREG_PCT_ACTIVEREG_PCT_ADJ_ACTIVE
GOOCHLAND COUNTY22032213081984020314.622534217111.048387096774108.453897988458107.399193548387104.889962705976
LOUDOUN COUNTY291468272527259775261988.121593707112.200173226831111.252372140753104.908863439515104.022655050994
FAIRFAX CITY17867165781589016179.2525931696112.441787287602110.431553603056104.32976714915102.464560118177
SURRY COUNTY5635544953255327.44865113427105.821596244131105.772957545076102.328638497653102.281605264085
NEW KENT COUNTY19258186861754518281.8036615372109.763465374751105.339715689632106.503277286976102.210921558649
KING WILLIAM COUNTY14025135921338013590.9343586927104.820627802691103.193788078519101.584454409567100.007840824473
MATHEWS COUNTY7353709271457099.01111761264102.911126662001103.57780651670299.2582225332499.9012381091326
NORTHAMPTON COUNTY9801930694359326.0652878146103.879173290938105.09255186971498.632750397456399.7848472298299
HANOVER COUNTY86583838008328084111.898838322103.96613832853102.937873470706100.62439961575499.6291858314583
RAPPAHANNOCK COUNTY6194595259455996.95979561651104.188393608074103.285668256898100.11774600504699.250290194552
JAMES CITY COUNTY63840604186010061066.3951247591106.222961730449104.541949577299100.52911813643998.9382128690675
FAUQUIER COUNTY56031528055296553424.3705925266105.788728405551104.87910176304199.697913716605398.840659074394
FALLS CHURCH CITY11130102531034510373.4476832119107.588206863219107.29316173264799.110681488641998.8388847479627
ACCOMACK COUNTY25327241922465024522.1840906366102.74645030426103.2819911407198.141987829614698.6535290273647
CRAIG COUNTY3917374738303807.2210828548102.271540469974102.88343951549397.832898172323898.4182404555912
CHARLES CITY COUNTY5728558457005677.65042979943100.491228070175100.88680292707597.964912280701898.3505425182942
ISLE OF WIGHT COUNTY31039296652971030281.6797400553104.473241332885102.5009189267199.848535846516397.9635220194221
SPOTSYLVANIA COUNTY105580100062100440102345.441485999105.117483074472103.16043242086599.623655913978597.7688879418126
LANCASTER COUNTY9201873690658943.53432452276101.50027578599102.87879115945696.370656370656497.6795043548532
CLARKE COUNTY12213114891161011882.4255832663105.193798449612102.78204491513398.957795004306696.6890128576076
POWHATAN COUNTY24346236242419524441.048216348100.6240958875899.611112356938897.640008266170796.6570655680737
LOUISA COUNTY29799287752900529810.5293092847102.73745905878399.961324707907599.207033270125896.5262968042565
FAIRFAX COUNTY784080721354749510747334.300776511104.612346733199104.91690254084596.243412362743796.523603861148
HENRICO COUNTY239597227831236070236137.172406976101.494048375482101.46517702306596.509933494302596.4824799406588
BEDFORD COUNTY62932605996243562871.2603534819100.796027868984100.09660955765397.05934171538496.3858520718266
NELSON COUNTY11827113841195511835.4598.929318276871699.928604320072395.223755750731996.1856118694262
FREDERICK COUNTY68222638686571566439.8543302061103.814958533059102.68234433648397.18937837632296.1290488124432
NORTHUMBERLAND COUNTY1039599041009010304.4313465051103.022794846383100.87892917570598.156590683845496.1139888942937
POQUOSON CITY9547910995009479.6573875803100.494736842105100.71039078382795.884210526315896.0899706347414
ORANGE COUNTY28633273512786528465.9231224287102.756145702494100.58693644626598.155392068903796.0833059316801
PRINCE WILLIAM COUNTY317403289258300255301330.510742882105.711145526303105.33384064477796.337446503805195.9935982874356
CHESTERFIELD COUNTY268258253920259725264714.168974025103.285398017134101.3387387005897.764943690441895.9223304835323
STAFFORD COUNTY111503103640106940108128.634023171104.266878623527103.12069601850996.914157471479395.8488016946475
AMELIA COUNTY1018099031028010370.952987928399.027237354085698.158771058449696.332684824902795.4878496848553
BOTETOURT COUNTY26424256712691027035.137004444298.193979933110497.739471398485295.395763656633294.9542071703948
GREENE COUNTY14956144321521515272.161166064398.297732500821697.929820392631694.853762734143994.4987408335423
ALBEMARLE COUNTY84004791078326583844.7847760722100.887527772774100.18989281724995.006305170239694.3493387349904
CULPEPER COUNTY37104354793720037612.219020172999.74193548387198.64879277688995.373655913978594.3283882851241
EMPORIA CITY3987371040353933.8020277481398.8104089219331101.35232967690391.945477075588694.3107958618791
KING AND QUEEN COUNTY5385515754305470.7168566286799.17127071823298.43316956671294.972375690607794.2655256184836
GLOUCESTER COUNTY30265290683058030862.894891518298.969914977109298.062738788374295.055591890124394.1842950966615
WESTMORELAND COUNTY14199136041447014454.550501815198.127159640635898.232041170820394.01520387007694.1156904069188
WARREN COUNTY30580288713036030718.0311057939100.72463768115999.550651194672995.095520421607493.9871435788555
MADISON COUNTY10409100651077010808.602150537696.648096564531196.302924791086493.454038997214593.1202745722244
FLUVANNA COUNTY20994201972141521693.887289995398.034088255895496.773804156721694.312397851972993.0999582048827
KING GEORGE COUNTY19822185771974519984.620303757100.38997214484799.186272737308894.08457837427292.9564821229435
APPOMATTOX COUNTY12256117451241512679.986583729798.719291180024296.656253688203794.603302456705692.6262809699701
ROANOKE COUNTY73141691367480074926.018335727897.782085561497397.617625525315592.42780748663192.2723528297154
SUFFOLK CITY71421654886949571088.6638879661102.77142240449100.46749522899794.234117562414692.1215794732158
HIGHLAND COUNTY1879181519201971.4056224899697.864583333333395.312703715775794.5312592.0662891134289
ARLINGTON COUNTY175053155984169220169528.629042616103.446992081314103.25866550598792.17822952369792.0104178750769
YORK COUNTY50591474655159051709.59579071698.063578212831997.836773284317992.004264392324191.7914736601402
FLOYD COUNTY11879114771242512513.126249274695.605633802816994.932311585113592.370221327967891.7196851639319
SHENANDOAH COUNTY32321309583366033764.368600682696.021984551396395.725172243696591.972667855020891.6883723375006
CUMBERLAND COUNTY7381713477507789.964933993495.238709677419494.75010558508792.051612903225891.579359604933
CAROLINE COUNTY23033218052340023813.572383924698.431623931623996.722153352969893.183760683760791.565430202818
ESSEX COUNTY8291790186108673.6448066717296.295005807200995.588419687449191.765389082462391.0920400374546
MIDDLESEX COUNTY8708830889959137.7910323059896.809338521400895.296554377458692.362423568649290.9191288203865
DINWIDDIE COUNTY20876199322184021966.364513018395.586080586080695.036208598049491.263736263736390.7387291519602
FRANKLIN CITY5877556460606148.7229330708796.98019801980295.580823269667891.815181518151890.4903353194541
CHESAPEAKE CITY176334164440181540182080.13664946697.132312438030296.844171607511290.580588300099290.3118830125735
CHARLOTTE COUNTY8391809990058968.2672279118293.181565796779693.563224497646589.938922820655290.3073001080252
CAMPBELL COUNTY40938390804350543321.159458239394.099528789794394.498855783080889.82875531548190.2099585715667
MECKLENBURG COUNTY22837219072412524290.610561056194.661139896373194.015751240989490.806217616580390.1871113734884
BATH COUNTY3353320735903556.6209933936993.398328690807894.274875119617589.331476323119890.1698552068635
HALIFAX COUNTY25042241782703026938.720303335592.64520902700792.959129899349289.4487606363389.7518505992518
WYTHE COUNTY20849201882258022508.736879432692.33392382639592.626254914600789.40655447298589.6896174500436
VIRGINIA BEACH CITY328860303604342075339791.41743699396.136812102609196.782903606145488.753635898560389.3501084547837
RUSSELL COUNTY19126185892093520829.412362669691.358968235013191.822081521020688.793885837114989.2439963083892
ALEXANDRIA CITY11121697404109245109471.650837935101.804201565289101.59342546560189.161060002746188.976460347894
SCOTT COUNTY15973155351747017465.120566055391.431024613623491.456568762798388.923869490555288.9487131866319
PITTSYLVANIA COUNTY44900432604884548732.824762855791.923431262155892.135024428591988.56587163476388.7697362312001
PAGE COUNTY17104165491878518744.748119826991.051370774554291.24689161284988.096885813148888.286062283737
CARROLL COUNTY21244206452333023390.991365966191.058722674667890.821289562399888.491213030432988.2604746288714
FRANKLIN COUNTY39895385634375043800.899836393491.188571428571491.082603665717388.14488.0415702509351
GILES COUNTY12058115491325513150.296369995290.969445492267191.693750929542187.129385137683987.8231157310733
COLONIAL HEIGHTS CITY12913119651358513641.672521681995.053367684946694.658481058508788.075082811924987.7091865457335
SOUTHAMPTON COUNTY13173126671454514460.328214226390.567205225163391.097517323570787.088346510828587.5982883122804
HOPEWELL CITY15555144901678016647.325988334492.69964243146693.438429756827986.352800953516187.0410059258396
AMHERST COUNTY22734218972503025187.877735656790.827007590890990.257703481770887.483020375549386.9346763939621
PATRICK COUNTY12896125271447514454.518055241189.091537132987989.21777917959786.542314335060486.664944151893
MANASSAS CITY23663216292505524982.937215012394.444222710037994.716645190065586.326082618239986.5750884848044
PORTSMOUTH CITY68285630857350073041.556566091192.904761904761993.487876231406585.829931972789186.3686413130011
AUGUSTA COUNTY54910530036118561409.98534289989.744218354171889.415425998549686.62744136634886.310067823732
ROCKINGHAM COUNTY56871542636224062923.041079673391.373714652956390.381836326044487.183483290488486.2370906887544
ALLEGHANY COUNTY10965103951226512110.707867412189.400733795352690.539711799216684.753363228699685.8331330736759
WASHINGTON COUNTY39282378314407544210.191846522889.12535450935988.852815062121585.833238797504385.5707664226648
WAYNESBORO CITY15564142921655016705.275269959394.042296072507693.168174414871186.35649546827885.5538132059456
HAMPTON CITY9992989709105410105555.29079341694.800303576510894.669816405103685.104828763874484.9876868565225
ROCKBRIDGE COUNTY16203156511845518417.501435575887.797344892982987.976102820884484.80628555946984.9789536042499
HENRY COUNTY36321342474065040334.796007634889.350553505535190.048800527279184.248462484624884.9068382384221
FREDERICKSBURG CITY19199175492057020786.123058542493.334953816237292.364506579353985.313563441905784.4265183583041
BUCHANAN COUNTY14607140091703016593.553194703285.772166764533288.028162676229582.260716382853884.4243534559663
CHARLOTTESVILLE CITY33751304393656536279.548327137592.304115957883293.030375394044983.246273759059283.9012650475344
MARTINSVILLE CITY9035826997809907.0411100450292.382413087934691.1977642935184.550102249488883.4658896450509
STAUNTON CITY18003168792005020246.177834951189.790523690773188.920487347104884.184538653366683.3688221925113
DICKENSON COUNTY1007194531147011364.83901241787.802964254577188.615421555876382.414995640802183.1775970576605
LUNENBURG COUNTY8036776493209346.4132699841686.223175965665285.979506446686683.304721030042983.069299160288
PULASKI COUNTY23605228212764527561.594001419885.386145776813285.644538551667482.550189907759182.8000006052786
LEE COUNTY15524149131814018075.041022619185.578831312017685.886388753271882.210584343991282.5060368125189
BRISTOL CITY12449110901354513449.919567124991.908453303802192.558174328630281.8752307124482.4540246850758
SMYTH COUNTY20124194292373523613.919425675784.786180745734285.220922614476981.858015588792982.277743265587
GRAYSON COUNTY10885104881274012750.80365296885.439560439560485.367168189953882.323390894819582.253638950504
BLAND COUNTY4624431952855258.485191778687.492904446546887.934069059078281.721854304635882.1339196077333
MANASSAS PARK CITY89388188102109983.4697342231687.541625857002989.527992150471480.195886385896282.0155739234795
NEWPORT NEWS CITY122432110842136045135707.76650213289.993752067330790.217386341021481.474512109963681.6769760913118
PETERSBURG CITY23678206262531525335.484460694793.533478174995193.457853694228381.477384949634681.411508163576
BRUNSWICK COUNTY11073107061320013152.087114337683.886363636363684.191960589501681.106060606060681.4015289507093
COVINGTON CITY3797357644354394.7592043273485.614430665163586.398362764932580.631341600901981.369645838135
WISE COUNTY24615235812921528980.998543702984.25466370015484.934961653860780.715385931884381.3671066731541
DANVILLE CITY28416260103213532023.52546252688.42694880970988.73476480049880.939785280846481.2215383045099
WINCHESTER CITY18077158671973019604.384847945991.621895590471492.208963148843980.420679168778580.9359749008522
ROANOKE CITY65501589027354072871.955561856989.068534131085189.885058655246180.095186293173880.8294487856874
NORTON CITY2600244330553036.4899476728285.106382978723485.625180547449379.967266775777480.4547369528534
SALEM CITY17727162712009020223.912203202688.237929318068787.653663751530580.990542558486880.4542654087636
RICHMOND CITY158141142368177060178454.84090649589.314921495538288.616817115575780.406641816333479.778166440773
LYNCHBURG CITY55508490296146061591.281629970490.315652456882590.123144917623779.773836641718279.6037989508931
GALAX CITY4016376547304780.4324973719884.904862579281284.009135202887679.598308668076178.7585642527071
TAZEWELL COUNTY27315253713249532303.55231295484.059086013232884.557263967054278.076627173411378.5393499581963
BUCKINGHAM COUNTY11026104361362013653.768595041380.954478707782780.754261530434576.622613803230576.4331102241624
SUSSEX COUNTY7121683691859072.8634850166577.528579205225978.486797599897274.425694066412675.3455621953234
RICHMOND COUNTY5629544272007224.6657089181178.180555555555677.913639561918775.583333333333375.3252845080764
BUENA VISTA CITY4380390052255206.0430839002383.827751196172284.132995624742774.641148325358974.9129413097024
NOTTOWAY COUNTY965192721243512415.051655544177.611580217129177.736285500593874.563731403297174.6835394427009
PRINCE EDWARD COUNTY13443127101788017855.570433119375.184563758389375.287429490717171.085011185682371.182268007663
PRINCE GEORGE COUNTY24912227513244032542.605702590876.794081381011176.551952316518770.13255240443969.9114269088438
NORFOLK CITY138210126445184395182802.31049888374.953225412836675.606265381883468.572900566718269.170351104929
MONTGOMERY COUNTY60377545937903079093.969241665476.397570542831876.335782081593169.078830823737869.02296157776
WILLIAMSBURG CITY1012787211298513178.84306220177.989988448209576.842860577389167.162110127069766.174245788033
GREENSVILLE COUNTY6395615495959438.6146161934866.649296508598267.753587364700164.13757165190265.2002465429811
HARRISONBURG CITY25205228333872038443.460777083465.095557851239765.563816291547358.969524793388459.3937162223725
RADFORD CITY917184181431514484.613106033164.065665385958863.31546402285458.805448829898758.1168439804149
LEXINGTON CITY4087341064706490.8906228978963.168469860896562.965165143629252.704791344667752.5351634792698
Categories
Election Data Analysis Election Integrity technical

Ballot Completion Rate for VA Absentee Voters

Below is an analysis of the VA statewide voter completion rate for absentee ballots compiled from the 2022 General Election Daily Absentee List (DAL) file downloaded from the VA Dept of Elections (“ELECT”) on 2022-11-15 17:46:21.

The DAL file records the transactions of all absentee ballots during the early voting period in VA elections. It includes records for both mail-in and in-person early voting transactions. It does not record the the actual values of the voted ballots, but the “fact-of” a registered voters checking in to an early voting site, or mailing their ballot application or completed ballot to the registrar, etc. The DAL record is published daily over the course of the early voting period and the file is cumulative.

For the purposes of this analysis a “Completed” ballot is a ballot that has been recorded in the DAL file as reaching a state in which the ballot can be considered to be tabulate-able. A “Completed” ballot must have its “APP_STATUS” field set to “Approved” AND have the “BALLOT_STATUS” field set to (“FWAB” OR “Marked” OR “On Machine” OR “Pre-Processed”).

The “VOTER_TYPE” field was used to separate records into “Military”, “Overseas” or “Temporary(Federal-Only Ballot)” and the ballot completion rate was computed for each sub-category, as well as overall.

All Absentee Voters
Avg Transactions Per Voter1.03
Avg Completion Rate Per Voter91.95%
Num Of Unique Voters1,057,268
Military Voters (VOTER_TYPE==”Military”)
Avg Transactions Per Voter1.08
Avg Completion Rate Per Voter78.60%
Num Of Unique Voters9,346
Overseas Voters (VOTER_TYPE==”Overseas”)
Avg Transactions Per Voter1.17
Avg Completion Rate Per Voter63.63%
Num Of Unique Voters7,052
Temporary Federal Voters (VOTER_TYPE==”Temporary(Federal-Only Ballot)”
Avg Transactions Per Voter1.21
Avg Completion Rate Per Voter61.14%
Num Of Unique Voters1,539
Discussion:

The data above shows that there is a distinct statistical discrepancy in the ability of Military, Overseas, or Temporary Federal Workers to complete their absentee ballots in comparison to standard ballots. These categories of voters are specifically reliant on the Mail-In absentee ballot process, and are demonstrably not having the same ability to have their votes cast and counted as is provided to standard absentee voters.

This discrepancy might be due to any number of potential reasons or mechanisms, which cannot be determined from the DAL data as provided by ELECT. The discrepancy demonstrably exists, though, and it should be investigated and remedied by legislators and officials in order to remedy the comparative disenfranchisement of specific classes of VA voters..

I will note for completeness that the first discovery and observation of this discrepancy was due to the diligent work of a fellow EPEC board member. I independently validated his results and created the scripts to process the data on a statewide basis to produce these tables. As always I am happy to provide the raw data, scripts and results to interested parties that are capable of receiving and handling VA election data according to VA law and the policies of ELECT. Interested parties can contact us to request more information.