Summary
For Whatcom County and the state as a whole, age bins under 40 (with few exceptions) continue to chose to let late GenX, Boomers and Postwar generations decide political realities. However, Whatcom County shows much greater youth participation than WA State as a whole. Furthermore, migratory patterns of youth voters suggest that housing stability or "a stable residence address" my be a strong determinant in youth voting patterns.
Whatcom County had 77% turnout of registered voters which was 5% points higher than the state average. Whatcom County also had higher turnout for Millennial and GenX age bins. Left axis is votes, bottom axis represents age bins, top and right axis represents turnout percentage per age bin as delineated by the blue line. For all of WA State, see charts below the break. Click to enlarge the charts. |
Introduction
I am using the 'LastVoted' field from the VRDB. For this article, 'LastVoted' is close enough. See Appendix (TBD) below for more information. A sample of the 12/2018 'LastVoted' field:
The top 10 "LastVoted" bins ranked by count for all Statuses:
1: 11/06/2018 3131937 # Voted GE 2018
2: 670963 # No "Last Voted" record
3: 11/08/2016 451195 # Last Voted GE 2016
4: 11/06/2012 127008 # Last Voted GE 2012
5: 08/07/2018 60552 # Last Voted Primary 2018
6: 11/07/2017 45076 # Last Voted GE 2017
7: 11/04/2008 37618
8: 11/04/2014 36934
9: 02/13/2018 36839
10: 05/24/2016 26016
The top 10 "LastVoted" bins ranked by count for all Statuses:
1: 11/06/2018 3131937 # Voted GE 2018
2: 670963 # No "Last Voted" record
3: 11/08/2016 451195 # Last Voted GE 2016
4: 11/06/2012 127008 # Last Voted GE 2012
5: 08/07/2018 60552 # Last Voted Primary 2018
6: 11/07/2017 45076 # Last Voted GE 2017
7: 11/04/2008 37618
8: 11/04/2014 36934
9: 02/13/2018 36839
10: 05/24/2016 26016
Some base code:
# VH.17.18: Voting History 2018 only
m1 = merge(VR,VH.17.18[order(-ElectionDate)],
all.x=TRUE,
by="StateVoterID")[
order(mdy(LastVoted))][
!duplicated(StateVoterID)& StatusCode == "A",]
m1[LastVoted == "11/06/2018",.N] # Voted in GE 2018
[1] 3128748
m1[LastVoted != "11/06/2018",.N] # Not Voted in GE 2018
[1] 1237666
nrow(m1) # Status Active 11/30/2018
[1] 4366414
Charts
The charts below give insight into Age and Turnout for WA GE 2018. The charts display both volume and turnout percentage. The horizontal axis gives us volume of votes by a vertical axis of age bins displayed with a rainbow pattern of bars. The transparent gray bars underneath are those who didn't vote. All data is from active registered voters for November 2018. Click to enlarge the charts.The right horizontal axis translates the indexed bars into percentages which are displayed both top and bottom axis for Voted / (Voted + NotVoted). The blue curve charts this age bin participation. The left 30K becomes 50%. 72% (all state turnout) is marked at 43K. If 50% (30K) is used as the start and end, the "turnout curve" is a remarkably stable distribution. Consistent enough for turnout to be some predictable function of age! Click to enlarge the charts.
Alas, that I should live to see myself draw on a chart! |
Analysis
Above are some scribbles worth explaining from left to right. Clearly, the millennial vote still has some challenges. Some number of millennial age bins had the non voted exceeding the voted. Many others 20s and early 30s votes just exceed 50% turnout of registered voters. Why this might be considered exceptional in Oklahoma , WA state vote by mail and online registration averaged nearly 72% this midterm. Turnout rates per age bin start after from the mid 30 age bins. By the time late GenXrs are in play at age 47, turnout is at or above the state average (72%). Turnout per age bin stays above 72% until age 92 in WA State for the 2018 midterm. Boomers provide the leading bulk of the vote because of their high participation coupled with large volume of turnout. Of the 109 voting bins displayed above, Ages 52 - 72 provide for 29% of GE 2018 vote.
Notes on Millennial/GenX Vote
The Millennial/GenX vote continues to be challenging in non Presidential years. The number of challenges aren't worth explicating here. However a look at the year over year voter migration data reveals some general patterns. So the following technical discussion shows stability in the voter database for late GenXrs and Boomers and instability and flux for Millennials. The discussion and code itself may be tedious for lay readers. However, I think even the most challenged readers will construct some general conclusions from this data. Here are mine:
Status Code in the VRDB for December. For my purposes only 'A' (Active) and 'I' (Inactive) are considered:
StatusCode N
1: A 4366414
2: I 486554
3: PDUPL 5315
4: PFELN 785
5: A-DUP 493
6: PDETH 60
7: I-DUP 54
8: P 36
Top Ten Status *active* age bins for 12/2018 in the VRDB:
Age N
1: 61 80525
2: 58 80165
3: 57 79912
4: 62 79784
5: 56 79345
6: 59 79333
7: 60 79287
8: 63 78145
9: 64 78018
10: 55 77508
Top Ten Status *inactive* age bins for 12/2018 in the VRDB:
Age N
1: 28 18009
2: 29 17234
3: 26 17229
4: 27 17144
5: 25 16449
6: 30 16035
7: 24 15338
8: 31 15008
9: 32 14646
10: 33 14208
The top ten registered *active* voters ranked by age bin from 12/2018 who had some VRDB status 12/2017:
Age N
1: 61 79096
2: 58 78768
3: 57 78615
4: 62 78416
5: 59 78006
6: 60 77975
7: 56 77947
8: 64 76911
9: 63 76907
10: 55 75940
The top ten registered *inactive* voters ranked by age bin from 12/2018 who had some VRDB status 12/2017:
Age N
1: 28 14709
2: 26 14196
3: 27 13994
4: 29 13974
5: 25 13348
6: 30 13092
7: 31 12450
8: 24 12277
9: 32 11927
10: 33 11704
County migration in the VRBD is dominated by millennials whose destination is King County. Top ten migration groups:
Age County N
1: 28 KI 6462
2: 26 KI 6380
3: 29 KI 6344
4: 27 KI 6193
5: 30 KI 6011
6: 31 KI 5916
7: 32 KI 5390
8: 25 KI 5264
9: 33 KI 5085
10: 34 KI 4762
Those who are changing addresses in Whatcom County are young. They are moving to college district precincts.
Top ten migration age bins in Whatcom County and their precinct destination:
Age PrecinctID N
1: 19 245 61
2: 21 253 55
3: 22 253 50
4: 20 253 45
5: 21 257 36
6: 21 226 35
7: 21 247 34
8: 20 226 33
9: 22 247 32
10: 23 253 30
Top ten migration age bins in Whatcom county by 'precinct decade' (e.g. '2' == 200 series):
Age old.PrecinctDec new.PrecinctDec N
1: 21 2 2 314
2: 22 2 2 310
3: 23 2 2 277
4: 24 2 2 247
5: 26 2 2 232
6: 25 2 2 227
7: 27 2 2 215
8: 20 2 2 193
9: 28 2 2 189
10: 29 2 2 157
The top 20 "LastVoted" age bins of *active* voters who did not vote in GE 2018 ranked by count:
Age LastVoted N
1: 19 18530
2: 23 18428
3: 22 18120
4: 21 17579
5: 26 17418
6: 24 17122
7: 27 17030
8: 25 16992
9: 20 16170
10: 28 15990
11: 29 14833
12: 30 13886
13: 31 13342
14: 18 13339
15: 32 12337
16: 33 12152
17: 34 11101
18: 35 10982
19: 36 10670
20: 37 10011
The top 20 "LastVoted" age bins of Status *active* or *inactive* voters who did not vote in GE 2018 ranked by active voters:
Age A I
1: 28 35496 17937
2: 26 34767 17167
3: 27 34417 17077
4: 25 33819 16394
5: 29 33419 17157
6: 24 33308 15285
7: 23 31505 12894
8: 30 31293 15955
9: 22 30540 11104
10: 32 30270 14564
11: 31 30107 14921
12: 33 30071 14132
13: 21 29585 8531
14: 34 28650 13449
15: 36 28133 12220
16: 35 27943 12447
17: 37 27325 11411
18: 20 26578 6178
19: 38 26219 10695
20: 39 24753 9931
WA 'Flux' dispositions (Under Construction - possibly incorrect)
VR12.17[VR12.18,list(StateCode,StatusCode,Age),by=.EACHI][,
.N,.(StatusCode)]
StatusCode N
1: A 4084344 # 12.2017 VRDB now active 12.2018
2: I 477157 # Inactive 2018 once part of VRDB 2017
3: NA 95950 # NO status in 12.18
VR12.18[VR12.17,list(StateCode,StatusCode,Age),by=.EACHI][,
.N,.(StatusCode)]
StatusCode N
1: A 4175000 # Active 12.2018 VRDB once active 12.2017
2: I 386501 # Inactive 2017 but part of VRDB 2018
3: NA 291467 # NO status in 12.17
X[Y,.(),by=.EACHI]
This format described in some detail here:
library(data.table)
Y = data.table(cbind(alpha=c("D","E","F","G","H","I")))
X = data.table(cbind(alpha=c("A","B","C","D","E","F")))
setkey(X,alpha)
setkey(Y,alpha)
X[Y,.(alpha),by=.EACHI]
alpha alpha
1: D D
2: E E
3: F F
4: G NA
5: H NA
6: I NA
Y[X,.(alpha),by=.EACHI]
alpha alpha
1: A NA
2: B NA
3: C NA
4: D D
5: E E
6: F F
- Participation by age bins favors older voters.
- VRDB 'status migratory patterns' of millennials show much greater 'flux' than other generations.
- Housing stability is probably a useful predictor of voter turnout per age bin.
In addition there a possible interpretation of some of the data below is the numbers of actual youth on the voting rolls is much less accurate than older generations.
Below tables are year over year 12/2017 to 12/2018 except where noted.
Status Code in the VRDB for December. For my purposes only 'A' (Active) and 'I' (Inactive) are considered:
StatusCode N
1: A 4366414
2: I 486554
3: PDUPL 5315
4: PFELN 785
5: A-DUP 493
6: PDETH 60
7: I-DUP 54
8: P 36
Top Ten Status *active* age bins for 12/2018 in the VRDB:
Age N
1: 61 80525
2: 58 80165
3: 57 79912
4: 62 79784
5: 56 79345
6: 59 79333
7: 60 79287
8: 63 78145
9: 64 78018
10: 55 77508
Top Ten Status *inactive* age bins for 12/2018 in the VRDB:
Age N
1: 28 18009
2: 29 17234
3: 26 17229
4: 27 17144
5: 25 16449
6: 30 16035
7: 24 15338
8: 31 15008
9: 32 14646
10: 33 14208
The top ten registered *active* voters ranked by age bin from 12/2018 who had some VRDB status 12/2017:
Age N
1: 61 79096
2: 58 78768
3: 57 78615
4: 62 78416
5: 59 78006
6: 60 77975
7: 56 77947
8: 64 76911
9: 63 76907
10: 55 75940
The top ten registered *inactive* voters ranked by age bin from 12/2018 who had some VRDB status 12/2017:
Age N
1: 28 14709
2: 26 14196
3: 27 13994
4: 29 13974
5: 25 13348
6: 30 13092
7: 31 12450
8: 24 12277
9: 32 11927
10: 33 11704
County migration in the VRBD is dominated by millennials whose destination is King County. Top ten migration groups:
Age County N
1: 28 KI 6462
2: 26 KI 6380
3: 29 KI 6344
4: 27 KI 6193
5: 30 KI 6011
6: 31 KI 5916
7: 32 KI 5390
8: 25 KI 5264
9: 33 KI 5085
10: 34 KI 4762
Those who are changing addresses in Whatcom County are young. They are moving to college district precincts.
Top ten migration age bins in Whatcom County and their precinct destination:
Age PrecinctID N
1: 19 245 61
2: 21 253 55
3: 22 253 50
4: 20 253 45
5: 21 257 36
6: 21 226 35
7: 21 247 34
8: 20 226 33
9: 22 247 32
10: 23 253 30
Top ten migration age bins in Whatcom county by 'precinct decade' (e.g. '2' == 200 series):
Age old.PrecinctDec new.PrecinctDec N
1: 21 2 2 314
2: 22 2 2 310
3: 23 2 2 277
4: 24 2 2 247
5: 26 2 2 232
6: 25 2 2 227
7: 27 2 2 215
8: 20 2 2 193
9: 28 2 2 189
10: 29 2 2 157
Age LastVoted N
1: 19 18530
2: 23 18428
3: 22 18120
4: 21 17579
5: 26 17418
6: 24 17122
7: 27 17030
8: 25 16992
9: 20 16170
10: 28 15990
11: 29 14833
12: 30 13886
13: 31 13342
14: 18 13339
15: 32 12337
16: 33 12152
17: 34 11101
18: 35 10982
19: 36 10670
20: 37 10011
The top 20 "LastVoted" age bins of Status *active* or *inactive* voters who did not vote in GE 2018 ranked by active voters:
Age A I
1: 28 35496 17937
2: 26 34767 17167
3: 27 34417 17077
4: 25 33819 16394
5: 29 33419 17157
6: 24 33308 15285
7: 23 31505 12894
8: 30 31293 15955
9: 22 30540 11104
10: 32 30270 14564
11: 31 30107 14921
12: 33 30071 14132
13: 21 29585 8531
14: 34 28650 13449
15: 36 28133 12220
16: 35 27943 12447
17: 37 27325 11411
18: 20 26578 6178
19: 38 26219 10695
20: 39 24753 9931
VR12.17[VR12.18,list(StateCode,StatusCode,Age),by=.EACHI][,
.N,.(StatusCode)]
StatusCode N
1: A 4084344 # 12.2017 VRDB now active 12.2018
2: I 477157 # Inactive 2018 once part of VRDB 2017
3:
VR12.18[VR12.17,list(StateCode,StatusCode,Age),by=.EACHI][,
.N,.(StatusCode)]
StatusCode N
1: A 4175000 # Active 12.2018 VRDB once active 12.2017
2: I 386501 # Inactive 2017 but part of VRDB 2018
3:
Appendix (To Be Done)
If you merge the VRDB with the Voting History, you find discrepancies that I will discuss here (TBD). I will discuss the statewide 'undeliverable' challenges and age bias in that group here (TBD).Appendix (Technical)
This analysis uses [R] data.table of grouped 'join inherited scope':X[Y,.(),by=.EACHI]
This format described in some detail here:
- @ https://cran.r-project.org/web/packages/data.table/vignettes/datatable-faq.html
- @ https://stackoverflow.com/questions/21435339/data-table-vs-dplyr-can-one-do-something-well-the-other-cant-or-does-poorly/27718317#27718317
A readable example of X[Y,.(),by=.EACHI] :
Y = data.table(cbind(alpha=c("D","E","F","G","H","I")))
X = data.table(cbind(alpha=c("A","B","C","D","E","F")))
setkey(X,alpha)
setkey(Y,alpha)
X[Y,.(alpha),by=.EACHI]
alpha alpha
1: D D
2: E E
3: F F
4: G NA
5: H NA
6: I NA
Y[X,.(alpha),by=.EACHI]
alpha alpha
1: A NA
2: B NA
3: C NA
4: D D
5: E E
6: F F
No comments:
Post a Comment