I was trying to find timestamp data for the Georgia 2021 Senate Runoff election. I couldn’t find it easily via a google search, but I kept digging, and managed to find it and extract it from NY Times’ live prediction data feed. Here it is …


Code … georgia.sh:
# Zoe Phin, 2021/01/06
require() { sudo apt-get -y install curl jq gnuplot; }
download() {
curl -o ga1.json https://static01.nyt.com/elections-assets/2020/data/liveModel/2021-01-05/senate/GA-G-S-2021-01-05.json
curl -o ga2.json https://static01.nyt.com/elections-assets/2020/data/liveModel/2021-01-05/senate/GA-S-S-2021-01-05.json
}
timeseries() {
jq -Mc '.races[0].timeseries[]|[.timestamp,.vote_counted,.republican_voteshare_counted,.democrat_voteshare_counted]' ga1.json | tr -d '["]' > ga1.csv
jq -Mc '.races[0].timeseries[]|[.timestamp,.vote_counted,.republican_voteshare_counted,.democrat_voteshare_counted]' ga2.json | tr -d '["]' > ga2.csv
}
format() {
for i in 1 2; do
(echo "Timestamp Votes Rep % Dem % Rep Dem"
awk -F, '{ "TZ=US/Eastern date +%x,%R:%S -d "$1 | getline t; printf "%s %7d %6.4f %6.4f %7d %7d\n", t, $2, $3, $4, $2*$3, $2*$4 }' ga$i.csv
) > ga$i.txt
done
}
plot() {
awk -F, '{ "TZ=US/Eastern date +%d%H%M%S -d "$1 | getline t; printf "%s %7d %7d\n", t, $2*$3, $2*$4 }' ga$1.csv > ga$1.dat
(echo 'set term png size 640,480
set key top left
set grid xtics ytics
set ylabel "Million Votes"
set timefmt "%d%H%M%S"
set xdata time
set xtics format "01/%d\n%H:%M"
set ytics format "%.1f"
set mytics 5'
echo "plot 'ga${1}.dat' u 1:(\$2/1e6) t '$2' w lines lc rgb 'red','' u 1:(\$3/1e6) t '$3' w lines lc rgb 'blue'"
) | gnuplot > ga$1.png
}
Run it:
$ source georgia.sh; require; download; timeseries; format
format generates timestamp data into two files: ga1.txt and ga2.txt. The results are archived here and here, respectively.
Race 1 is Perdue vs. Ossoff, and Race 2 is Loeffler vs. Warnock
To plot the data:
$ plot 1 Perdue Ossoff
$ plot 2 Loeffler Warnock
This generates ga1.png and ga2.png, which I present above.
I left my opinion out of this post. Curious Windows coders should follow instructions here.
Enjoy the data 🙂 -Zoe
Looks like blue gets a leg up as required.
LikeLike
A leg? They got stilts!
LikeLike
Is it possible to identify the suspect parcels?
LikeLike
I don’t see how. If I was privy to more data …
LikeLike
There are two districts for each federal position, yet only one down ballot name? Not sure if we are comparing apples to apples when you note that the down ballot total was higher than the two individual district totals. Nice work tho’, your analysis is appreciated
LikeLiked by 1 person
In the last half of my article, I simply combined both races, just to see who wins: Left or Right. I could’ve also averaged them. The point was to show that Georgia is still a Right state.
Thank you very much, Chris 🙂
LikeLike
I’m noticing three near-vertical lines at 20:15, 21:25 and 23:20 where a whole lot of blue votes were counted in a very short time and red is basically unaffected. In all three cases blue rises above red. Otherwise the slope for red is generally higher than for blue. The Republican is getting a higher percentage of votes in all but a few specific points where nearly all Democratic votes are being counted. After midnight the republican gets basically no more votes but the democrat is still having a few come in. I’m wondering if any of these slopes exceed the count-rate of the machines.
LikeLiked by 1 person
I left analysis out of this post. You make Excellent arguments.
LikeLike
Wow! You have to ask how is this done? Suggestions that a proportion of votes get ‘moved’ from one candidate to another have been made (RTFM). However this would be done carefully to avoid the vertical spikes. Could this be as crass as
(1) pull out a bunch of ballots all for one party (Dem) and
(2) run them through the counting machine multiple times?
Anyway even from here in Australia this smells very fishy!
Nice work
LikeLiked by 1 person
Thank you, Sandy. Greetings to Australia! I have many fans there 🙂
LikeLike
Verrry interesting. I wonder if the large discrete jumps in Democrat votes could be because they are concentrated in a few high-population counties, which send occasional updates of the count?
LikeLike
The lack of explanation for this, and similar data has led me to personally not have any trust in U.S elections going forward, regardless of result.
LikeLiked by 1 person
Thank you for your research, Zoe.
I would like to send you a research idea by email.
Could you please contact me? Thank you.
LikeLike
Looks suspiciously like the WI and MI vote tallies for President…
LikeLiked by 1 person