Analyzing how Bernie Sanders supporters voted in the 2016 General Election
by Brian Schaffner, Tufts University
In 2016, Bernie Sanders narrowly lost a closely contested Democratic presidential nomination to Hillary Clinton. As often happens after a close nomination race, there was much speculation about whether Bernie Sanders supporters would either not turn out or would even choose to vote for Donald Trump in November. Here I use the 2016 Cooperative Congressional Election Study (CCES) to investigate what Sanders’ supporters actually did in the general election. The CCES is ideal for such an analysis because (1) it is a large survey that provides a sufficient sample size for such an analysis and (2) respondents are matched to voter file records so that we can identify who actually voted in the primaries and general elections.
I begin by opening the data and setting the appropriate weights in Stata. This dataset can be downloaded from the CCES dataverse at this url: https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi%3A10.7910/DVN/GDF6Z0
Full question wording for all items used in this analysis can also be found in the CCES guide located at the same link.
. * Open the CCES 2016 data
. use "CCES16_Common_OUTPUT_Feb2018_VV.dta", clear
. * Set survey weights
. svyset [pw=commonweight_vv_post]
pweight: commonweight_vv_post
VCE: linearized
Single unit: missing
Strata 1: <one>
SU 1: <observations>
FPC 1: <zero>
I now create a variable that identifies how Sanders’s supporters behaved in the November general election. I only include individuals who we could validate as having actually voted in a presidential primary in 2016 and who said that they voted for Bernie Sanders in that primary. This amounts to 4,423 Sanders’ voters in total.
For general election voting behavior, I create four categories:
Sanders primary voters who voted for Trump in the general election.
Sanders primary voters who voted for Clinton in the general election.
Sanders primary voters who voted for a third party candidate in the general election.
Sanders primary voters who did not vote in the general election.
Again, I use the vote validation information to differentiate those who voted in the general election from those for whom no vote record could be found.
. * Create code for how Bernie voters behaved in general election
. * only include validated primary voters
. gen berngen=1 if CC16_410a==1 & CC16_328==2 & CL_E2016GVM!="" & CL_E2016PPVM!=""
(64,210 missing values generated)
. replace berngen=2 if CC16_410a==2 & CC16_328==2 & CL_E2016GVM!="" & CL_E2016PPVM!=""
(3,302 real changes made)
. replace berngen=3 if (CC16_410a==3 | CC16_410a==4 | CC16_410a==5) & CC16_328==2 & CL_E2016GVM!="" &
> CL_E2016PPVM!=""
(594 real changes made)
. replace berngen=4 if CC16_328==2 & CL_E2016GVM=="" & CL_E2016PPVM!=""
(170 real changes made)
.
. * Label new variable
. label define berngen 1 "Voted Trump" 2 "Voted Clinton" 3 "Voted for Other Cand." 4 "Did not vote"
. label values berngen berngen
.
. * Graph general election behavior among bernie primary supporters
. quietly: tab berngen, gen(bern)
. label var bern1 "Trump"
. label var bern2 "Clinton"
. label var bern3 "Other"
. label var bern4 "Did not vote"
Now let’s graph the percentage of Sanders’s voters voted for Trump, Clinton, some other candidate, or did not turn out in November 2016. I also tabulate the data to show the proportions clearly for each group. About 12% of Sanders voters cast a vote for Trump in the November general election.
. svy: tab berngen, stubw(30)
(running tabulate on estimation sample)
Number of strata = 1 Number of obs = 4,423
Number of PSUs = 4,423 Population size = 3,597.8781
Design df = 4,422
-------------------------------------------
berngen | proportion
-------------------------------+-----------
Voted Trump | .1177
Voted Clinton | .7662
Voted for Other Cand. | .0842
Did not vote | .0319
|
Total | 1
-------------------------------------------
Key: proportion = cell proportion
.
. graph bar bern1 bern2 bern3 bern4 [aw=commonweight_vv_post], asc ylabel(0 "0%" .1 "10%" .2 "20%" .3
> "30%" .4 "40%" .5 "50%" .6 "60%" .7 "70%" .8 "80%", angle(0) nogrid) yvaroptions(relabel(1 "Trump"
> 2 "Clinton" 3 "Other candidate" 4 "Did not vote")) plotr(lc(none)) title("What Sanders voters did
> in the general election") note("Data from 2016 CCES. Only includes individuals who could be validat
> ed" "as primary and general election voters. N = 4,423. Analysis by Brian Schaffner.") name(graph1,
> replace)