Categories
Election Data Analysis Election Forensics Election Integrity Interesting programming technical

Well, isn’t that interesting …

USAID pulled two of their recent publications sometime after Nov 8 2020 on election integrity from their website. Specifically two publications that discuss election integrity forensics, including referencing the same National Academy of sciences paper that describes the Election Fingerprinting process that I’ve been using as a basis for my work. Luckily … there’s the wayback machine … and I made copies.

“ASSESSING AND VERIFYING ELECTION RESULTS: A DECISION-MAKER’S GUIDE TO PARALLEL VOTE TABULATION AND OTHER TOOLS” (original URL: https://pdf.usaid.gov/pdf_docs/PA00KGWR.pdf)

https://digitalpollwatchers.org/wp-content/uploads/2021/08/PA00KGWR-Wayback-Snapshot-2020-Nov-8.pdf

“A GUIDE TO ELECTION FORENSICS” (original URL: https://pdf.usaid.gov/pdf_docs/PA00MXR7.pdf)

https://digitalpollwatchers.org/wp-content/uploads/2021/08/A-Guide-to-Elections-Forensics-USAID.pdf
Categories
Election Data Analysis Election Forensics Election Integrity Interesting programming technical Uncategorized

Revisiting the VA 2020 Election Fingerprints: “Unmixing” the Virtual Absentee Precinct Data

After getting a pointer to the higher fidelity per-ward WI data and redoing that analysis (here), which was not only able to produce the election fingerprints but also a statistical model for each county that could identify statistically outlying wards for further scrutiny, I wanted to go back to the VA data and see if I could update that analysis to do the same thing. There is a problem with the VA data, however, as VA uses “virtual” absentee and provisional ballot counting precincts and collects all absentee and provisional ballots at the county congressional district level. That means that there is no direct mapping for the absentee or provisional ballots back to the precincts that they came from in the data published by the Virginia Department of Elections. What I really need to have is all of the votes (in person, absentee, provisional) accounted for at the per precinct level.

In theory, if the reported totals from VA DoE are accurate and truly represent the sum of what occurred at the precinct level, such a mapping should be trivial to produce with standard optimization methods. That doesn’t mean that such a produced mapping would be necessarily accurate to specific real precinct vote tallies, just that mathematically there should be at least one, if not many, possible such mappings of vote shares at the precinct level that sum to the results presented by VA DoE and obey all of the constraints due to voter turnout, reported absentee registrations and returned ballots, etc. One of those possible mappings should also correctly represent what the real votes shares were for the election.

Side Note: I’d argue that the fact that VA has tallied and published their data in such a way that makes it near impossible to transparently review precinct level results is reason enough to audit the entire VA vote, and needs to be addressed by our legislature. Even if there was absolutely no flaws, errors, or fraud in the VA election … the vote should still be thoroughly and completely audited across the state, and reporting standards should be updated to make inspection of the per precinct results transparent without needing to perform advanced algorithms as described below.

Previously I tried adjusting the “registered voter” counts for each virtual district by subtracting off the number of actual votes counted in person in their constituent real precincts. That method is accurate and produces self-consistent data for the “virtual precincts” which are summed at the county congressional district level, but it does nothing for being able to plot accurate fingerprints at the real per-precinct level.

But then I had an idea (ding!) after my discussions with Ed Solomon as to how to “unwrap” and distribute the Absentee and Provisional ballots from the virtual precinct sums back to the component real precincts. We can use the fact that we have the actual county level sums, and the real precinct level turnout numbers as constraints to perform a non-linear model fit that estimates the numbers of votes for Biden and Trump for each precinct that should be summed into the virtual district results.

Fair Warning: If you’ve been following my other blog posts, this one is going to get way more technical. I’ll still try to make sure that I include ample descriptions and educational cross-links … but buckle up!

Input Data:

The input data to this is the same as the input data to all of the VA Election Fingerprint analysis. Direct from the VA Dept of Elections, we need the per precinct vote tallies and the voter registrations numbers. We’d like the registered voter results as close to the nov election as possible. Links to the most recently updated versions of these files from VA DoE are below. I’ve made one addition to the standard dataset, which is that I’ve used the Daily Absentee List (DAL) from the 2020 November General provided by VA DoE to estimate the number of accepted and returned absentee ballots per precinct.

https://apps.elections.virginia.gov/SBE_CSV/ELECTIONS/ELECTIONRESULTS/2020/2020%20November%20General.csv

https://www.elections.virginia.gov/media/registration-statistics/2020/10/Daily_Registrant_Count_By_Locality_2020_11_01_054008.csv

https://www.elections.virginia.gov/media/registration-statistics/2020/nov/Daily_Registrant_Count_By_Congressional_2020_12_01_053203.csv

https://www.elections.virginia.gov/candidatepac-info/client-services/index.html

Description and Method:

We know the per county per congressional district vote tallies and registration numbers [note that I routinely just refer to this as the “per county” data, but its really per county per congressional district], including all In-Person and Absentee ballots. We can compute the per County fingerprint in the standard manner according to the methods in the NAS paper that describes the Election Fingerprint method, as I did previously here and here. We take the data provided from the links above and sum them into per county results, and creating a 2D histogram of the (% Vote Share for Biden) vs (% Voter Turnout).

Per County Election Fingerprint based on the raw data provided by the VA DoE

I’ll mention quickly about how the Fingerprint above from the reported data appears to have significant irregularities and correlations that deviate from a 2D Gaussian. We see a central lobe with some very distinct intersecting curves overlaid. This distribution does not comport with the theory of a free and fair election. That is not the focus of this post however.

I (and others) would like the ability to accurately examine the data at the perprecinct level. We know the per precinct In-Person vote total from the VA DoE data, but not the per precinct Absentee votes for each candidate. Which means that the VA per precinct maps I produced before, while useful for looking at the In-Person, Absentee or Provisional votes independently, are not really suited for performing hypothesis testing for outlier precincts in relation to the election results as a whole. This is because the In-Person and Absentee votes share the same universe of possible voters (e.g. registered voters) with an unknown “mixing” coefficient (also known as a set of latent or hidden variables), and the Central Absentee Precinct (CAP) data from VA DoE encompass a number of summed component real precinct data. We also know that a large portion of the 2020 election was due to non-In-Person ballots, so this is a pretty gaping hole in our ability to understand what happened in VA.

We therefore need to estimate the number of additional (absentee or provisional) votes for Trump and Biden that should be attributed to each real precinct. Since we are missing important data from the VA DoE published data, we going to have to try and model this data using a non-linear optimization subject to a number of constraints. The desired end result of this is a self-consistent (but modeled) per precinct data set that accounts for all In-Person and Absentee ballots AND sums within each county congressional district to equal the per county fingerprints that we produced previously AND does not violate any of the expectations of a free and fair election (i.e. no over 100% turnout, no linear correlations in the histogram, etc). I will caveat again that this modeled result is only one possible solution to the “unmixing” optimization problem, albeit the most likely, given the constraints. If we can find such a mapping, then we have an existence proof. If the election was truly free and fair, and the data has not been manipulated, then there should exist at least one such mapping that can be discovered by the optimization process.

We’re going to perform this modeling under the following assumptions and constraints:

  • The total number of votes (In-Person, Absentee) allocated to a precinct should not exceed the number of registered voters for the precinct. Our optimization function will include a penalty when this is violated.
  • The total number of Absentee votes allocated to a precinct should not exceed the number of returned absentee ballots for the precinct (computed from the DAL). Our optimization function will include a penalty when this is violated.
  • The sum of the vote totals in all of the component precincts of a county congressional district should equal the data as provided by VA DoE (Votes Trump, Votes Biden, Total Absentee Votes, etc). Our optimization function will include a penalty when this is violated.

We’ll use the MATLAB optimization toolbox lsqnonlin function, which uses a Trust-Region-Reflective or Levenberg-Marquradt algorithm, and try and create this new model by finding the additive factors (x Abs Vote for Biden, y Abs Votes for Trump) for each precinct’s Biden and Trump votes that warp the In-Person dataset such that each precincts data incorporates the contributions from Absentee votes. We are also going to clamp each of the (x, y) factors to be greater than 0 and less than the total number of estimated absentee ballots per precinct. Note that if the only limit was this clamping we could still have 2x the number of allocated absentee votes since there are two variables, so this limit serves only as an extreme upper bound for numerical stability reasons and computation speed.

The objective function for the MATLAB lsqnonlin(...) algorithm is given below. I’ve also parameterized which penalties are to be included so that I can try different permutations.

function [y, a, b, c, v] = ofunc2(abVotes,pivotMatrix,ipVotes,countyVotes,doA,doB,doC)
% abVotes is the current estimate of absentee votes for trump and biden
% attributed per precinct
%
% pivotMatrix is a boolean sparse matrix that sums the component precinct
% level data into their respective county gongressional district units.
%
% ipVotes is the in person [Biden, Trump, ..., TotalIP, RegisteredVoters,
% AcceptedAndReturnedAbsentee] tallies per precinct
%
% countyVotes is the total [Biden, Trump, ..., Total, RegisteredVoters, ...,
% TotalAbsenteeVotes] tallies per county congressional district

dim = size(abVotes,2);
xvotes = ipVotes;
xvotes(:,1:dim) = xvotes(:,1:dim)+abVotes;
mvotes = pivotMatrix*xvotes;        % Modeled votes per county
avotes = pivotMatrix*abVotes;       % Absentee votes per county

% extra penalty for breaking the rules...
exPen  = 1;
if nargin < 5 || isempty(doA)
    doA = true;
end
if nargin < 6 || isempty(doB)
    doB = true;
end
if nargin < 7 || isempty(doC)
    doC = true;
end

v = {};
a = [];
b = [];
c = [];
 
y = [];

% Difference at the county vote tally level
a = (mvotes(:,1:dim)-countyVotes(:,1:dim));
if nargout > 1 && sum(abs(a(:))) > 0
    v{end+1} = ['Violation of County Vote Tally: ',num2str(sum(abs(a(:))))];
end

if doA
    % Penalize for going over number of registered voters per county
    a(:,dim+1) = exPen * (sum(mvotes(:,1:dim),2) - countyVotes(:,dim+2));
    a(a(:,dim+1)<0,dim+1) = 0; % No penalty if we dont go over limit
    
    if nargout > 1 && sum(abs(a(:,dim+1))) > 0
        v{end+1} = ['Violation of County Registered Voters: ',num2str(sum(abs(a(:,3))))];
    end
    
    % Penalize for difference from number of absentee voters per county
    a(:,dim+2) = exPen * (countyVotes(:,end-1) - sum(avotes(:,1:dim),2));
    if nargout > 1 && sum(abs(a(:,dim+2))) > 0
        v{end+1} = ['Violation of County Absentee Votes: ',num2str(sum(abs(a(:,dim+2))))];
    end
end
y = [y;a(:)];

if doB
    % Penalize difference from number of computed absentee votes per precinct
    b = exPen * (sum(abVotes,2)-ipVotes(:,end));
    %b(b<0) = 0;  % No penalty if we dont go over limit
    y = [y;b(:)];
    
    if nargout > 1 && sum(abs(b(:))) > 0
        v{end+1} = ['Violation of Precinct Approved and Returned Absentee Ballots: ',num2str(sum(abs(b(:))))];
    end
end

if doC
    % Penalize going over the total number of registered voters per precinct
    c = exPen * (sum(xvotes(:,1:dim),2)-ipVotes(:,dim+2));
    c(c<0) = 0;  % No penalty if we dont go over limit
    y = [y;c(:)];
    
    if nargout > 1 && sum(abs(c(:))) > 0
        v{end+1} = ['Violation of Precinct Registered Voters: ',num2str(sum(abs(c(:))))];
    end
end

Rsults:

I was unable to find a solution using ANY of the constraint permutations that satisfied mathematical consistency. While I was able to produce estimates of absentee vote share per precinct, none of the solutions generated fell completely within the reported turnout, reported absentee ballot splits, or other constraints as defined by the published and certified VA DoE results.

Based on the deviations otherwise observed and reported by VA DoE, an error threshold of 0.1% on reconstructed totals using the modeled absentee ballot distributions should be readily achievable, with exact matches the ideal and desired result . The closest solution I have achieved so far is off by a min of 0.35% (for reconstructed Trump vote total) and a max of 0.62% (for the reconstructed total number of votes cast).

I have issued on FB, Twitter and Telegram an open challenge and reward of $1000 to the first person that can provide such a solution. I do not believe that such a solution exists.

Original Per Precinct (In Person Only) Election Fingerprint
Original Per County Election Fingerprint
Modeled Per County Election Fingerprint using all constraints above
Modeled Per Precinct (In Person + Absentee) Election Fingerprint using all constraints above

A bugfix, but still no solution found … (update @ 2021-08-17 3:19pm)

There was a bug in the objective function posted above. The penalty score for going over the number of registered voters per county and the penalty score for going over the number of registered voters in the precinct should have had a negative sign in front of them. This has been fixed in the program listing above. While the LM optimization gets much closer with this bugfix, I have still yet to find a solution that satisfies all constraints and matches the results reported by VA DoE.

The “best bad” solution I could find … (update @ 2021-08-26 0:09 am)

After weeks of running different variations the “best bad” numerical solution I can find still busts the constraints derived from the reported VA data. The error function code and the resultant images have been updated. The following deviations are the mathematical minimum amount of deviations that I could achieve using the Levenberg-Marquardt optimization. There does not appear to be a mathematical solution to the absentee unwrapping problem in VA that does not violate the published tallies from VA DoE. There *should* be an entire universe of possibilities. The fact that there isn’t one is near irrefutable proof that the election vote tallies certified by VA are egregiously flawed.

Violation of County Vote Tally: 1401
Violation of County Absentee Votes: 1267
Violation of Precinct Approved and Returned Absentee Ballots: 15255
Violation of Precinct Registered Voters: 1808

The “worst bad” solution, which only tried to constrain the problem based on reported vote tallies, performed significantly worse.

Violation of County Vote Tally: 2382
Violation of County Absentee Votes: 970
Violation of Precinct Approved and Returned Absentee Ballots: 559492
Violation of Precinct Registered Voters: 75041

Compiled source data for the challenge:

Update (2021-08-18) Adding expanded source data including Jorgensen and Write-In Votes:

Categories
Election Data Analysis Election Forensics Election Integrity Interesting programming technical

Mike Lindell’s Cyber Symposium – Day 1

Yes. I’ve been watching the Mike Lindell cyber symposium.

I was invited to attend (thank you again to Amanda Freeman Chase), but due to timing, my day job, and my understanding of the event format … I thought I could be more effective watching from home with the ability multi-task and to research things I heard real-time and continue my ongoing work in the background.

There’s a lot of fluff that was presented, which is fine. But Dr. Frank’s presentation was very very good, which was the first presentation I caught, and while I haven’t cross checked his methods (yet), they mostly corroborate the artifacts that I have seen as well using very different and rigorous techniques … at least at first blush going off of his presentation. (It’s now on my todo list to replicate his results.)

I am less convinced of the PCAP’s, and the theory that there was an organized (China backed) conspiracy to commit fraud as I’m still not sure as to some of the details as to data origin, methods, etc. I do find it very plausible. I just need more details. (I’m very familiar with PCAP’s, etc. but there are a lot more details that are required.)

However, until I get a better in depth look at the PCAP data and the code used to reconstruct Mike’s “corrected” maps, I think there is a simpler explanation: It is not required that fraud, manipulation or incompetence needs to have been organized to be effective. There does not need to be a nefarious man-behind-the-curtain. I think it more likely that we are looking at many mechanisms affecting our elections (plural), not a major singular effort. Thats my operating theory anyway.

Categories
Election Data Analysis Election Forensics Election Integrity Ginsu Science Interesting programming technical

Vote Discrepancy in VA 2020 Voting data

Note: As of Update 2021-08-13 (see below) the discrepancy is now 382176 Votes.

This needs to be explained. I hope this is just a mistake on my part or it can be attributed to a documented clerical or reporting error. I’ve gone over this a number of times now and triple checked my data sources and methods (all described or linked here). I’m only using the publicly available data from the VA Dept of Elections website and a doing a fairly basic consistency check between the machine readable data (csv) and what is presented on their site.

The VA Dept of Election summarizes the voting results for the 2020 Presidential election as follows. We note that even just taking screen shots from the VA DoE website we can notice that the vote totals for the same elections have some error in them. The first screen shot shows the total number of votes in the 2020 Presidential Election as 4,486,821 while the second shows the number of votes cast as 4,460,524. Now that is not a major difference in relation to the margin of victory or the number of votes cast, so it’s not something that bothers me. The two reported numbers are close enough that it is plausible that one includes overvotes/undervotes and the other doesn’t, or something similar. But it IS a noted difference, none the less. (issue # 1)

Screen Shot (as of 2021-08-10) of https://www.elections.virginia.gov/resultsreports/registrationturnout-statistics/ as of 2021-08-10
Screen Shot (as of 2021-08-10) https://historical.elections.virginia.gov/elections/search/year_from:2020/year_to:2020/office_id:1/stage:General

The VA DoE also publishes the 2020 General Election results (here) as a csv file. (I pulled a fresh copy as of 2021-08-10 to run this analysis, but its too large to upload to the site). One would expect the data in the csv and the data presented on the VA DoE website to match, or at least be close enough to chalk up any errors to something simple like over-votes/undervotes, etc.. They don’t. Not only do they not match, but they don’t match in a very peculiar way. Let’s walk through the process of grabbing the data from the csv and tabulating metrics above in a very simple MATLAB script, shall we?


% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Import the November General vote totals and collate ...
NovemberGeneral = importVAVotefile("SourceData/2020 November General.csv", [2, Inf]);
NovemberGeneral = NovemberGeneral(NovemberGeneral.OfficeTitle == 'President and Vice President',:);
LocalityName = NovemberGeneral.LocalityName;
DistrictName = NovemberGeneral.DistrictName;
PrecinctName = NovemberGeneral.PrecinctName;

uid = join(cat(2,string(LocalityName),string(DistrictName),string(PrecinctName)),' : ');

[uuids, ui,ua] = unique(uid);
[ulns, uci,uca] = unique(NovemberGeneral.LastName);
votes = accumarray([ua,uca],NovemberGeneral.TOTAL_VOTES);
votes(isnan(votes)) = 0;
votes(:,end+1) = sum(votes,2);

isAbsentee = contains(string(uuids),"Central Absentee Precinct");
isProvisional = contains(string(uuids),"Provisional");

% Compute the sum of all ballots
TotalVotes = sum(votes(:,end))

% Compute the sum of the in person ballots
InPersonVotes = sum(votes(~isAbsentee & ~isProvisional,end))

% Compute the sum of the provisional or absentee ballots
Absentee = sum(votes(isAbsentee | isProvisional,end))
>> TotalVotes = 4462600
>> InPersonVotes = 1630833
>> Absentee = 2831767

Wait a minute?? … the data from the first link show the Absentee vote being 2,687,304. Yet the “2020 November General.csv” file shows 2,831,767 absentee votes. Thats a difference of somewhere around 144,463 votes! Even more interesting is the fact that the total number of votes is still consistent with the published summary screenshots above. Thats a significant enough discrepancy that I get my worry beads out. Now, granted, this could … in some convoluted Rube Goldberg esque manner … be just be a clerical error, or maybe I’m just missing something totally obvious about the data. But no matter the reason, this NEEDS to be explained.

Update 2021-08-10 6:57pm

I’ve received a update that further corroborates the discontinuity in these numbers. In response to a FOIA request, the VA Dept of Elections supplied a summary file of the counts of all requested and returned absentee ballots per county.

This data file comes from ashley.coles@elections.virginia.gov. It contains only two data columns, the Total Requested and the Total Returned. Summing the Total Returned column produces a result of 2,829,037. which is only off from my result by 2730 (<< 1%). So we have yet another official source of VA election data that shows a discrepancy from the official results that were certified by VA. No fancy MATLAB scripts required to process, just simple sum of the table columns.

Update 2021-08-13 3:00 PM

Looking closer at the official certified results from the VA DoE (first graphic and link above), they report that in 2020 the Total Registered = 5,975,696, the Total Voting = 4,486,821, and the % Turnout = 81.48%. They define the “Turnout” metric in the header as “% Voting of Total Registered”. So according to VA DoE … Total Voting / Total Registered * 100 = 4486821 / 5975696 * 100 = 81.48. Simple, right?

Except its wrong. Way wrong. Go ahead … grab a calculator. Try it for yourself.

4486821 / 5975696 * 100 = 75.0845 is what you’ll come up with. That’s a Difference of 6.40% from the reported turnout. .064 * Total Registered = .064 * 5,975,696 = 382,176 (rounded) Unaccounted for votes.

But Jon … you say … surely you are just misinterpreting their metric! They wouldn’t have published the certified results with that glaring of an error. There has to be some other variable that’s counted in the turnout numbers that they just forgot to describe in the header line of the report.

If that were the case, we would expect the other election totals in the subsequent rows to show similar errors then, right? Yeah … not so much. Every other year in this same report has a difference of less than 0.1%.

Remember these are the numbers that VA certified to congress. Even if this is just a clerical error, we need to know how and why it happened and make sure it doesn’t happen again. We need a full audit of the VA 2020 Election.

YearTotal RegisteredPercentage Change from Previous YearTotal VotingTurnout (% Voting of Total Registered)Voting Absentee (Included in Total Voting)Total Voting / Total RegisteredDifference From Reported Turnout
20205,975,6966.18%4,486,82181.48%2,687,30475.08%6.40%
20195,628,035-1.00%2,383,64642.40%144,36042.35%0.05%
20185,666,9623.31%3,374,38259.50%337,31559.54%-0.04%
20175,489,530-0.73%2,612,30947.60%192,39747.59%0.01%
20165,529,7426.41%3,984,63172.05%566,94872.06%-0.01%
20155,196,436-1.60%1,509,86429.10%62,60529.06%0.04%
20145,281,0110.78%2,194,34641.60%123,22141.55%0.05%
20135,240,286-3.50%2,253,41843.00%121,35943.00%0.00%
20125,428,8336.10%3,858,04371.06%447,90771.07%-0.01%
20115,116,9291.68%1,463,76128.61%59,51928.61%0.00%
20105,032,1441.54%2,214,50344.01%106,88844.01%0.00%
20094,955,750-1.57%2,000,81240.40%88,18240.37%0.03%
20085,034,66010.70%3,723,26074.00%506,67273.95%0.05%
20074,549,864-0.10%1,374,52630.20%30,61930.21%-0.01%
20064,554,6832.30%2,398,58952.70%116,62952.66%0.04%
20054,452,225-1.50%2,000,05244.92%75,98244.92%0.00%
20044,517,9807.10%3,198,36770.79%222,05970.79%0.00%
20034,217,227-0.10%1,296,95530.80%35,71630.75%0.05%
20024,219,9572.70%1,331,91531.56%44,49331.56%0.00%
20014,109,1270.90%1,905,51146.40%52,34446.37%0.03%
20004,073,6447.00%2,739,44767.20%150,41467.25%-0.05%
19993,808,7542.30%1,373,52736.10%10,68636.06%0.04%
19983,724,6834.50%1,229,13933.00%31,49433.00%0.00%
19973,565,6977.30%1,764,47649.50%47,57149.48%0.02%
19963,322,7409.40%2,416,64272.70%116,60672.73%-0.03%
19953,038,3941.30%1,585,78352.20%45,78552.19%0.01%
19943,000,5600.90%2,078,10669.30%81,63669.26%0.04%
19932,975,121-2.60%1,817,77761.10%53,90461.10%0.00%
19923,055,4869.40%2,558,66583.70%141,12383.74%-0.04%
      

Summary:

In summary, I can rectify the “2020 November General” and the “Daily_Registrant_Count_By_Locality” data files to give the following results compared to the HTML web report. The additional cross check of the response from FOIA request, matches my number to within a few thousand. All of this data is provided by VA DoE. All of it is supposed to be authoritative and definitive. And none of it makes any sense.

VA DoE Certified ResultsBiden VoteTrump VoteTotal VotingTotal Registered% Change from previous year(Reported) Turnout (Total Voting / Total Registered)(Computed) TurnoutVoting Absentee
#1VA DoE Report: Registration / Turnout4,486,8215,975,6766.18%81.48%75.08% (~382,443 Votes)2,687,304
#2VA DoE Elections Database2,413,5681,962,4304,460,524
#3CSV: 2020-November-General2,413,5681,962,4304,462,6002,831,767
#4CSV: Registrations 11-01-20205,975,7176.18%
#5FOIA’d CSV2,829,037
#6Daily Absentee List (by Request)2,826,484
Computed from #3 & #474.68%74.68%
Max Abs Difference0024,2214106.8% 0.4%144,463
Inconsistencies in VA Dept of Elections Provided Data
Registration / Turnout Report: https://www.elections.virginia.gov/resultsreports/registrationturnout-statistics/
Elections Database: https://historical.elections.virginia.gov/elections/search/year_from:2020/year_to:2020/office_id:1/stage:General
CSV-2020-November-General: https://apps.elections.virginia.gov/SBE_CSV/ELECTIONS/ELECTIONRESULTS/2020/
CSV-Registrations-2020-11-01: https://www.elections.virginia.gov/media/registration-statistics/2020/nov/Daily_Registrant_Count_By_Locality_2020_12_01_054401.csv
FOIA’s CSV: https://www.elections.virginia.gov/media/registration-statistics/2020/nov/Daily_Registrant_Count_By_Locality_2020_12_01_054401.csv
DAL (as of 2020-11-30): https://www.elections.virginia.gov/candidatepac-info/client-services/index.html

Other Code Used in this analysis:

I will note for completeness here that the importVAVotefile(...) function referenced above is auto-generated by the MATLAB Import Data tool. I’ve listed it below for the record.

function NovemberGeneral = importVAVotefile(filename, dataLines)
%IMPORTFILE Import data from a text file
%  NOVEMBERGENERAL = IMPORTFILE(FILENAME) reads data from text file
%  FILENAME for the default selection.  Returns the data as a table.
%
%  NOVEMBERGENERAL = IMPORTFILE(FILE, DATALINES) reads data for the
%  specified row interval(s) of text file FILENAME. Specify DATALINES as
%  a positive scalar integer or a N-by-2 array of positive scalar
%  integers for dis-contiguous row intervals.
%
%  Example:
%  NovemberGeneral = importVAVotefile("2020 November General.csv", [2, Inf]);
%
%  See also READTABLE.
%
% Auto-generated by MATLAB on 07-Aug-2021 14:36:17

%% Input handling

% If dataLines is not specified, define defaults
if nargin < 2
    dataLines = [2, Inf];
end

%% Set up the Import Options and import the data
opts = delimitedTextImportOptions("NumVariables", 22);

% Specify range and delimiter
opts.DataLines = dataLines;
opts.Delimiter = ",";

% Specify column names and types
opts.VariableNames = ["CandidateUid", "FirstName", "MiddleName", "LastName", "Suffix", "TOTAL_VOTES", "Party", "WriteInVote", "LocalityUid", "LocalityCode", "LocalityName", "PrecinctUid", "PrecinctName", "DistrictUid", "DistrictType", "DistrictName", "OfficeUid", "OfficeTitle", "ElectionUid", "ElectionType", "ElectionDate", "ElectionName"];
opts.VariableTypes = ["categorical", "categorical", "categorical", "categorical", "categorical", "double", "categorical", "categorical", "categorical", "double", "categorical", "categorical", "categorical", "categorical", "categorical", "categorical", "categorical", "categorical", "categorical", "categorical", "string", "categorical"];

% Specify file level properties
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";

% Specify variable properties
opts = setvaropts(opts, "ElectionDate", "WhitespaceRule", "preserve");
opts = setvaropts(opts, ["CandidateUid", "FirstName", "MiddleName", "LastName", "Suffix", "Party", "WriteInVote", "LocalityUid", "LocalityName", "PrecinctUid", "PrecinctName", "DistrictUid", "DistrictType", "DistrictName", "OfficeUid", "OfficeTitle", "ElectionUid", "ElectionType", "ElectionDate", "ElectionName"], "EmptyFieldRule", "auto");

% Import the data
NovemberGeneral = readtable(filename, opts);

end
Categories
Election Data Analysis Election Forensics Election Integrity Interesting programming technical

New WI 2020 Election Fingerprints, rev 2.0

Shortly after posting some updated WI data analysis (here) I got pointed to an even better set of data to use for generating the fingerprints. This updated dataset uses the registration numbers as of Nov 3 and the per ward vote tallies provided on the https://elections.wi.gov/ site.

I also made some code modifications in order to compute an idealized model of what the Fingerprint “should” look like, similar to what was done in the original National Academy of Sciences paper. The ideal model is based on a 2D Gaussian Mixture Model fit to the locations of top histogram bins that are >= 70% of the max histogram value. The model uses a shared covariance matrix for all of the components based off of the sample covariance of the data. In the statewide plot below the Election Fingerprint is in the top right, with the ideal model in the bottom left. On the bottom right and top left are the sums of the Election Fingerprint image across the different dimensions.

Statewide Election Fingerprint, per Ward group

We see what looks like two (or even three) superimposed lobes around the 90% turnout and 40% per Biden bin, which is consistent with my earlier low-res version, and we have a lot more detail as to the upward kurtotic smear off the main distribution. There also are a few Ward Groupings that have exceptionally high % for Biden (rarely, if ever, does a candidate receive near 100% vote share), and there are Ward Groupings that are near/over the 100% turnout marker, with the addition that some of those are ALSO either 100% Biden or 0% Biden (all big red flags)!

As discussed in the National Academy of Sciences paper that all of this work is based on, an idealized Election Fingerprint should look like a 2D Gaussian (or a multi-variate normal distribution). Or maybe, in an extremely divided populace, 2 overlapping Gaussian distributions. Deviations from this are, by definition, irregular and an indication that there might be an issue with the election. Distinct linear or non-linear features sloping away from the central lobes(s) could indicate voter manipulation or “ballot stuffing”; isolated regions at high turnout +/or very high vote percentage for one candidate could be an indication of extreme manipulation or vote substitution. Now, its true that no real Election Fingerprint will look perfectly Gaussian due to the realities of how elections operate, data errors, etc … but they should at least be close!

Testing specific Wards to check for outliers

Just like before, I went through each individual counties data to make individual county specific Fingerprints. I also used the model to find a set of “interesting” wards by testing how well the ward fit against the probability density function (pdf) of the model. Wards are deemed outliers from the model if the ward group entry had (over 25 votes total) AND (it had over 97% turnout OR it had over 97% votes for Biden OR it had an evaluated pdf of < 1E-9 against the GMM Model). The complete list of outliers according to this model is below, along with the sums for the outlier wards.

BidenVotesTrumpVotesTotalVotesRegisteredVotes
Sum 213312139381359130446866
LocalityBidenVotesTrumpVotesTotalVotesRegisteredVotersTurnoutBidenPctTrumpPctModel Probability
ASHLAND COUNTY TOWN OF LA POINTE WARD 12365229432490.740740740740780.272108843537417.6870748299321.92477676888761E-12
ASHLAND COUNTY TOWN OF SANBORN WARDS 1-24428553070575.17730496453983.396226415094316.03773584905666.11329669551507E-18
BARRON COUNTY CITY OF BARRON WARDS 1-76838371532196378.043810494141644.582245430809454.63446475195825.63608603904006E-10
BAYFIELD COUNTY CITY OF BAYFIELD WARDS 1-43145737345482.1585903083784.182305630026815.28150134048261.02971568650162E-21
BAYFIELD COUNTY CITY OF WASHBURN WARDS 1-49443201283149385.93436034829273.577552611067824.94154325798914.1581192007984E-12
BAYFIELD COUNTY TOWN OF BAYFIELD WARD 139915856464088.12570.744680851063828.01418439716316.44035024538831E-10
BAYFIELD COUNTY TOWN OF RUSSELL WARDS 1-26019169991276.644736842105385.979971387696713.01859799713887.1789626891056E-28
BROWN COUNTY TOWN OF MORRISON WARDS 1-2196768979111288.039568345323720.020429009193178.44739530132795.20055002328544E-11
COLUMBIA COUNTY TOWN OF RANDOLPH WARD 19237147052689.353612167300419.574468085106478.9361702127661.49308448006707E-12
DANE COUNTY CITY OF MADISON WARD 1277713929398.924731182795783.69565217391314.13043478260876.39561194230751E-06
DANE COUNTY CITY OF MADISON WARD 140378464797.872340425531980.434782608695717.39130434782612.44340709557608E-05
DANE COUNTY CITY OF MADISON WARD 48659148819142657.433380084151580.463980463980518.07081807081813.52762840567405E-10
DANE COUNTY CITY OF MADISON WARD 4919684232427422757.41660752306681.087762669962917.42892459826953.68273621333911E-10
DANE COUNTY CITY OF MADISON WARD 5014622381741307456.636304489264883.974727168294113.67030442274551.25242937905889E-10
DANE COUNTY CITY OF MADISON WARD 542336830463747.72370486656276.644736842105322.36842105263165.70258703816946E-18
DANE COUNTY CITY OF MADISON WARD 5513462701649293956.107519564477781.625227410551816.37355973317165.509685735556E-11
DANE COUNTY CITY OF MADISON WARD 56655195866179948.137854363535375.63510392609722.51732101616639.6228505281742E-18
DANE COUNTY CITY OF MADISON WARD 57750156923179151.53545505304381.256771397616516.90140845070422.47205132607457E-14
DANE COUNTY CITY OF MADISON WARD 583415840676053.421052631578983.990147783251214.28571428571437.30999920891661E-13
DANE COUNTY CITY OF MADISON WARD 593657745293048.602150537634480.752212389380517.03539823008858.17744524385459E-17
DANE COUNTY CITY OF SUN PRAIRIE WARDS 20-22,24-25,281757725625899.224806201550468.35937530.0781250.000158078462324593
DOUGLAS COUNTY CITY OF SUPERIOR WARDS 17-19,30-3211736201856252873.417721518987363.200431034482833.40517241379313.37051056052282E-11
DOUGLAS COUNTY TOWN OF DAIRYLAND WARD 12510112915384.313725490196119.379844961240378.29457364341082.75440521379353E-13
DUNN COUNTY CITY OF MENOMONIE WARD 635325762083174.608904933814756.935483870967741.45161290322584.75782477468469E-10
DUNN COUNTY CITY OF MENOMONIE WARDS 3-4523369919156858.60969387755156.909684439608340.15233949945591.08064146240878E-21
DUNN COUNTY CITY OF MENOMONIE WARDS 5,7361279673127652.742946708463953.640416047548341.45616641901938.60680131606536E-27
DUNN COUNTY CITY OF MENOMONIE WARDS 8-97515281308179073.07262569832457.415902140672840.36697247706425.1671988172534E-11
EAU CLAIRE COUNTY CITY OF ALTOONA WARDS 12-1616112726103.84615384615459.259259259259340.74074074074077.25926716445429E-07
EAU CLAIRE COUNTY CITY OF EAU CLAIRE WARD 20360215596124647.833065810593960.402684563758436.07382550335576.79322707506469E-21
EAU CLAIRE COUNTY CITY OF EAU CLAIRE WARD 5451209679125554.103585657370566.421207658321130.7805596465393.54653273188261E-16
EAU CLAIRE COUNTY CITY OF EAU CLAIRE WARD 6535186743116963.558597091531272.005383580080725.03364737550475.48820883152761E-11
EAU CLAIRE COUNTY TOWN OF FAIRCHILD WARD 13513517419589.230769230769220.114942528735677.58620689655179.210877887475E-13
EAU CLAIRE COUNTY TOWN OF WILSON WARD 14917222325786.770428015564221.973094170403677.13004484304931.18540801589859E-11
FOND DU LAC COUNTY CITY OF FOND DU LAC WARD 136042478898879.757085020242945.685279187817353.80710659898486.79364522819134E-11
FOND DU LAC COUNTY CITY OF FOND DU LAC WARD 1131029861881076.296296296296350.161812297734648.22006472491912.55555808340175E-16
FOND DU LAC COUNTY CITY OF FOND DU LAC WARD 1330932264980980.222496909765147.611710323574749.61479198767331.11701213986908E-11
FOND DU LAC COUNTY CITY OF FOND DU LAC WARD 1633835169883084.096385542168748.424068767908350.28653295128942.97370363102557E-10
FOND DU LAC COUNTY CITY OF FOND DU LAC WARD 1711410422226284.732824427480951.351351351351346.84684684684685.93415306364651E-12
FOND DU LAC COUNTY CITY OF FOND DU LAC WARD 1933637172187982.025028441410746.601941747572851.45631067961164.52742910745579E-10
FOND DU LAC COUNTY CITY OF FOND DU LAC WARD 232931665983079.397590361445849.924127465857447.95144157814871.15316292964617E-13
FOND DU LAC COUNTY CITY OF FOND DU LAC WARD 56836611378162684.747847478474849.564586357039247.96806966618299.37767055176873E-11
FOND DU LAC COUNTY CITY OF FOND DU LAC WARD 934132667988576.723163841807950.22091310751148.01178203240065.66905415025079E-16
FOND DU LAC COUNTY CITY OF RIPON WARDS 4-6415403829108576.405529953917150.060313630880648.61278648974673.75104914617071E-16
FOND DU LAC COUNTY CITY OF RIPON WARDS 9-115405921152139682.521489971346746.87551.38888888888895.52488291943727E-10
FOREST COUNTY TOWN OF NASHVILLE WARD 21315418625074.470.430107526881729.03225806451615.58741907395928E-23
GRANT COUNTY CITY OF PLATTEVILLE WARDS 5-6335294662114957.61531766753750.604229607250844.41087613293053.46889241295325E-26
GRANT COUNTY CITY OF PLATTEVILLE WARDS 7-98556251547212972.663222170032955.268261150614140.40077569489331.43548705444654E-10
GRANT COUNTY VILLAGE OF WOODMAN WARD 11235476968.115942028985525.53191489361774.4680851063831.82801386794522E-13
JACKSON COUNTY TOWN OF BEAR BLUFF WARD 1118910010892.592592592592611891.36352878176187E-10
JACKSON COUNTY TOWN OF KOMENSKY WARD 11463017622279.279279279279382.954545454545517.04545454545451.32889222362522E-25
JEFFERSON COUNTY CITY OF WHITEWATER WARD 121158720550140.918163672654756.097560975609842.43902439024392.12872002012183E-42
JEFFERSON COUNTY CITY OF WHITEWATER WARDS 10-1135122359075877.836411609498759.491525423728837.79661016949152.13791245784257E-10
JEFFERSON COUNTY VILLAGE OF CAMBRIDGE WARD 14420657487.837837837837867.692307692307730.76923076923088.22755433390597E-15
KENOSHA COUNTY CITY OF KENOSHA WARD 1029111341361966.720516962843370.460048426150127.36077481840192.06776570315375E-10
KENOSHA COUNTY CITY OF KENOSHA WARD 31626023053043.396226415094370.434782608695726.08695652173913.43956135655265E-34
KENOSHA COUNTY CITY OF KENOSHA WARD 33233263378.787878787878888.461538461538511.53846153846155.42133845876956E-13
KENOSHA COUNTY CITY OF KENOSHA WARD 72739437455767.145421903052172.994652406417125.13368983957226.87529928579931E-11
KEWAUNEE COUNTY CITY OF ALGOMA WARDS 1-68258191685198085.101010101010148.961424332344248.60534124629089.13667635453448E-11
LA CROSSE COUNTY CITY OF LA CROSSE WARD 1120014434961456.840390879478857.306590257879741.26074498567344.45768797779824E-11
LA CROSSE COUNTY CITY OF LA CROSSE WARD 8518398936203545.99508599508655.341880341880342.52136752136753.353166809769E-20
LANGLADE COUNTY CITY OF ANTIGO WARD 420120340649781.690140845070449.5073891625616506.0338889427495E-11
LANGLADE COUNTY CITY OF ANTIGO WARD 512817130741174.695863746958641.693811074918655.7003257328994.05169423409582E-10
MANITOWOC COUNTY CITY OF MANITOWOC WARDS 5-68076781520184282.519001085776353.092105263157944.60526315789473.74295368009036E-12
MANITOWOC COUNTY CITY OF MANITOWOC WARDS 7-84985401061137177.388767323121846.936852026390250.89538171536292.85889433338131E-12
MARATHON COUNTY CITY OF WAUSAU WARD 631519653169176.845151953690359.322033898305136.91148775894542.35008171069057E-11
MARATHON COUNTY CITY OF WAUSAU WARD 827920850071270.224719101123655.841.61.41787361998521E-14
MILWAUKEE COUNTY CITY OF CUDAHY WARDS 1-312257291984243381.545417180435761.743951612903236.74395161290327.55840876244649E-16
MILWAUKEE COUNTY CITY OF CUDAHY WARDS 10-129639361924237481.04465037910750.05197505197548.64864864864871.74595382047536E-23
MILWAUKEE COUNTY CITY OF CUDAHY WARDS 13-15111810502189263383.137105962780151.073549566011947.96710826861581.04744228724223E-23
MILWAUKEE COUNTY CITY OF CUDAHY WARDS 4-69837971819229579.259259259259354.04068169323843.81528312259489.06241072063201E-20
MILWAUKEE COUNTY CITY OF CUDAHY WARDS 7-98577151595210275.880114176974353.73040752351144.82758620689668.54298236281862E-19
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 1024219744648192.723492723492754.260089686098744.17040358744391.46465970777214E-27
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 115406531203135488.847858197932144.887780548628454.28096425602664.20290665007461E-32
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 1233750284998186.544342507645339.693757361601959.12838633686692.24476659505987E-35
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 135526351200134489.28571428571434652.91666666666671.90914119352679E-31
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 144945281033114989.904264577893847.821878025169451.11326234269122.33294864294759E-30
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 15A20933054365083.538461538461538.489871086556260.77348066298347.5447895506994E-35
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 15B17720739045086.666666666666745.384615384615453.07692307692312.80359406780404E-30
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 165286921239138789.329488103821242.615012106537555.85149313962871.90956073819003E-34
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 1739635075783990.226460071513752.311756935270846.23513870541614.20442722572625E-27
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 1821225647251791.295938104448744.915254237288154.23728813559328.35213158350655E-34
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 195577121279144188.757807078417843.549648162627155.66849100860053.21836172741495E-33
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 26318781531166891.786570743405341.214892227302457.34813847158721.68975552016341E-37
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 2032933967777287.694300518134748.596750369276250.07385524372232.97205717497328E-28
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 2117412731140277.36318407960255.948553054662440.83601286173639.56678900628984E-18
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 22A31739671880389.414694894146944.15041782729855.15320334261843.93357547643516E-33
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 22B28038667773991.610284167794341.358936484490457.01624815361893.12040163864428E-37
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 234937631275141090.425531914893638.666666666666759.8431372549026.22957831868089E-39
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 37518231598177490.078917700112746.996245306633351.50187734668343.68125386891159E-31
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 432147079895183.911671924290240.225563909774458.89724310776942.2686537468804E-33
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 528636965972091.527777777777843.399089529590355.99393019726862.60219138859018E-35
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 64955821093122289.44353518821645.28819762122653.24794144556273.67278895928314E-32
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 76507771437157391.354100445009545.233124565066154.07098121085591.42346954750186E-33
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 85534281002117285.494880546075155.18962075848342.71457085828345.12738299716137E-22
MILWAUKEE COUNTY CITY OF FRANKLIN WARD 95224691003115486.915077989601452.043868394815646.75972083748754.17082445761439E-25
MILWAUKEE COUNTY CITY OF GLENDALE WARD 835617252959289.358108108108167.29678638941432.51417769376181.89068769493298E-17
MILWAUKEE COUNTY CITY OF GLENDALE WARDS 1,79843471363155587.652733118971172.193690388848125.45854732208363.16744713268672E-14
MILWAUKEE COUNTY CITY OF GLENDALE WARDS 2,8S712212935107686.895910780669276.149732620320822.67379679144392.28904788740795E-12
MILWAUKEE COUNTY CITY OF GLENDALE WARDS 3,910534591546176487.641723356009168.11125485122929.68952134540756.14813246126453E-16
MILWAUKEE COUNTY CITY OF GLENDALE WARDS 4,1011724681657185489.374325782092870.730235365117728.24381412190716.02930527494358E-16
MILWAUKEE COUNTY CITY OF GLENDALE WARDS 5,119343571312148088.648648648648771.189024390243927.21036585365852.86273338591949E-15
MILWAUKEE COUNTY CITY OF GLENDALE WARDS 6,128662701153134985.47071905114975.108412836079823.4171725932357.42416867151683E-12
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 15764381035126182.077716098334655.652173913043542.31884057971016.75719273960832E-20
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 105655181102129784.965304548959151.270417422867547.0054446460981.54815447380789E-24
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 116196891323145790.803019903912246.787603930461152.07860922146647.49110216197986E-32
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 126097671392157688.324873096446743.7555.10057471264379.38170717809966E-33
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 1335231767578086.538461538461552.148148148148146.9629629629638.46101282137081E-25
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 14469428910112480.960854092526751.538461538461547.0329670329672.5923776457702E-22
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 15431467912108683.977900552486247.258771929824651.20614035087723.64452002818065E-27
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 1618220038547581.052631578947447.272727272727351.94805194805191.03185649345929E-25
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 1746134681599282.157258064516156.564417177914142.45398773006132.52239916433965E-19
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 18426448888101487.573964497041447.97297297297350.45045045045041.11207447361166E-28
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 197645251298150886.074270557029258.859784283513140.44684129429895.85375850169128E-20
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 2445447903106884.550561797752849.280177187153949.50166112956817.65010167785277E-26
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 206856651364159085.786163522012650.219941348973648.75366568914968.26628576102177E-26
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 21450372838102781.596884128529753.699284009546544.39140811455855.02825498303287E-21
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 3495343852107179.551820728291358.098591549295840.25821596244133.60103037564101E-17
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 4516306832110075.636363636363662.019230769230836.77884615384621.96038822277719E-13
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 5520439972121180.264244426094153.497942386831345.16460905349791.42770280944536E-20
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 6448530996114387.139107611548644.979919678714953.21285140562256.42641640780174E-31
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 76296431296151885.375494071146248.533950617283949.61419753086426.70730734893469E-27
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 86125041127136182.806759735488654.303460514640644.72049689440993.49143853336436E-21
MILWAUKEE COUNTY CITY OF GREENFIELD WARD 95504991065124485.610932475884351.643192488262946.85446009389671.26351449266701E-24
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 1075881060490966.446644664466497.35099337748341.655629139072850.00607290997487753
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 1163951040766361.387631975867397.0515970515972.457002457002460.00442900875815082
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 1302677835292837.931034482758675.852272727272722.15909090909095.06449448879178E-16
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 13212553591633196982.93550025393676.85241886099221.98407838334356.22621280143243E-10
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 144334634455961.538461538461597.09302325581391.744186046511630.0045609717682438
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 1553521876892183.387622149837169.661458333333328.38541666666678.50493764715297E-13
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 18617956962541327177.682665851421670.641479732388827.39079102715476.8232933072707E-10
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 191399141550120445.681063122923672.545454545454525.63636363636363.99914771473777E-12
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 20557219779296582.072538860103672.222222222222224.87373737373744.24373565136365E-11
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 20647916365475786.393659180977673.241590214067324.92354740061164.72113232055249E-13
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 20744627073092878.663793103448361.095890410958936.9863013698635.36175276901475E-15
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 208512302834102781.20740019474261.390887290167936.211031175066.79004252066778E-16
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 20945329576290784.01323042998959.448818897637838.71391076115491.95546986299735E-18
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 21035531568992174.809989142236751.523947750362845.71843251088534.27579491035909E-20
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 21146128577099877.154308617234559.870129870129937.0129870129873.56231589937219E-15
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 212514310842112374.977738201246761.045130641330236.81710213776728.4094687651029E-14
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 213569294883115576.450216450216464.439411098527733.29558323895812.2623703277218E-12
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2438522151083123887.479806138933878.670360110803319.85226223453375.41723117940624E-12
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 24555613570282884.782608695652279.202279202279219.23076923076923.00331841376544E-10
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 26133717452363282.75316455696264.435946462715133.26959847036335.82555622850465E-15
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2626653881064130581.532567049808462.536.46616541353382.04151668899336E-15
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 26337419957975776.486129458388464.59412780656334.36960276338512.65171157727609E-12
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2646764851185144482.063711911357357.046413502109740.92827004219415.79902239092725E-19
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 26535126762877680.927835051546455.891719745222942.5159235668793.34925682107936E-19
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 26634036072190080.111111111111147.156726768377349.93065187239942.13915754083083E-25
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 26736228565779282.954545454545555.098934550989343.378995433791.04876863667821E-20
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2687986341452178881.208053691275254.958677685950443.663911845735.79255390176922E-20
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 269451388857107679.646840148698952.625437572928845.27421236872816.07513589006184E-21
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 27041137679999280.544354838709751.439299123904947.05882352941183.33979654311459E-22
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2718176341472183480.261723009814655.502717391304343.0706521739133.58022181504136E-19
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2725125671096126686.571879936808946.715328467153351.73357664233584.28503366875072E-29
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 27331329061071984.840055632823451.311475409836147.54098360655741.95369959606737E-24
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 27429629761076379.947575360419448.524590163934448.68852459016393.26718700327756E-24
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2757726331423185476.752966558791854.251581166549544.48348559381591.05215494863984E-18
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2766726001295152784.806810740013151.891891891891946.33204633204635.54486888719382E-24
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2776886021320164080.487804878048852.121212121212145.60606060606061.1395279941763E-21
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 27837035974091680.78602620087345048.51351351351352.07680960722687E-23
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2795734451040126582.213438735177955.096153846153942.78846153846152.42738130289664E-20
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 28011244811630206578.934624697336668.957055214723929.50920245398774.4239076774363E-11
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 28147426574795778.056426332288463.453815261044235.4752342704151.89778550535121E-13
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 28347325273698374.872838250254364.266304347826134.23913043478265.45437704403475E-12
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 28627713642058072.413793103448365.952380952380932.38095238095241.56448201263501E-10
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 28733114148359780.904522613065368.530020703933729.19254658385094.2570324619449E-12
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 2886733861077135079.777777777777862.488393686165335.84029712163421.19076439246385E-14
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 29242819863279779.29736511919767.721518987341831.32911392405068.75090412574107E-12
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 29349527778995382.79118572927662.737642585551335.10773130544996.82907019712108E-16
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 29441819162173384.720327421555367.310789049919530.75684380032211.43489007810167E-14
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 29554119175093180.558539205155772.133333333333325.46666666666671.9406997206457E-10
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 296671288982115485.095320623916868.329938900203729.32790224032592.61839983551383E-14
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 297637197849102183.153770812928575.029446407538323.20376914016491.26537229672712E-10
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 29854216272385684.462616822429974.965421853388722.40663900414942.44713694663658E-11
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 299653249921108185.198889916743870.901194353963127.03583061889252.92696461989792E-13
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 3009672241215141086.170212765957479.588477366255118.43621399176956.00326630881646E-11
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 3017693611153135984.841795437821966.695576756287931.30962705984396.25191697293189E-15
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 30247630979295183.280757097791860.101010101010139.01515151515151.17316695988034E-17
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 3037224291172136585.860805860805961.604095563139936.60409556313993.38458923045215E-18
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 304531379928116579.65665236051557.219827586206940.84051724137938.90270006142794E-18
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 305567344932115980.414150129421960.836909871244636.90987124463527.29125476826321E-16
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 30647621570093175.1879699248126830.71428571428573.05481514364101E-10
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 30748630280298681.338742393509160.598503740648437.65586034912722.04179924025003E-16
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 3096454531114137880.841799709724257.899461400359140.66427289048477.56341300405146E-18
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 31136827765684777.449822904368456.097560975609842.22560975609761.12321636456187E-17
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 312553389950107788.207985143918358.210526315789540.94736842105261.07820265316607E-21
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 3139507621743218279.880843263061454.503729202524443.71772805507751.06521933847579E-19
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 31434732068081283.74384236453251.029411764705947.05882352941184.70010708286927E-24
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 315466436916160457.107231920199550.873362445414847.59825327510924.13471102377506E-20
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 31637337075092581.081081081081149.733333333333349.33333333333339.49352292125111E-24
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 317533352901108782.888684452621959.156492785793639.06770255271924.96013279980341E-18
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 3313246842039251081.235059760956264.933791074055933.54585581167245.60180949248076E-14
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 8138423063277981.129653401797260.759493670886136.39240506329113.1634316099815E-16
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 8252830184397586.461538461538562.633451957295435.705812574145.64360612254358E-18
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 836623231009122282.56955810147365.60951437066432.011892963332.86383247830138E-14
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 8446522471086781.891580161476465.492957746478931.54929577464795.33119079644663E-14
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 85623302945114682.460732984293265.925925925925931.9576719576724.65866813999447E-14
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 86629274926111083.423423423423467.9265658747329.58963282937371.37729902611045E-13
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 8743415059372981.344307270233273.187183811129925.29510961214172.15106739253755E-10
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 8860518380496483.40248962655675.248756218905522.76119402985071.11543465562254E-10
MILWAUKEE COUNTY CITY OF MILWAUKEE WARD 9349517067679085.569620253164673.224852071005925.14792899408281.42556748420486E-12
MILWAUKEE COUNTY CITY OF OAK CREEK WARDS 1-3170117443522400987.85233225243248.296422487223249.51731970471321.34995380021904E-28
MILWAUKEE COUNTY CITY OF OAK CREEK WARDS 10-12159620903758426888.050609184629842.469398616285355.61468866418311.00089661325203E-33
MILWAUKEE COUNTY CITY OF OAK CREEK WARDS 13-15155920563664407589.914110429447942.549126637554656.11353711790396.55292766071753E-35
MILWAUKEE COUNTY CITY OF OAK CREEK WARDS 16-19156513072929352183.186594717409853.431205189484544.62273813588265.40429558312339E-22
MILWAUKEE COUNTY CITY OF OAK CREEK WARDS 4-6177716073453408784.487399070222751.462496379959546.53924123950193.97596480799759E-24
MILWAUKEE COUNTY CITY OF OAK CREEK WARDS 7-9165217583461395487.531613555892847.73186940190750.79456804391797.52545559662631E-29
MILWAUKEE COUNTY CITY OF SOUTH MILWAUKEE WARDS 1-4150212522824334884.348864994026353.186968838526944.33427762039668.79048436758186E-23
MILWAUKEE COUNTY CITY OF SOUTH MILWAUKEE WARDS 13-16135413452753330383.348471086890749.182709771158748.85579367962222.79916556081515E-25
MILWAUKEE COUNTY CITY OF SOUTH MILWAUKEE WARDS 5-8124011792464301381.778957849319650.324675324675347.8490259740261.3006965302369E-23
MILWAUKEE COUNTY CITY OF SOUTH MILWAUKEE WARDS 9-12154315703154367985.729817885294948.922003804692549.77805960684848.55077535471153E-27
MILWAUKEE COUNTY CITY OF ST. FRANCIS WARDS 1-49666881688202283.481701285855657.227488151658840.75829383886261.48833787683868E-19
MILWAUKEE COUNTY CITY OF ST. FRANCIS WARDS 5-810457421818211186.12032212221757.480748074807540.81408140814087.37392790023734E-21
MILWAUKEE COUNTY CITY OF ST. FRANCIS WARDS 9-1213708072206254186.816214088941462.103354487760736.58204895738891.73670652459223E-18
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 19353521313146189.869952087611271.210967250571226.80883472962684.29199717483575E-16
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 1010093791425168284.720570749108270.807017543859726.59649122807024.96976046265056E-13
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 119423701335154186.632057105775570.56179775280927.71535580524343.04969908063255E-14
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 1210095401578174390.533562822719463.941698352344734.22053231939165.90182535799617E-20
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 1353817573485286.15023474178473.297002724795623.8419618528616.91680405682294E-13
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 1410193331386159986.679174484052573.520923520923524.0259740259744.00745124345971E-13
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 1511283251487170187.41916519694375.85743106926721.85608607935448.72613807561488E-13
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 1610564891590175390.701654306902566.415094339622630.75471698113218.10244077319936E-19
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 177965271349148590.841750841750959.00667160859939.06597479614535.17912850085271E-23
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 187563691137134584.535315985130166.49076517150432.45382585751987.35436406286319E-15
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 198364551315152786.116568434839663.57414448669234.60076045627382.95934324139749E-17
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 210062981321150587.774086378737576.154428463285422.5586676760036.45221760442866E-13
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 209986861716199086.231155778894558.158508158508239.976689976691.71666108579506E-20
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 216834591167135086.444444444444458.526135389888639.33161953727512.17866869555251E-20
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 228594841377155288.724226804123762.381989832970235.14887436456061.49463701960189E-19
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 236685191215138487.789017341040554.979423868312842.71604938271611.47783902838351E-23
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 247023381058127682.915360501567466.35160680529331.94706994328924.48324575884219E-14
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 39814011404162586.469.871794871794928.56125356125362.16209341470747E-14
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 412645891896211689.603024574669266.666666666666731.06540084388196.41887343588786E-18
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 57473331095133182.268970698722868.219178082191830.41095890410967.11539536094584E-13
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 67332671019121384.006595218466671.933267909715426.20215897939163.42786865328096E-12
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 710205091564177788.013505908835165.217391304347832.54475703324811.42365789266778E-17
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 841427669885381.828839390386959.312320916905439.5415472779372.03410688133861E-17
MILWAUKEE COUNTY CITY OF WAUWATOSA WARD 97836311447169885.217903415783354.111955770559843.60746371803731.31727251710136E-22
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 1552302875116575.10729613733963.085714285714334.51428571428571.09341656007839E-12
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 106714141107145376.1871988988360.614272809394837.39837398373982.05397477403839E-14
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 117026791402172681.228273464658250.071326676176948.43081312410841.49191405531741E-23
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 125826631265155481.402831402831446.007905138339952.41106719367596.25448622497098E-27
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 138438291715201285.238568588469249.154518950437348.33819241982512.50898219645981E-26
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 14531355906120475.249169435215958.609271523178839.18322295805742.38701616746422E-15
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 15527434987126478.085443037974753.394123606889643.97163120567388.88322217068542E-20
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 16496473996124979.743795036028849.799196787148647.48995983935744.05804724716096E-23
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 176806411348166880.815347721822550.445103857566847.55192878338284.45060932552017E-23
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 187547711550188282.359192348565448.645161290322649.7419354838713.27839997095381E-25
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 197366491413170782.776801405975452.087756546355345.9306440198169.1547815357996E-23
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 28383651223161975.540457072266868.520032706459529.84464431725274.15549638821068E-10
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 205594531025124282.528180354267354.536585365853744.19512195121956.98704542708123E-21
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 216835721279160979.490366687383553.401094605160344.72243940578582.56434663338589E-20
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 22566410990128876.863354037267157.171717171717241.41414141414149.11106723907263E-17
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 236867301440173982.806210465784947.638888888888950.69444444444443.01938597867455E-26
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 24552357922119976.897414512093459.869848156182238.72017353579184.34927337209287E-15
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 256546861365157986.447118429385747.912087912087950.25641025641034.94212313828082E-28
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 3523280828110375.067996373526763.164251207729533.81642512077291.2380705237555E-12
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 47144881225156578.274760383386658.285714285714339.83673469387761.49370039073485E-16
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 55854011000127678.369905956112858.540.11.87650274487038E-16
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 6490399916123074.471544715447253.493449781659443.55895196506551.46418702181846E-18
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 76754701175153476.597131681877457.4468085106383401.68103981731446E-16
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 8565337925123175.142160844841661.081081081081136.43243243243247.92817234717319E-14
MILWAUKEE COUNTY CITY OF WEST ALLIS WARD 97355231280165377.434966727162757.42187540.8593758.44200178825207E-17
MILWAUKEE COUNTY VILLAGE OF BAYSIDE WARD 550819270677990.629011553273471.954674220963227.19546742209632.44456563873148E-16
MILWAUKEE COUNTY VILLAGE OF BAYSIDE WARDS 1,37193231049124284.460547504025868.541468064823630.7912297426127.3531014466122E-14
MILWAUKEE COUNTY VILLAGE OF BAYSIDE WARDS 1S,3S4724717594.666666666666766.197183098591633.80281690140845.20072614807201E-22
MILWAUKEE COUNTY VILLAGE OF BAYSIDE WARDS 2,49113271254141688.559322033898372.647527910685826.07655502392341.21537753246468E-14
MILWAUKEE COUNTY VILLAGE OF BROWN DEER WARDS 1-218915532488294984.367582231264876.004823151125422.22668810289396.03006145464191E-11
MILWAUKEE COUNTY VILLAGE OF BROWN DEER WARDS 3-416847722490289286.099585062240767.630522088353431.0040160642573.2746666274357E-15
MILWAUKEE COUNTY VILLAGE OF BROWN DEER WARDS 5-617496862477292584.683760683760770.609608397254727.69479208720234.32055702907867E-13
MILWAUKEE COUNTY VILLAGE OF FOX POINT WARDS 1-415336412201246889.181523500810469.650159018627929.12312585188552.8694532937401E-16
MILWAUKEE COUNTY VILLAGE OF FOX POINT WARDS 5-919597882786309889.928986442866470.315865039483128.28427853553481.67529969347659E-16
MILWAUKEE COUNTY VILLAGE OF GREENDALE WARDS 1-28249161765195490.327533265097246.68555240793251.89801699716711.35248528592402E-31
MILWAUKEE COUNTY VILLAGE OF GREENDALE WARDS 3-410619042007232486.359724612736752.864972595914345.04235176880923.63389937076315E-24
MILWAUKEE COUNTY VILLAGE OF GREENDALE WARDS 5-69128451782203087.783251231527151.178451178451247.41863075196412.67310357712138E-26
MILWAUKEE COUNTY VILLAGE OF GREENDALE WARDS 7-89008241756199088.241206030150751.2528473804146.92482915717541.53793346484194E-26
MILWAUKEE COUNTY VILLAGE OF GREENDALE WARDS 9-10108710242127240988.29389788293951.104842501175448.1429243065351.0979100727427E-26
MILWAUKEE COUNTY VILLAGE OF HALES CORNERS WARDS 1-37268781637187787.213638785295744.349419670128353.63469761759321.63033371187735E-31
MILWAUKEE COUNTY VILLAGE OF HALES CORNERS WARDS 4-67518291603186086.182795698924746.84965689332551.7155333749229.50129837887944E-29
MILWAUKEE COUNTY VILLAGE OF HALES CORNERS WARDS 7-97637721552176388.031764038570649.162371134020649.74226804123715.09051745202475E-28
MILWAUKEE COUNTY VILLAGE OF RIVER HILLS WARDS 1-37155351259141389.10120311394256.79110405083442.49404289118353.34151147982707E-23
MILWAUKEE COUNTY VILLAGE OF SHOREWOOD WARDS 1-428516063509407986.025986761461181.248218865773717.26987745796521.82789251970963E-10
MILWAUKEE COUNTY VILLAGE OF SHOREWOOD WARDS 5-824604352939336587.340267459138283.70193943518214.80095270500179.12181429933463E-11
MILWAUKEE COUNTY VILLAGE OF SHOREWOOD WARDS 9-1223894192845323687.917181705809683.971880492091414.72759226713534.38025974823043E-11
MILWAUKEE COUNTY VILLAGE OF WEST MILWAUKEE WARDS 1-2,5519249781107572.651162790697766.453265044814331.88220230473752.45436618393263E-10
MILWAUKEE COUNTY VILLAGE OF WEST MILWAUKEE WARDS 3-4,6611290920116878.767123287671266.413043478260931.52173913043483.38065145202773E-12
MILWAUKEE COUNTY VILLAGE OF WHITEFISH BAY WARD 12667310997108491.974169741697466.90070210631931.09327983951861.58783909593186E-19
MILWAUKEE COUNTY VILLAGE OF WHITEFISH BAY WARD 761420883394288.428874734607273.709483793517424.96998799519813.64155504598521E-14
MILWAUKEE COUNTY VILLAGE OF WHITEFISH BAY WARDS 1-210445501614178790.318970341354264.684014869888534.07682775712522.05819451025194E-19
MILWAUKEE COUNTY VILLAGE OF WHITEFISH BAY WARDS 3-410524371508167490.083632019115969.761273209549128.97877984084887.59867496717096E-17
MILWAUKEE COUNTY VILLAGE OF WHITEFISH BAY WARDS 5-611485011668187588.9668.824940047961630.03597122302161.76565509275726E-16
MILWAUKEE COUNTY VILLAGE OF WHITEFISH BAY WARDS 8,1013444831844206489.341085271317872.88503253796126.19305856832974.439862753817E-15
MILWAUKEE COUNTY VILLAGE OF WHITEFISH BAY WARDS 9,1112113781615187186.317477284874474.98452012383923.4055727554182.1467920231762E-12
MONROE COUNTY VILLAGE OF WILTON WARD 112312224731179.421221864951849.797570850202449.39271255060731.20704010552853E-10
OUTAGAMIE COUNTY CITY OF APPLETON WARD 8663144820141557.950530035335780.853658536585417.56097560975611.45780801269311E-21
OZAUKEE COUNTY TOWN OF FREDONIA WARDS 1-428410731380154289.494163424124520.579710144927577.75362318840581.38655200184393E-14
OZAUKEE COUNTY VILLAGE OF BAYSIDE WARD 65933939498.93617021276663.440860215053835.48387096774192.00129596830969E-11
OZAUKEE COUNTY VILLAGE OF NEWBURG WARD 3946556091.666666666666716.363636363636483.63636363636365.63503296502046E-19
PIERCE COUNTY CITY OF RIVER FALLS WARDS 12-149327241712222377.013045434098154.439252336448642.28971962616825.61509915169131E-11
PIERCE COUNTY CITY OF RIVER FALLS WARDS 6-812607702092261380.061232300038360.229445506692236.80688336520085.8496683463879E-13
PIERCE COUNTY CITY OF RIVER FALLS WARDS 9-116655371264192365.73062922516952.610759493670942.48417721518991.09797839673096E-20
POLK COUNTY CITY OF ST. CROIX FALLS WARDS 1-46356211278156081.923076923076949.687010954616648.59154929577464.87553890759147E-10
PORTAGE COUNTY CITY OF STEVENS POINT WARDS 1-37183061065143574.216027874564567.417840375586928.73239436619725.75731642041891E-16
PORTAGE COUNTY CITY OF STEVENS POINT WARDS 10-127073751113140479.273504273504363.522012578616333.69272237196773.13559487680873E-11
PORTAGE COUNTY CITY OF STEVENS POINT WARDS 13-158203931252154980.826339573918765.495207667731631.38977635782751.05043079569372E-11
PORTAGE COUNTY CITY OF STEVENS POINT WARDS 31-33474244747111267.176258992805863.453815261044232.66398929049533.85556315207787E-19
PORTAGE COUNTY CITY OF STEVENS POINT WARDS 4-6569245841124867.387820512820567.657550535077329.13198573127232.78068480164296E-21
PORTAGE COUNTY CITY OF STEVENS POINT WARDS 7-9512207743114964.664926022628468.909825033647427.86002691790041.19090420839269E-24
RACINE COUNTY CITY OF RACINE WARD 183253536359660.906040268456489.53168044077149.641873278236911.61620200534854E-18
RACINE COUNTY CITY OF RACINE WARD 192694732152261.494252873563283.800623052959514.64174454828661.45532182383773E-15
RACINE COUNTY CITY OF RACINE WARD 253698644100763.952333664349583.229813664596315.21739130434781.42908976350886E-13
RACINE COUNTY CITY OF RACINE WARD 45164956985966.239813736903490.68541300527248.61159929701232.22596252082422E-15
RACINE COUNTY CITY OF RACINE WARD 54144346366469.728915662650689.41684665226789.287257019438456.42199163428323E-13
RACINE COUNTY CITY OF RACINE WARD 73857447068468.713450292397781.914893617021315.74468085106382.65763243490565E-10
RACINE COUNTY CITY OF RACINE WARD 849210660488768.094701240135381.456953642384117.54966887417221.8659463263179E-10
ROCK COUNTY CITY OF BELOIT WARD 133507643866066.363636363636479.908675799086817.3515981735163.86795309941425E-11
ROCK COUNTY CITY OF BELOIT WARD 1442212155284465.402843601895776.449275362318821.92028985507255.01839456532688E-10
ROCK COUNTY CITY OF BELOIT WARD 16454117579118848.737373737373778.411053540587220.20725388601045.60799598953891E-24
ROCK COUNTY CITY OF BELOIT WARD 8348437259.722222222222279.069767441860518.60465116279071.58318773614765E-14
SHAWANO COUNTY TOWN OF BARTELME WARD 12608835445477.973568281938373.446327683615824.85875706214698.27419151174227E-30
SHAWANO COUNTY TOWN OF RED SPRINGS WARDS 1-232821054062885.987261146496860.740740740740738.88888888888899.12515507152146E-16
ST. CROIX COUNTY CITY OF HUDSON WARDS 1-25535381117140279.671897289586349.507609668755648.164726947183.01168489100185E-10
ST. CROIX COUNTY CITY OF HUDSON WARDS 9-108235121371162184.577421344848960.029175784099237.3450036469734.66935435278649E-13
TAYLOR COUNTY TOWN OF MAPLEHURST WARD 136179218199109.54773869346716.513761467889982.11009174311931.08923188875317E-14
TAYLOR COUNTY TOWN OF PERSHING WARD 13452881008838.636363636363659.09090909090914.20619321566663E-10
VILAS COUNTY TOWN OF LAC DU FLAMBEAU WARDS 1-79776341624219174.121405750798760.160098522167539.03940886699512.71781088739366E-22
WALWORTH COUNTY CITY OF WHITEWATER WARD 714711126759744.723618090452355.056179775280941.57303370786524.20346919413067E-28
WALWORTH COUNTY CITY OF WHITEWATER WARD 91949629657651.388888888888965.540540540540532.43243243243241.08258816705731E-25
WALWORTH COUNTY CITY OF WHITEWATER WARDS 3-4547305875124270.45088566827762.514285714285734.85714285714291.21363190304917E-11
WALWORTH COUNTY CITY OF WHITEWATER WARDS 8,13923512925650.39062571.317829457364327.13178294573646.78349828881846E-30
WAUKESHA COUNTY CITY OF WAUKESHA WARD 2533029064186873.847926267281151.482059282371345.24180967238695.93869651342477E-10
WAUKESHA COUNTY CITY OF WAUKESHA WARD 2753328911974.789915966386659.550561797752835.95505617977535.34798400477303E-12
WAUKESHA COUNTY VILLAGE OF MERTON WARDS 5-62071929497.872340425531921.739130434782677.17391304347834.6967624756401E-11
WAUPACA COUNTY CITY OF WAUPACA WARDS 1-13140915573030367682.426550598476646.501650165016551.38613861386141.098732231727E-10
WINNEBAGO COUNTY CITY OF OSHKOSH WARD 319313733990337.541528239202756.932153392330440.41297935103241.12053944116867E-30
WINNEBAGO COUNTY CITY OF OSHKOSH WARD 4312203525102851.070038910505859.428571428571438.66666666666676.31136222801884E-17
WOOD COUNTY CITY OF MARSHFIELD WARDS 4,145715531138134284.798807749627450.175746924428848.59402460456946.46363645172154E-10

Per County Election Fingerprints

Categories
Election Data Analysis Election Forensics Election Integrity Interesting programming technical

New WI 2020 Election Fingerprints

Previously (see here, and here) I built a set of Election Fingerprints including WI that was based on the County data that I extracted from the NYT/Edison research election tracker, which was the best data that I had available at the time. While the results did have some interesting features, there wasn’t really enough data points to make any sort of inference one way or the other. Well … this last weekend (07/30/21) I received a dataset that had all of the vote counts and registered voters by Ward Grouping in the state, which is a much higher fidelity dataset than I had been working with.

Update 8/4/21: Not 24 hours after posting, my data source for the WI data has discovered some more accurate voter registration numbers for me to use which more accurately account for same day registrations. (The one I used was dated as of 12/1/20) I will be updating my analysis ASAP. The updated plots and analysis is posted here, but I’ll keep this post up for historic purposes.

The original image I created is replicated below for reference. As you can see, its a very blocky histogram created from the County level data points. There is a main lobe at about 90% turnout and 40% for Biden with some kurtotic streaking up and to the left with another grouping of Counties. While those features are indeed irregular and interesting, due to the coarse nature of the original per County data, it was plausible that the shape is just due to sampling issues so I didn’t flag WI as one of my issue states.

The data set I received this weekend however, is a drastic improvement in fidelity. It’s not without its data quality issues, as there was a good bit of data normalization needing to be done to get the vote tally data per ward group and the voter registration data per ward to marry up. Besides some different spellings, abbreviations and shorthand that needed to be rectified between the dataset, the registration data had any municipality that would straddle county lines labeled similar to the following format: “MULTIPLE COUNTIES, CITY OF NOWHERESVILLE, WARD 5A” along with a registered voter count. The vote count tally data had grouped multiple wards into different groupings such as “SOMEWHERE COUNTY, CITY OF NOWHERESVILLE, WARDS 1-3,4,5A,6C,13-15” along with a set of vote totals for Biden, Trump and TotalVotesCast. So I had to go through the files by hand and group each files corresponding data with the smallest size groupings as possible. There also seems to be a few (not many, though) Wards that are not accounted for by the Vote count result as well and others that are missing from the registration data. That being said, we can see much more detail in the generated statewide fingerprint (below), which also matches the “low-res” version that I had done previously. (Hooray … my results are consistent!)

We see what looks like two (or even three) superimposed lobes around the 90% turnout and 40% per Biden bin, which is consistent with my earlier low-res version, and we have a lot more detail as to the upward kurtotic smear off the main distribution. There also are a few Ward Groupings that have exceptionally high % for Biden (rarely, if ever, does a candidate receive near 100% vote share), and there are Ward Groupings that are near/over the 100% turnout marker, with the addition that some of those are ALSO either 100% Biden or 0% Biden (all big red flags)!

As discussed in the National Academy of Sciences paper that all of this work is based on, an idealized Election Fingerprint should look like a 2D Gaussian (or a multi-variate normal distribution). Or maybe, in an extremely divided populace, 2 overlapping Gaussian distributions. Deviations from this are, by definition, irregular and an indication that there might be an issue with the election. Distinct linear or non-linear features sloping away from the central lobes(s) could indicate voter manipulation or “ballot stuffing”; isolated regions at high turnout +/or very high vote percentage for one candidate could be an indication of extreme manipulation or vote substitution. Now, its true that no real Election Fingerprint will look perfectly Gaussian due to the realities of how elections operate, data errors, etc … but they should at least be close!

So that moves the needle for me as to considering WI as a problematic state based off Election Fingerprint generation. I would definitely say now that I think there are concrete signs of election irregularity in WI that deserve to be rigorously investigated. I can’t tell you if the shape of the above plot is due to incompetence, or outright fraud … but there is definitely something wrong!

Per County Data

Since I now have all of this rich data to play with … It’d be a shame to only do things statewide! I also produced fingerprints for every single county. One note here is that there is one plot that is the group of “MULTIPLE COUNTIES” that I had mentioned above due to the way the source registration data was organized and labelled. Some of the counties, look actually pretty good with nice, localized, near-gaussian distributions. Some are just an absolute mess!

My list of “interesting” counties:

ASHLAND, BAYFIELD, BROWN, CALUMET, CHIPPEWA, CLARK, DANE, DOGE, DOOR, DOUGLAS, DUNN, EAU CLAIRE, FOREST, GRANT, IOWA, JACKSON, JUNEAU, KENOSHA, KEWAUNEE, LACROSSE, LAFAYETTE, MARATHON, MILWAULKEE, MONROE, ONEIDA, OUTGAMIE, OZAUKEE, PIERCE, PORTAGE, RACINE, RICHLAND, ROCK, RUSK, SAULK, SHAWANO, SHEBOYGEN, St. CROIX, TAYLOR, VILAS, WASHINGTON, WAUKESHA, WAUPACA, WINNEBAGO (43/72 WI Counties)

Of that list, I’d label the following as “VERY interesting”:

BAYFIELD, BROWN, CALUMET, DANE, DOOR, EAU CLAIRE, KENOSHA, LACROSSE, LAFAYETTE, MARATHON, MILWAULKEE, OUTGAMIE, OZAUKEE, PORTAGE, RACINE, ROCK, SAULK, SHAWANO, SHEBOYGEN, St. CROIX, VILAS, WAUKESHA, WINNEBAGO (23/72 WI Counties)

The Election Fingerprints of all of the counties (plus the “MULTIPLE COUNTIES” super-group) are listed below:

Here is the link to the consolidated dataset used to generate all of the graphics on this page.

Categories
Election Data Analysis Election Forensics Election Integrity Interesting programming technical

(Another) Interesting View of VA 2020 Election Data

In answering some questions and messages I’ve been getting on my election analysis work, I took a minute and simply plotted the log-log plot of all of the absolute vote counts for Biden Vs. Trump for all precincts in the state. Real physical precincts are colored blue. Central absentee counting precincts are colored red. The real precincts seem to look about like I would expect, however the central absentee precincts fall fairly neatly on the logarithmic line, which is curious to me.

What do I think it means? Not quite sure yet as I’m still noodling things over … but it is very interesting, to say the least.

Categories
Election Data Analysis Election Forensics Election Integrity Ginsu Science Interesting programming technical Uncategorized

I have been censored by Big Tech for doing independent election research and analysis

Facebook has put me in “FB Jail” until Feb 7 for, I can only guess, my posting links to my independent analysis of election data and results. I’m assuming a Twitter ban will be coming shortly.

If the totalitarian fact checkers at facebook think the countless hours I have spent collating and documenting the election irregularities of the 2020 election is incorrect I invite them to please show me where I got the math wrong. I’ve shown my work, provided my sources and methodology. I’ve even made sure to not erase my errors and flaws as I found them but to acknowledge them and update my posts with corrections as I did the work in real time. I’ll happily debate and defend my analysis and the theory behind it, and if you can show me where I’m wrong or have mis-represented anything I will gladly correct it. This censorship by big tech is cowardly, totalitarian and demonstrably un-American.

From Thomas Paine: ‘He that would make his own liberty secure must guard even his enemy from oppression; for if he violates this duty he establishes a precedent that will reach to himself.’

The solution to bad ideas, or ideas that you do not agree with is not to try and silence the speaker, but to combat them with better ideas.

Categories
Election Data Analysis Election Forensics Election Integrity Interesting programming technical

A Midnight Spike in VA, and generation of Election Fingerprints over time.

BLUF: Discovered 55,196 vote spike in Alexandria City absentee ballots with 0 (… as in … zilch, zip, nada) for Trump or Jorgensen sometime between 11:30pm 11/3/2020 and 01:00am 11/4/2020. Generated time series of VA per county election fingerprints, and cumulative vote counts. Data sources: VA Dept of Elections voter registration data by locality file, NYT Edison time series datafeed snapshots from wayback machine.

Introduction:

So I’m still puzzled by the shape of the per county election fingerprint in VA. Multiple scientists I’ve talked to and worked with on this are all scratching their heads as to what would explain the significant structures observed. As a reminder, the election fingerprint “should” look like one (maaaaybe two for a really split electorate) Gaussian lobes, without a lot of smearing, linear features or structures. They will of course not be perfect Gaussians, but we would expect them to be somewhat close. I go into the theory and details of generating these fingerprints here, and the VA per county data is replicated below as well. It does not look Gaussian at all and is by definition an “irregularity” in the election data.

For reference I show the MN plot below as well, which still shows some slight irregularities, but for the most part it looks very clean. It’s got a little bit of kurtotic energy in the tails, but it looks like a pretty well defined 2D Gaussian main lobe otherwise. It looks like it could even have two distribution centers: one distribution center for a large number of the smaller (presumably suburban + rural) localities that didn’t go for Biden, and much fewer (but more populous) larger localities that went just slightly above 50% for Biden. Both distribution centers had about 90% turnout. The MN data makes sense to me, and other data scientists that I’ve shown it too, and it doesn’t set off any blaring alarm bells. The VA data however, remains inexplicable.

So, in trying to decipher what happened in VA, I was interested in taking a look at how the election fingerprints for VA evolved over time. Does the whole structure move fairly uniformly from left to right as more turnout occurs? Does it look Gaussian at any point in the counting process and then shift? In order to attempt to do that I need the per county vote tallies over time and unfortunately I didn’t anticipate needing to do analysis like this before the election, and so I didn’t setup anything to capture the updates to the VA Dept of Elections site or the NYT Edison datafeed. I tried to do an after-the-fact FOIA request, but it has been denied by VA Dept of Elections stating that they do not keep those records.

However … thankfully, the wayback machine does have a few snapshots of the VA datafeed. Not nearly what I would like to be able to make a full sequence to watch how the fingerprint takes shape, but its better than nothing. And while we’re at it, lets keep our eye’s out for individual counties that have large vote swings and also have statistically improbable results for any candidate (> 95%).

The earliest data file I could find on the wayback machine was from 2020-11-04T04:06:57.160Z and shows results through 11:30pm on the 3rd. While thats not ideal, that at least starts us off while Trump was still ahead.

2020-11-04T04:06:57.160Z

We can already see our “boomerang” structure fairly well formed in this initial plot, and I didn’t find any individual counties that had a large update with over 95% Biden. (Now that doesn’t mean such updates didn’t happen before this snapshot, but since my snapshot sampling rate is so low, each update includes more than one set of batch updates, and specific outlier batches might be just getting rolled into the sums.)

2020-11-04T05:34:34.206Z

We can pretty clearly see that just after the last snapshot, right around midnight, there’s obviously some sort of issue that happened with the data, with a couple of really large bumps for Biden that end up getting reversed and reverted. I have no idea if there’s any specific event that this can be correlated to in news reporting, if this is a glitch in the NYT feed, etc. But it looks like this event occurred between the updates to the NYT datafeed that I could find on the wayback machine. So whatever it is that happened, it got baked into the cake already as far as this datafeed snapshot is concerned. (If anyone has the files for these timestamps, please share!)

In addition to that we see that we’ve had a noticeable shift in our fingerprint as it looks like more low-turnout areas have been shifted into the boomerang.

Whats really interesting to me is that there was one locality (Alexandria) that had a large change of 55,196 Biden votes and ZERO for Trump or Jorgensen votes in the near hour and a half since the previous data points. From the data, it looks like these were all absentee votes, which we admittedly expect to be a higher turnout percentage for Biden … but 100% of such a large sample size … c’mon man! According to VA Dept of Elections, the absentee vote in Alexandria broke overall 84.78% (55,940 / 65,985) for Biden and 13.57% (8,951 / 65,985) for Trump. Now we know the underlying distribution is not I.I.D., so we should not expect exactly 13.57% of this batch to have gone for Trump, but we would still expect at the very least a small handful of this batch should have been for Trump. Additionally, this batch of absentee ballots makes up 83.65% of Biden’s total absentee haul, meaning Tump must have received 8,951 / (65,985 – 55,196) = 82.96% of ALL the remaining absentee votes in Alexandria, which also seems pretty unlikely.

2020-11-05T02:45:04.745Z and Beyond

After the previous batch there aren’t any more large outliers at least that I caught. But I only have a few snapshots from the wayback machine to work with. We see the remaining straggler counties start to shift to underneath the “boomerang”. If there was a point in time where the data was looking like a 2D Gaussian, it was before the first snapshot that I was able to find and get my hands on.

Complete Galleries Below:

Categories
Election Data Analysis Election Forensics Election Integrity Interesting programming technical

Excess Absentee Votes in VA

See also my previous election fingerprint blog posts here, and here. There is another, related, discrepancy in the Daily Absentee List data that I document here.

Originally Posted 2020-12-01 10:58:00 (Multiple Updates)

After computing the VA election fingerprints which clearly indicate that more investigation is required into the 2020 VA vote data, I took a look at the official VA daily absentee ballot count file and compared it with the JSON reports from VA dept of elections.  The JSON data provides a summary total of the votes recorded at each virtual absentee precinct, and the daily absentee list (here) gives all of the absentee ballot registrations for each precinct. For each (virtual) absentee precinct in a locality I summed all of the daily absentee numbers from component real precincts in order to compare those numbers with the reported total absentee votes. If everything has been tallied and recorded correctly they should be equal, or at least close.

I then compute the “excess absentee vote” by taking the difference of the number of total absentee votes reported in each virtual absentee precinct minus the cumulative (‘Marked’ + ‘Pre-Processed’ + ‘OnMachine’ + ‘FWAB’) numbers for the absentee precinct.  

I finally plotted the “excess absentee” vote totals vs the % of the absentee precinct vote that went for Biden.  Ideally we would like to see excess absentee vote == 0, meaning that the daily absentee reports and the number of absentee ballots that were counted in each virtual precinct match perfectly.  (I’ll give you a hint … they don’t.)

Outstanding Question: Is there a description document someplace where the BALLOT_STATUS (‘Marked’, etc) meanings are described.  I’m using my best guess as to which categories map to valid ballots, and I’d like to double check that.

Each dot in the plot above represents one of the virtual absentee precincts across the commonwealth. Unsurprisingly, we can clearly see that as the number of excess absentee votes increases more of the absentee vote totals go to Biden. Summing over all of the excess votes, there were 1,334,968 excess absentee votes across VA in the 2020 election using this method. Where did these 1,334,968 votes come from? (See latest updates below)

All source data comes directly from the VA Dept of Elections. My tabulated results are posted below. I welcome any / all peer review and will gladly make my code and compiled datasets available.

Note: Removed incorrect files ... see updates below

Update 2020-12-01 19:30:00

In discussions with The Virginia Project and others that have been churning and burning through this data, there was a question as to weather or not the Daily Absentee Tally dataset (which is available to campaigns by request from the dept of elections), which is what I used above includes the In-Person early vote. My understanding is that the early vote was treated the same as No Excuse Absentee, so early vote numbers *should* be included in the Daily Absentee Tally dataset. But it looks like that might not be true. The JSON files published by VA dept of elections only give the sum totals per candidate per precinct (including absentee precincts), and I used the Daily Absentee Tally dataset to map how many absentee (and early votes) should correspond to each precinct.

However, there is another dataset that I was pointed to that could be a useful comparison and way to compute the missing numbers: that is the Summary Absentee Dataset located here. This dataset DOES contain the In-Person early vote absentee totals (‘ApplicationType’ == ‘In Person’), but it is only generated per absentee counting precinct and not mapped back to the voters physical precinct. It does however break down the Absentee votes per age group, gender, and type of absentee ballot … which is nice … but not what I’m looking for at the moment.

So, we have two datasets, both summaries of the absentee vote numbers with different breakdowns, that *should* sum to give the same totals. Surprise … they don’t. Why? Unknown. The ‘In Person’ vote not being included in the Daily tally does not reconcile the numbers between the two datasets, though.

The plot I generated above, redone with this other dataset is shown below. I’ve included new csv files with the additional data (I’ve labeled as “_V2”). The excess votes per absentee district are similarly computed as the totalVote reported by each absentee precinct (from the JSON files) minus the sum count of all of the Absentee/Mail-In numbers from the Summary Absentee Dataset for that absentee precinct. This new plot does not show positive excess votes, but instead shows negative excess votes, with higher negative excess votes also showing higher Biden total vote percentage. I don’t know which one is correct, but both seem to show high positive / negative excess vote numbers that align with higher Biden percent of the vote. Summing over all of the negative excess votes gives -121,049 votes that are unaccounted for.

One additional question I have is how to tease out the rejection rate of Absentee/Mail-In votes, which might be a contributing factor for both plots. Are the numbers in the Daily or Summary absentee stats files before or after rejection? I have so far not been able to find a dataset that captures the rejection rates for Absentee/Main-In ballots.

Note: Removed incorrect files ... see updates below

Update 2020-12-04 02:00:00

So I’ve been able to confirm that the Daily Absentee List DOES, in fact, contain the In-Person “early” votes. I did this by finding my name and address in the list as I voted early on Oct 26th. The early votes are the ones marked as “On Machine”. I will also note that the date reported for my early vote was incorrectly set to Oct 28th (I voted on the 26th), which is why I had difficulty finding it at first.

So this means that:

  1. My first plot above *should* be correct in its computation of the “excess absentee vote”. Save for a fat finger bug in my code (I’m in the process of double-checking, btw).
  2. The Summary Absentee count does not match the totals from the Daily Absentee List. Why?
  3. If the Daily list is correct, and the excess vote is computed correctly above in the first plot, then how to account for the 1,334,968 excess votes?

Update 2020-12-06 00:05:00

I have revised my previously computed excess vote number of 185,713 to 1,334,968 due to finding some “fat finger” errors, and idiosyncrasies with the DAL file.

Yes, I know … thats a really big number! I’m going back over my code again to see where / if I screwed something up. I will continue to update if I find anything else.

I’ve also taken the time to clean up the plots, both with and without annotations as to which precincts were the most egregious offenders.

Update 2020-12-10 23:12:00

Happy to report that I found a logical bug in my code.  I was subtracting PreProcessed ballots when I should have been adding when computing the excess vote with the DAL data (D’Oh!).  It’s a simple bug, but produces a big difference.  Result is a much smaller order of magnitude difference in the excess vote numbers, and a much more believable excess vote tally.
This line of code:

>> abCntVotes(j) = tdata.marked(j) + tdata.onMachine(j) - tdata.preProcessed(j) + tdata.fwab(j) ;

Should have read:  

>> abCntVotes(j) = tdata.marked(j) + tdata.onMachine(j) + tdata.preProcessed(j) + tdata.fwab(j) ;

That’s the good news.

The first bit of bad news is that the Summary Absentee List (SAL) still doesn’t make much sense, as discussed in my 2020-12-01 update above.  The other bad news is there are two absentee precincts that still stick out like a sore thumb from the DAL derived excess vote numbers. Guess which ones they are … PRINCE WILLIAM COUNTY (11) and PRINCE WILLIAM COUNTY (1)!  PWC district 1 and 11 are both waaay outside the standard deviation on the plot below.  Another curious fact is that we see the deviation on the Biden precincts (blue) looks markedly higher than the deviation in the Trump precincts (red)

Now if we look at the summary totals of the PWC absentee precincts we see that the sum of the negative excess absentee counts of district 1 and 10, are almost a perfect complement of the district 11 excess count (far right column).  That’s also curious.  By itself I’d call that just a coincidence, but combined with the fact that PWC 11 and 01 are also so outside the general trends of all other precincts in the plot above that gets my worry beads out.

Per discussion with PWC staff, there was apparently an error in reporting election data that got caught and corrected where all absentee votes were being sent to the district 01 absentee precinct, so this might be an artifact of that issue.

Additionally, and this is something we see in all of the precinct data and in the JSON data itself.  The JSON data files directly report the Trump, Jorgensen and Biden vote totals, as well as the ‘totalVotes’ numbers. The ‘sumVotes’ column below is the sum of the Trump, Jorgensen and Biden votes which should equal the ‘totalVotes’ column, but it doesn’t.  It’s not usually a dramatic difference, but its a difference all the same.

Again, per discussion with PWC staff, the ‘totalVotes’ numbers reported by the Dept. of Elections JSON data feed includes items such as overvotes / undervotes / unmarked ballots, which count for turnout reasons, but don’t get attributed to a specific candidate.

localityStrprecinctStrNregDonald J. TrumpJo JorgensenJoseph R. BidensumVotestotalVotesissuedmarkedonMachinecancelleddeletedfwablatenotIssuedpreProcessedprovisionalunmarkedabsenteeVotesSumexcessAbsenteeVotes
PRINCE WILLIAM COUNTY# AB – Central Absentee Precinct (01)1154752272078146939704407072125903371471430610662032144909172025-1304
PRINCE WILLIAM COUNTY# AB – Central Absentee Precinct (10)4538310588443213713240232525968144322543029541400884214232842-317
PRINCE WILLIAM COUNTY# AB – Central Absentee Precinct (11)106455195797824604066401666833303322840443056265200213380111650611622

So taking all of the above into account, and assuming that PWC 11 and 01 are artifacts of a data entry error, using the DAL and the JSON vote tallies we see that there is a good bit, but not extreme amounts, of variation in the “excess vote” and that the deviations in excess vote seems greater in blue precincts than in red precincts.

The SAL data still does not agree with the JSON or the DAL data files, and I’m still working to figure out why.

My tabulated results are posted below. Note that I do not include the raw DAL data in my results below, only my summarized results, as the raw data contains personal address information. I welcome any / all peer review and will gladly make my code and compiled datasets available.

Update 2020-12-13 17:44:00

Per twitter comment, looking at the data with normalized x-axis (as percent of absentee vote total) in order to compensate for different precinct sizes produces the plot below. Newport News City and Richmond County now also stand out, and we still see a difference in deviation of excess votes between Biden precincts and Trump precincts.