3 takeaways from WA Presidential Primary

Here are some key takeaways from the Washington State 2020 presidential primary yesterday.

Background

Voters were required to mark a party on their ballot and then Democrats could vote for the Democrat nominee (a race down to Biden vs. Bernie) while Republicans could vote for the Republican Nominee (Trump).

While everyone’s specific vote (ie, Biden vs. Bernie) is private, the list of who voted and their party preference on the ballot is public (Democrat vs. Republican) and maintained by the Secretary of State.

Results

As our snapshot last night (midnight at Mar 10th) , there were 1.8 million ballots received (about 37% of the total voters) with the following split:

WaPresPrimaryResults

[Source: Secretary of State March 10th Election Results.]

We expect the absolute numbers to change as more ballots are received in the mail; but the percentages and trends will likely stay similar.

96% of voters successfully marked a party preference. Leading up to Tuesday, there was some controversy about the need to mark a party preference, but in practice, the overwhelming majority complied.

Leveraging a party score database

Voter-Science maintains a Party Identification database that associates each voter with a Party ID score.  This database is used by hundreds of candidates across the state and has frequently predicted elections to 99%+ accuracy. (contact info@voter-science.com to learn more about our database).

We can then join the ballot results with the party scores to gain additional insights. Here’s the pivot showing both party score (rows) and ballot marking (columns).

WaPresPrimaryResultsByPartyScore

Voter-Science has a party score for over 90% of the voters.

  • A “hard” voter is that party’s base and likely to vote straight party line.
  • A “soft” voter likely identifies with a party but is still considered persuadable.
  • The “Unknown” row is people that VS doesn’t yet have a party score for.

For example, this reads that 1.1 million ballots were marked Democrats, and of that 544k of those voters have voter-science party score of “soft democrat”.  The boxes inline show the cross over votes.

Independents went 67.3% : 32.7%  for a Democrat ballot over a Republican one.  That could spell trouble for Republicans in November, or it may be because the Democrats still had an interesting choice on their ballot whereas Republicans just could vote for Trump.

 

What about cross-over voting?

Dedicated party voters stuck with their party ballot. Only 27k GOP and 10k democrats did cross over and vote on the other ballot.  The 10k democrat voters may seem significant, but that’s only 0.58% of the total votes – a small enough number to be attribute to voter error in filling out their ballot. This won’t be an issue in November once there’s just a single general ballot.

But, there’s interesting cross-over from Soft Dem/GOP:

76k soft democrats (8.3% of total Dems) voted on an uncontested GOP ballot to support Trump. That’s 5% of the total vote, which could be an interesting sector if Republicans can identify and leverage them in November.

20.3% of total GOP voters crossed over to vote on the democrat ballot. That could be because the GOP ballot has just Trump, so these GOP may have weighed in on the more interesting Bernie/Biden debate.

 

Summary

  • 96% of voters successfully marked a party preference
  • Independents went 67.3% : 32.7%  for a marked a Democrat ballot over a Republican one
  • 20.3% of total soft GOP voters crossed over to vote on the democrat ballot. Only 8% of total soft Democrats

Canvassing With Gestures

While the use of obscene gestures as part of any campaign communications strategy is to be discouraged, some gestures can be an intuitive and efficient means of data entry on mobile devices.  So as we knock on doors, anything that helps us shift focus from our phones to our neighbors not only saves time and effort, but also promotes a more positive image in our communities.

Canvasser has always supported the swipe gesture to proceed to the next household or household member, but with the release last week of v1.6 for both Android and iOS, we’ve introduced support for a powerful new gesture: Shake.

To enable this feature, simply open up Settings from the main menu.  The new Gestures section adds two new settings:

Screenshot_1563306118

The first setting assigns an action to be initiated when a shake gesture is detected.  This is disabled by default, but by tapping the control you can pick the option you’d like automatically entered into the Result field when your phone is shaken.  For canvassing, that’s usually “No contact” or “Left literature”, but “No answer” might be more appropriate if you’re on the phone working through a call list to remind people to vote.

The second setting is to provide audible feedback when an action is triggered by gesture, which is done using the built-in text-to-speech capabilities of your phone.  By default, this is enabled so that when you shake your phone you’ll immediately hear spoken feedback (e.g. “Left literature”) to indicate that the gesture was detected and Result field automatically filled.  You can then simply swipe to move on to the next household.

Note that the volume of the audible feedback will be subject to both the global and app-specific volume settings on your phone.  For more details on how to set these, click here for Android and here for iOS.

Shake gesture support will primarily be used from the household detail page, but with the v1.6.1 release we’ve added support for the voter detail page as well.

Of course, we’re just getting started with introducing more intuitive gestures to use with Canvasser that will help speed data entry when you’re out knocking on doors.  Personally, I’ve knocked on over 30,000 doors during my two last campaigns and so I have some opinions on what improves my efficiency, but I’m always anxious to hear more suggestions from the field.  If you have an idea for the next kick-ass new feature for Canvasser, please let me know at chad@voter-science.com.

Getting the exact right voters in a District

Information specific to the WA state VRDB

In the WA VRDB, the City column may give the postal office associated with that voter; but if it’s an unincorporated precinct, they may not be able to actually vote in that city’s election. In other words, “City=Renton” gives 79k people, but nearly 25k are unincorporated and can’t actually vote.

In addition, individuals may provide the wrong value for City, which could be wrong.

Fortunately, the VRDB has a separate table, DistrictLookup, that specifies exactly the precincts for a given (DistrictType,DistrictName) pair.

So (DistrictType=”City/Town” and DistrictName=”City of Renton”) would give you the actual precincts for Renton City Council, which you can then join and compare with the VRDB to get the list of voters … which is around 50k voters. However, that query is much cumbersome to provide!

When using the query portal, Use the “DistrictTypeCity” field to select just voters in a city.

(DistrictTypeCity == XXX) corresponds to a join with the DistrictLookup table and (DistrictType== “City/Town” and DistrictName ==XXX)

There are similar new fields for supporting other DistrictTypes, such as School, Fire, Port, Other, etc.

 

Some Examples

1 City of Renton

When queried, this gives 79k voters as a result, which includes unincorporated areas that can’t vote in a Renton City Council race, but are still categorized under Renton for mailing purposes.

 

2 DistrictType Renton

This query will give just the Renton voters, and results in a list of 53k voters.

 

3 Renton Mailing Area

This  query shows you the voters in the Renton mailing area, but can’t vote in a Renton City Council race (which results in a list of roughly 26k voters).

 

Other trivia:

  1. Some voters may match multiple “DistrictType=City/Town”. For example, Tacoma is split into multiple districts, so a voter in Tacoma district 2 would match “CITY OF TACOMA” and “CITY TAC-2”.
  2. Some cities put their districts in “DistrictType=Other” instead of City/Town. It’s arbitrary.
  3. DistrictNames in the VRDB are not normalized. This isn’t really an issue for cities, but can be an issue for other districts. Each county can report it their own way. Sometimes that just means a capitalization difference, but here the different ways that CD 5 shows up:
    • Congressional District 5
    • CONG 05
    • Congressional District – 05
    • CONGRESSIONAL DISTRICT – 005
    • CONGRESSIONAL DISTRICT – 5
    • CONGRESSIONAL 5

Partisan divide widening dramatically in Olympia

For the past few years I’ve posted on our interactive online tool that analyzes the partisan distribution of our state legislature.  The goal is to call out members with the courage to vote independently of their caucus.  Often candidates will run as moderate or independent during the campaign, but we find that their floor votes in Olympia are right down party lines.  This tool provides some transparency into their actions, versus their intent.

http://www.whipstat.com/Projects/Records

If you recall, the methodology is simple:  The partisanship score for each floor vote is calculated as the percentage of Republican supporters minus the percentage of Democrat supporters, giving each a range from 100 (exclusively Republican) to -100 (exclusively Democrat) with unanimous votes scoring zero.  The member’s aggregate score is just the average of all the scores of floor votes they supported, minus the scores from those they opposed.

Looking back to 2003, we see a relatively normal distribution curve for both parties.  And while there isn’t as much overlap in the middle as there’s been in generations past, we do see that there are moderates on both sides of the aisle and even some true independents that have represented us in Olympia.

Partisan Leaderboard - All Policy Areas, Both Chambers (2013-2020)

It is interesting to note that during this time period the most independent members have run as Republicans and that Democrats are generally much less likely to vote against their party.  You can also easily identify the three members who have switched caucuses.

So now, consider the 2019 legislative session results:

Partisan Leaderboard - All Policy Areas, Both Chambers (2019-2020)

Notice a problem?

Both parties are now considerably more partisan and there are no independents (or arguably even moderates) left in the state legislature.

So how has this changed over time?  Let’s take a look…

Partisan Distribution by Party (2003-19)

In the above graph, range lines show a standard deviation above and below the mean.  Markers represent the median value.  The bars in the center represent the party balance, which has almost always favored Democrats.

What can we conclude?

  • Both parties have trended more partisan during this time period.
  • The median tends to consistently fall the left of the caucus mean with Democrats.
  • Democrats are now over twice as partisan as they were in 2003-04 under Gov. Gary Locke.
  • The partisan divide is almost twice as wide now as it was in 2007-08, when the Democrats had a 42 seat advantage.

Wrap-Up

This “death of the middle” I see as a unhealthy development for our state (and not just because I was one of the moderates unseated with this wave of political polarization).  Compromise is a necessary part of the political process, and we need moderates on both sides of the aisle willing to bridge the divide to find common ground.  During the 5 years there was divided control of the legislature, it admittedly took much longer to hammer out bipartisan agreements…but the resulting work product was worth it.  Our bipartisan budgets typically passed with 90% support, while only 57% voted for this last biennial budget (including no Republicans and not even every Democrat).

Clearly, changes are needed.

How partisan are WA organizational donors?

In previous posts we’ve looked at how our political system has become increasingly polarized, with our analysis of voting records showing that many self-styled moderates and independents are exhibiting much more partisan behavior when voting on the House or Senate floor.  Having served for a few years now on a PDC open data advisory group, I realized that the same type of analysis could be done for organizational donors.  Despite this being public data, not many people in Washington state know who the biggest political donors are, much less who they support.

So, are many of these “non-partisan” or “bi-partisan” organizational donors more partisan than they let on?

We can figure this out, and the methodology is pretty simple.  The PDC Open Data Portal publishes all contributions to candidates and political committees back to 2008.  For this first analysis, we looked at donations to partisan legislative and statewide candidates from businesses, unions and political action committees.  The partisanship score for each donor is the difference in percentage of donations by party, giving each a range from 100 (exclusively Republican) to -100 (exclusively Democrat).

Most of the effort here is involved with the fuzzy matching algorithm, since candidates are very inconsistent on how they report the names of these organizations to the PDC.  I use a trigram matching method, which isn’t perfect…but it does pretty well.  Currently, contributions are grouped under the same donor if 80% or more of the trigrams match, but this is adjustable.

Here are the results:

Partisan Donors (2008-18)

If you visit WhipStat.com, you’ll now find an interactive and animated version of our organizational donor partisan analysis that allows you to filter by jurisdiction type and date range.

Filters

If you’d like to do further analysis, feel free to hit the Download button for a tab-delimited table of the charted data.  Note that for now we don’t display or download the complete donor dataset, as that includes over 8,000 organizations.

A few things become apparent when reviewing the results:

  • Some of the biggest legislative donors give heavily to candidates from both parties.
  • About 6% more is given to Democrats than Republicans in legislative races, but that increases to 28% when looking at statewide races.

Up next:  We’ll take a close look at hard money vs. soft money contributions.

Why should you save your data back to the cloud

A major benefit of a mobile canvassing app is that your work is automatically recorded. However,  it’s common for people to export their data to another system and work off that; or print out their lists and work off a printed walk list. In those cases, be sure to update your data in TRC afterwards! When using paper lists, here’s why it’s worth the extra effort to save your results back to TRC:

 

1. Ensure your data is saved and secure

Paper can get lost or stolen.  Whereas data in TRC is safe and secure. It’s saved on the cloud and TRC’s sandbox model guarantees that your data will never get accidentally overwritten.

2. Easy sharing with other campaigns

Once your data is in TRC, it’s easy to conditionally share portions of it with other campaigns. For example, suppose you’re running for a city council race which overlaps another schoolboard race. TRC can automatically figure out just the overlapping records and just share those. That analysis is hard to do with paper.

Furthermore, suppose you’re canvassing team is asking three separate questions and you only want to share results from one of the questions. Again, once your data is in TRC, you can easily do that controlled granular sharing.

3. Make sure you don’t double-contact the same people.

Updating the data on the server ensures your campaign doesn’t accidentally contact the same person multiple times, especially when you have multiple canvassers operating independently.  Accidentally contacting the same people multiple times would be wasting resources and could also be perceived as harassment.

4. Enables searching for patterns and identifying new supporters

Knowing your specific supporters lets us run predictive analytics to identify other potential supporters.  For example, suppose your district has 50,000 voters. If your canvassing activity identities 200 supporters and another 100 non-supporters, we can then use analytics to search for patterns. Perhaps you’re doing well among certain issues, we can then use predictive analytics to find new likely supporters that are also interested in those issues. That can further refine your target.

5. Get GOTV reporting

TRC provides campaign-wide reports for Get-out-the-vote and election predictions. In 2016, these reports were frequently 99% accurate for legislative district races. The more data you provide back to TRC, the more accurate predictions and reports it can provide back you.

The TRC Sandbox

The TRC canvassing app is sitting in front of a powerful general-purpose service for sharing tabular data files like CSVs.

This provides:

  1. Integrations – a means to two-way sync that tabular data with external data sources (like NationBuilder, Salesforce, Google sheets, dropbox, etc)
  2. User-management – you can share out a sheet with users, track per-user activity, and revoke permissions.
  3. Source Control – TRC provides both branching and full history tracking. Branching means you can create a “child” sheet that has a subset view of the “parent” sheet. Full history tracking means you can track every change.
  4. A compute engine – TRC has a general compute fabric for process joins, merges, and aggregations on your data.

Sandbox and Isolation

Each campaign gets its own isolated view of the data, which we call a “sandbox”.  This means that two candidates can running against each other for the same position against each other in a primary,

Sandboxes can then be further partitioned among your volunteers.

trc-overview

For example, R1…R5 are individual records.   User U1 is synchronizing the data with some external data source, such as NationBuilder or Salesforce.  S1 refers to U1’s sandbox.

U1 then shares out subsets of the sheet with volunteers on the campaign.  This creates a new sandbox S2 for User U2, which has access to rows R3,R4. And another new sandbox, S3, for users U5,U6,U7 which get access to R1 and R2.  Since U5,U6, U7 are in the same sandbox (S3), they can see each other’s changes.

The system is a distributed hierarchy, so any operation U1 can do in S1; U2 can do in S2. U2 is fully empowered within their sandbox! So U2 can divide their own sandbox and create a new sandbox for U3 and U4 to each edit R4.  Since U3 and U4 each have their own sandbox (in contrast to U5,U6,U7 who all share a sandbox),  U3 and U4 can edit the same record without conflicting with each other.   Their parent (U2) can then resolve any conflict.

This has several benefits:

  1. It allows multiple candidates to run against each other in a primary. They each get their own sandbox.
  2. Within a sandbox, it ensures that your data is never overwritten.
  3. It allows an untrusted people to submit data to your campaign. The data is just quarantined in its own sandbox and not integrated until proven safe.
  4. The full audit log allows purging bad data even after an integration.