FT Crusader Logo

Saint Paul (MN) Mayor Election Voting Report [Data Only]:
Report Completed 07/31/19

By Frogtown Crusader (Abu Nayeem)

Brief Introduction

In this report, I will be using Minnesota Voting Data/Records to show insight on the 2017 Saint Paul mayoral elections as well to illustrate systemic inequities. As part of the Saint Paul Open-Data Project, the coding will be accessible to everyone. This is only a data report, the qualitative and solution portion was excluded so readers can come up with their own conclusions.

  1. Data Analysis [Informational]: Include voting rate for different elections, Ward analysis, Youth voter rate, and Precinct fragmentation analysis

Disclaimer: I am running for Saint Paul city council for Ward 1 (election on November 5th, 2019). One core feature of the Citizen-First campaign is to educate citizens about current systemic inequities and local issues so we can work on them together. I have decided to create an open data report for all of Saint Paul (not just my Ward), so citizens and candidates throughout the city have discussions on systematic voter suppression, and take active actions in addressing it.

Saint Paul Open Data Initiative

This initiative focuses on taking public information/data from municipalities and organizations to create interactive reports and analysis to better inform and assist community members to take action. This is an open-source project meaning that all coding is accessible to everyone, and thus there is transparency on the results. It is currently all python-based. As always, I encourage other programmers and developers to participate in making this more accessible. You can learn more information on the project Github page as well as accessing documents.

Unlike my previous reports, the Minnesota voting records is not publicly available, but is publicly accessible. I will not provide the raw data on the project page as it contains sensitive personal information, you can contact the Minnesota Secretary of State for the voting records here, which also includes the columns provided.

If you use any material/graphs from the report, please give credit to me and the project

Reader's Note

There are a few questions that I want you to consider when reviewing the data analysis:

  1. Why does our local elections matter?
  2. Who benefits from the current system and who doesn't?
  3. What can we do about it?

Here are some FACTS (i.e. data results) from the 2017 Mayoral Elections to get you motivated to read further

Drawing

  • During the last presidential election, registered voter turnout was 78%, while the 2017 mayoral election average around 36%, with Ward 3 voter turnout was close to 50%
  • Despite younger adults being the largest demographic, it is the senior citizens who vote disproportionately more.
  • The 18-20 age group voting percentage for the mayoral election was around 13%
  • 32 out of 95 voting precincts are under-representated (less than 75% representation). See Map Below
In [16]:
map_2017_SP_MayorRepresentation_byPrecinct()
Out[16]:

Section I: Data Analysis

About the Data:

The data is taken from Minnesota voting records and the data was current of 6/24/2019 as indicated in the picture below. There are two datasets in the CD: Voter profile and Voting Records. This is the bare basic voting information obtained from the state that it is utilized by most campaigns. In addition, I got geojson file for my map here

Drawing

Background:

As a Saint Paul resident, I am represented by different layers of governance, whom I can vote for during an election. The layers of governance can be broken down to four categories: Federal, State, County, and Local. Only the local city election occur during the odd calendar years. The other government roles have the elections on even years and the available open seats are staggered. In Saint Paul, the city council elections shares the staggered term of the school board. The Saint Paul City Council member term is four years and is not staggered. In contrast, the sister city, Minneapolis, has the mayoral and city council election occurs at the same time calendar year, which will be used for comparison.

The last four more major elections in Saint Paul:

  • 2018: Governor, Senator
  • 2017: Mayor
  • 2016: Presidential
  • 2015: City Council

All of these governmental bodies are interconnected providing services/representing citizens directly. Within Saint Paul’s Ward 1, there are 4 state representatives, 3 county commissioners, and 3 state senators. In other words, there is considerable overlap between agencies based on living location. The Saint Paul city council is the legislative board of the city, totaling 7 council members for each Ward, which holds roughly 41,000 people respectively. The ward can be further broken down even further into non-elected district planning councils that represent neighborhoods areas, and serve an essential role for the city's comprehensive development plan.

Drawing

From the map above, we can see there is potential fragmentation, where certain pockets of a neighborhood may be isolated. I will be implementing a precinct analysis, to find which precincts are under-represented compared to surrounding precincts in the ward.

Data Assumptions:

Assumptions: The raw data contains the records of registered voters, so there might be some voters whom that have not registered within and/or outside Saint Paul. In addition, some voters may likely be deceased (i.e. there are 120 year olds), and their voter information has not been removed from the records. In both cases, the numbers are negligible and substantial data cleaning is unnecessary for this report.

Methodology:

1) Time Sensitivity on Registered Voters: It is sensitive to time, especially within the last three years. Time sensitivity is less for older populations as there is numerous years giving accurate number on the total potentional registered voters. It is recommended to do a youth analysis, after at least one major federal/state elections

2) Finding the approximate age of registered voters: For each registered voter, the year for date of birth was provided, which was used to determine their relative age. The actual age is important for 18 year olds, as they are not able to vote if they turn 18 after a general election, so they have 1/6 less representation

3) Finding the number of potential registered voters at a given election year: This is done through a post-hoc method where I take the voter registration of succeeding elections to determine the number of people in the age group that could have voted. This is similar to the time sensitivity

Age/Voter Demographics:

First, let’s explore the age demographic relationship between Saint Paul and Minneapolis as these two cities are closely connected. From the plots below, we see that Minneapolis has greater concentration of younger voters than Saint Paul, and the total number of voters are higher in general. For both cities, the younger adults make up the bulk of voting population.

Drawing

Drawing

When plotting the age distribution of each wards within Saint Paul, Ward 3 differs by having a more even age distribution as demonstrated below.

Drawing

Finally, if we break down voter registration by ward, we see that Ward 3 has the most registered voters with around 50% more registered voters than Ward 5 & 6 respectively. It is important to note: the normalized weighting metric that will be used expects the Ward 3 will vote more since they have more registered voters.

Drawing

Voting Trends:

As explained in the Background section, local elections are only during the odd years. As many would expect, the turnout is low for local elections

Drawing

The following graph below compares participation on city council election of Saint Paul and Minneapolis.

Drawing

Finally, the graph below plots the voter participation rate by age group. Notice, the Saint Paul young adult participation is low despite being the larger demographic and Minneapolis has considerable voter turnout for their local election, which is probably directly related to having the mayoral and city council election at the same time.

Drawing

Ward/Youth Vote:

From the following tables below we see the voting and youth participation significantly less for the city council and mayoral election in comparison to the presidential election. The competitive wards, highlighted in yellow, have greater voter turnout. Though Ward 3 had a moderate turnout despite not being a competitive race. Note: I used Google Sheet because it has conditional color formating.

Drawing

Mayor Information is below:

Drawing

In [ ]:
 
In [ ]:
 

Ward/Precinct Analysis: Fragmentation

Ward Analysis

For my analysis, it is assumed that each precinct should vote at equal rate in comparison to neighboring wards. For each ward, I create some column calculations:

  • Projected Weight: (The total registered voters within Ward) / (The total registered voters)
  • Actual Weight: (The total actual votes within Ward) / (The total actual voters)
  • Representation: (Actual Weight) - (Projected Weight)
  • H_Density%:: The percentage of registered voters that live in an address with 10 or more people
  • H_Density_Vote%:: The voting rate for residents living in dense areas
  • L_Density_Votes%:: The voting rate for residents living in non-dense areas (less than 10 people in household)

Ideally, the "Representation" should be near zero across the wards. However, the base weight favors those Wards that have greater number of registered voters. We see that Ward 3 and Ward 4 are over-represented in the mayoral race. Over 25% of the vote for the Mayoral election came from Ward 3 alone. There is a voting gap for renters ranging minimum for 10%. Many renters may not even register to vote if they are staying in a location for short period of time.

In [54]:
W_15
Out[54]:
Ward Tot_Register Tot_Votes Tot_Vote% H_Density% H_Density_Vote% L_Density_Vote% Representation
0 1.0 21420 7470.0 34.87 21.00 26.77 37.03 -0.51
1 2.0 26499 9056.0 34.17 38.79 28.46 37.80 -0.95
2 3.0 28639 14232.0 49.69 20.96 31.48 54.53 6.55
3 4.0 25989 11090.0 42.67 24.65 24.78 48.52 2.84
4 5.0 19671 6182.0 31.43 15.10 17.57 33.89 -1.63
5 6.0 19141 5247.0 27.41 8.02 19.93 28.06 -2.89
6 7.0 20323 5376.0 26.45 16.40 16.36 28.43 -3.40

Precinct Analysis

For my analysis, it is assumed that each precinct should vote at equal rate in comparison to neighboring precincts. For each precinct, I create some column calculations:

  • Projected Weight: (The total registered voters on precinct) / (The total registered voters)
  • Actual Weight: (The total actual votes on precinct) / (The total actual voters)
  • Representation%: (Actual Weight/ Projected Weight) x 100
  • H_Density%:: The percentage of registered voters that live in an address with 10 or more people
  • H_Density_Vote%%:: The voting rate for residents living in dense areas
  • L_Density_Votes%:: The voting rate for residents living in non-dense areas (less than 10 people in household)

For "Representation%, I've normalized the data to see the representation of turnout for voting precinct. Ideally, this percentage should be 100% for each district. Once again, the base weight favors those precincts that have greater number of registered voters.

Ward 1 Precinct Analysis

Drawing

In [55]:
P_15.query('Ward==1')
Out[55]:
Ward Precinct Tot_Vote Tot_Register Vote% H_Density% H_Density_Vote% L_Density_Vote% Representation%
0 1.0 Saint Paul W-1 P-1 639.0 1161 55.04 15.42 36.31 58.45 151.39
1 1.0 Saint Paul W-1 P-10 97.0 450 21.56 15.33 20.29 21.78 60.71
2 1.0 Saint Paul W-1 P-11 293.0 1111 26.37 41.31 27.23 25.77 72.46
3 1.0 Saint Paul W-1 P-12 162.0 335 48.36 31.64 39.62 52.40 133.33
4 1.0 Saint Paul W-1 P-13 518.0 1150 45.04 26.78 39.61 47.03 123.94
5 1.0 Saint Paul W-1 P-14 288.0 961 29.97 29.14 37.50 26.87 83.05
6 1.0 Saint Paul W-1 P-15 162.0 722 22.44 11.22 18.52 22.93 62.22
7 1.0 Saint Paul W-1 P-16 77.0 238 32.35 8.82 4.76 35.02 86.67
8 1.0 Saint Paul W-1 P-2 786.0 2159 36.41 33.40 20.67 44.30 100.00
9 1.0 Saint Paul W-1 P-3 568.0 1844 30.80 9.71 9.50 33.09 85.09
10 1.0 Saint Paul W-1 P-4 414.0 1350 30.67 1.33 5.56 31.01 85.54
11 1.0 Saint Paul W-1 P-5 420.0 1324 31.72 6.57 13.79 32.98 87.80
12 1.0 Saint Paul W-1 P-6 1004.0 2717 36.95 10.45 20.42 38.88 101.79
13 1.0 Saint Paul W-1 P-7 698.0 1481 47.13 16.81 26.91 51.22 129.35
14 1.0 Saint Paul W-1 P-8 821.0 2147 38.24 55.24 31.45 46.62 105.26
15 1.0 Saint Paul W-1 P-9 523.0 2270 23.04 11.94 14.02 24.26 63.57
In [17]:
map_2017_SP_MayorRepresentation_byPrecinct(1)
Out[17]:

Ward 2 Precinct Analysis

Drawing

Additional Map Link

In [57]:
P_15.query('Ward==2')
Out[57]:
Ward Precinct Tot_Vote Tot_Register Vote% H_Density% H_Density_Vote% L_Density_Vote% Representation%
16 2.0 Saint Paul W-2 P-1 790.0 1598 49.44 18.65 27.85 54.38 136.36
17 2.0 Saint Paul W-2 P-11 842.0 2864 29.40 99.16 29.40 29.17 81.36
18 2.0 Saint Paul W-2 P-13 563.0 1533 36.73 23.94 27.52 39.62 101.05
19 2.0 Saint Paul W-2 P-14 453.0 1698 26.68 4.95 11.90 27.45 73.33
20 2.0 Saint Paul W-2 P-15 531.0 2674 19.86 13.61 17.03 20.30 55.15
21 2.0 Saint Paul W-2 P-2 826.0 1700 48.59 16.47 36.79 50.92 134.29
22 2.0 Saint Paul W-2 P-3 865.0 2619 33.03 22.11 16.58 37.70 90.74
23 2.0 Saint Paul W-2 P-4 626.0 1548 40.44 30.10 29.40 45.19 111.46
24 2.0 Saint Paul W-2 P-5 894.0 2368 37.75 15.84 29.87 39.24 104.11
25 2.0 Saint Paul W-2 P-6 209.0 614 34.04 73.62 34.51 32.72 94.74
26 2.0 Saint Paul W-2 P-7 747.0 2213 33.76 50.75 28.50 39.17 92.70
27 2.0 Saint Paul W-2 P-8 324.0 1233 26.28 83.37 22.28 46.34 72.37
28 2.0 Saint Paul W-2 P-9 700.0 2019 34.67 95.74 34.82 31.40 95.20
In [18]:
map_2017_SP_MayorRepresentation_byPrecinct(2)
Out[18]:

Ward 3 Precinct Analysis

Drawing

In [58]:
P_15.query('Ward==3')
Out[58]:
Ward Precinct Tot_Vote Tot_Register Vote% H_Density% H_Density_Vote% L_Density_Vote% Representation%
29 3.0 Saint Paul W-3 P-1 1212.0 2065 58.69 3.78 30.77 59.79 161.72
30 3.0 Saint Paul W-3 P-10 854.0 1481 57.66 4.86 44.44 58.34 158.70
31 3.0 Saint Paul W-3 P-11 489.0 1941 25.19 70.79 28.38 17.46 69.17
32 3.0 Saint Paul W-3 P-12 975.0 1779 54.81 12.48 24.77 59.09 150.91
33 3.0 Saint Paul W-3 P-13 972.0 1844 52.71 19.58 45.43 54.48 145.61
34 3.0 Saint Paul W-3 P-14 1892.0 3590 52.70 6.02 55.09 52.55 145.50
35 3.0 Saint Paul W-3 P-2 1368.0 2481 55.14 7.58 21.81 57.87 152.29
36 3.0 Saint Paul W-3 P-3 1309.0 2715 48.21 22.76 35.28 52.03 132.74
37 3.0 Saint Paul W-3 P-4 666.0 1325 50.26 40.08 34.84 60.58 139.02
38 3.0 Saint Paul W-3 P-5 748.0 1930 38.76 55.18 31.27 47.98 107.56
39 3.0 Saint Paul W-3 P-6 1062.0 2129 49.88 9.39 27.50 52.20 137.12
40 3.0 Saint Paul W-3 P-7 525.0 1265 41.50 48.62 24.39 57.69 115.38
41 3.0 Saint Paul W-3 P-8 883.0 1599 55.22 5.25 19.05 57.23 152.53
42 3.0 Saint Paul W-3 P-9 1277.0 2495 51.18 15.23 28.42 55.27 141.56
In [19]:
map_2017_SP_MayorRepresentation_byPrecinct(3)
Out[19]:

Ward 4 Precinct Analysis

Drawing

In [59]:
P_15.query('Ward==4')
Out[59]:
Ward Precinct Tot_Vote Tot_Register Vote% H_Density% H_Density_Vote% L_Density_Vote% Representation%
43 4.0 Saint Paul W-4 P-1 791.0 1621 48.80 17.89 27.59 53.42 135.00
44 4.0 Saint Paul W-4 P-10 991.0 2025 48.94 8.99 35.71 50.24 135.20
45 4.0 Saint Paul W-4 P-11 1025.0 2202 46.55 16.85 21.83 51.56 128.68
46 4.0 Saint Paul W-4 P-12 564.0 1703 33.12 58.90 22.63 48.14 91.43
47 4.0 Saint Paul W-4 P-13 580.0 1488 38.98 22.72 24.26 43.30 107.61
48 4.0 Saint Paul W-4 P-14 648.0 1444 44.88 4.16 5.00 46.60 123.60
49 4.0 Saint Paul W-4 P-15 707.0 1531 46.18 8.10 14.52 48.97 127.37
50 4.0 Saint Paul W-4 P-2 766.0 1303 58.79 8.83 55.65 59.09 161.73
51 4.0 Saint Paul W-4 P-3 734.0 2321 31.62 73.59 27.81 42.25 86.81
52 4.0 Saint Paul W-4 P-4 827.0 1814 45.59 7.28 22.73 47.38 125.89
53 4.0 Saint Paul W-4 P-5 608.0 1334 45.58 8.77 23.93 47.66 125.30
54 4.0 Saint Paul W-4 P-6 420.0 1468 28.61 54.29 15.06 44.71 79.12
55 4.0 Saint Paul W-4 P-7 925.0 1845 50.14 16.96 20.13 56.27 138.60
56 4.0 Saint Paul W-4 P-8 911.0 2209 41.24 13.49 18.79 44.74 113.14
57 4.0 Saint Paul W-4 P-9 593.0 1681 35.28 33.14 35.01 35.41 97.12
In [27]:
map_2017_SP_MayorRepresentation_byPrecinct(4)
Out[27]:

Ward 5 Precinct Analysis

Drawing

In [60]:
P_15.query('Ward==5')
Out[60]:
Ward Precinct Tot_Vote Tot_Register Vote% H_Density% H_Density_Vote% L_Density_Vote% Representation%
58 5.0 Saint Paul W-5 P-1 803.0 2023 39.69 11.52 21.46 42.07 109.60
59 5.0 Saint Paul W-5 P-10 119.0 641 18.56 12.32 1.27 21.00 50.00
60 5.0 Saint Paul W-5 P-2 1261.0 2472 51.01 7.04 24.71 53.00 140.52
61 5.0 Saint Paul W-5 P-3 876.0 2042 42.90 13.17 24.16 45.74 118.25
62 5.0 Saint Paul W-5 P-4 937.0 3531 26.54 28.83 14.24 31.52 73.39
63 5.0 Saint Paul W-5 P-5 421.0 1848 22.78 29.00 23.51 22.48 63.16
64 5.0 Saint Paul W-5 P-6 469.0 1852 25.32 5.02 7.53 26.26 69.57
65 5.0 Saint Paul W-5 P-7 283.0 1166 24.27 3.34 35.90 23.87 66.67
66 5.0 Saint Paul W-5 P-8 618.0 2379 25.98 20.43 13.58 29.16 71.43
67 5.0 Saint Paul W-5 P-9 395.0 1717 23.01 2.56 11.36 23.31 63.21
In [21]:
map_2017_SP_MayorRepresentation_byPrecinct(5)
Out[21]:

Ward 6 Precinct Analysis

Drawing

In [61]:
P_15.query('Ward==6')
Out[61]:
Ward Precinct Tot_Vote Tot_Register Vote% H_Density% H_Density_Vote% L_Density_Vote% Representation%
68 6.0 Saint Paul W-6 P-1 482.0 1409 34.21 4.19 8.47 35.33 94.25
69 6.0 Saint Paul W-6 P-10 251.0 995 25.23 14.87 27.03 24.91 69.35
70 6.0 Saint Paul W-6 P-11 469.0 1674 28.02 1.79 23.33 28.10 76.92
71 6.0 Saint Paul W-6 P-2 554.0 1256 44.11 4.86 27.87 44.94 120.51
72 6.0 Saint Paul W-6 P-3 473.0 1558 30.36 2.37 16.22 30.70 84.38
73 6.0 Saint Paul W-6 P-4 464.0 1920 24.17 15.36 9.15 26.89 66.39
74 6.0 Saint Paul W-6 P-5 595.0 2128 27.96 3.24 4.35 28.75 76.52
75 6.0 Saint Paul W-6 P-6 615.0 2493 24.67 4.41 10.00 25.35 68.18
76 6.0 Saint Paul W-6 P-7 152.0 640 23.75 25.47 49.08 15.09 65.00
77 6.0 Saint Paul W-6 P-8 363.0 1582 22.95 21.05 23.42 22.82 63.27
78 6.0 Saint Paul W-6 P-9 544.0 2318 23.47 9.92 13.91 24.52 65.03
In [30]:
map_2017_SP_MayorRepresentation_byPrecinct(6)
Out[30]: