Monday, July 30, 2012
Should you believe these numbers?
More than 282,000 Philadelphians are on the "no id" or "expired id" lists compiled by the Pennsylvania Secretary of State's office.
But Bob Warner of The Philadelphia Inquirer, in a very good story July 29, reported that when reporters called voters from the "no id" list, large numbers of people said they in fact had driver's licenses. This raises the question of whether the "no id" list contains mainly false hits and therefore overstates the magnitude of the Voter ID problem.
Exact details of how the list was put together have not been disclosed, but here is what has been reported:
-- The state's database of registered voters was compared against the Department of Transportation's list of driver's licenses and non-license IDs. Voter's names, and presumably dates of birth, were compared to the driver records. Voters who couldn't be found in the PennDOT database were added to the "no id" list, totaling 758,000, or about 1 in 11 Pennsylvania voters.
-- Weeks later, the Secretary of State released a second list, the "expired id" list of 574,000 voters who did match the PennDOT license database but whose IDs have expired in 2011 and can't be used to vote in November. This group also will need new IDs or they can't vote in November.
Here are some thoughts about this from someone who has been working with the data for a few weeks.
1) The people who told the Inquirer they have licenses might still have a problem on Election Day if their name on their license is different from their voter registration. The classic case of this is a woman (or man) who got married and now goes by a different last name. What if the driver's license has one name and the voter registration the other? What if someone starts going by their middle name and registers that way? When changes are made in one database or the other, are they synched? Apparently not.
No one should assume there will be a "reasonableness" standard applied to name discrepancies on election day either. Your kindly poll worker may know you're Bob even though your driver's license says Dave, but if Pennsylvania is still a swing state in November, you can be sure both the Democratic and Republican Parties will have swarms of lawyers looking over the poll workers' shoulders. The standard applied on Election Day might be very literal and very picky.
2) While the "no id" list is squishy because no one knows how name mismatches will be handled, the "expired" list is probably a harder number. It may be telling that the Secretary of State's office, which is charged with defending Voter ID, has had very little to say about the "expired list," and media organizations have paid it less attention. "Expired" represents actual matches in the PennDOT database, but to licenses that expired before November 2011 and would be unusable to vote in November 2012 under Pennsylvania's law.
3) Even if you assume half the "no id" voters will be able to vote, that would still mean 953,000 Pennsylvanians (200,000 Philadelphians), have ID problems that will prevent them from voting if they can't get a new ID from PennDOT before November. Even if you assume that 25% of these folks have left the state and have no intention of voting here, it is still way more IDs than anybody ever dreamed would be needed. At last week's Voter ID trial, one of the most comical comments came from a PennDOT official who said his agency was all prepared to process the 10,000 new IDs that would need to be created. 10,000 might not cover one ward in South Philly.
4) In some ways the most important question isn't the overall magnitude of impact anyway. What's important is whether Voter ID unfairly penalizes certain segments of society and therefore deprives them of representation (For example, see the age breakdowns posted here).
If the state lawsuit against Voter ID is unsuccessful, the U.S. Justice Department is getting ready to challenge the law under the 1965 Voting Rights Act, which bars states from erecting any law that disproportionately impacts minority voting, whether the law was intended to be discriminatory or not. We have just completed an analysis on this question, and based on what we've found, the Justice Department is going to have a case. If Pennsylvania's law can be shown to affect African American and Hispanic voters more than whites, it could be hard to defend.
Friday, July 27, 2012
How to assemble the Voter ID Database
Here is a technical step by step for people who would like to assemble this data and do their own analysis.
This document is
a step by step description of steps taken to join the voter files with the
"no id" and
"expired
id" files and produce the crosstabs.
The voter registration file is maintained by the City of Philadelphia and is a public document. We requested it from City Commissioner Stephanie Singer's office. Requestors must certify that it will not be used for commercial purposes like mailing lists.
The "no id" and "expired id" files were provided by the Pennsylvania Secretary of State to city and county registrars last week. The contain the state voter number for everyone on the list and can be linked to the voter registration file. These are also public documents and can be requested from the Secretary of State.
This was done in Visual FoxPro 6.0
but these commands
would work in any
SQL database with simple adjustments. I would encourage/beg others to create the database do the analysis for themselves.
Create voter
table for Philadelphia from delimited text file.
create table
philavoters free ;
(ID C (12),;
Pref C (4),;
Last C (25),;
First C (25),;
Middle C (15),;
Suffix C (5),;
Sex C (1),;
DOB D,;
Dreg D,;
Status C (1),;
Changedt D,;
Party C (20),;
House I ,;
HouseNo C (4),;
Street C (50),;
Apt C (15),;
Addr_2 C (30),;
City C (35),;
State C (2),;
Zip C (15),;
MAdd_1 C (10),;
MAdd_2 C (10),;
MCity C (20),;
MState C (2),;
MZip C (15),;
Pollp C (50),;
Pollpl2 C (128),;
PollCSZ C (128),;
Lastvote D (8),;
Dist1 C (15),;
Dist2 C (15),;
Dist3 C (15),;
Dist4 C (15),;
Dist5 C (15),;
Dist6 C (15),;
Dist7 C (15),;
Dist8 C (15),;
Dist9 C (15),;
Dist10 C (15),;
Dist11 C (15),;
Dist12 C (15),;
Dist13 C (15),;
Dist14 C (15),;
Dist15 C (15),;
Custom1 C (25),;
Lastchange D
(8),;
PR042412 C (10),;
PR042412VM C
(10),;
GN110811 C (10),;
GN110811VM C
(10),;
PR051711 C (10),;
PR051711VM C
(10),;
SP020111 C (10),;
SP020111VM C
(10),;
GN110210 C (10),;
GN110210VM C
(10),;
PR051810 C (10),;
PR051810VM C
(10),;
GN110309 C (10),;
GN110309VM C
(10),;
PR051909 C (10),;
PR051909VM C
(10),;
GN110408 C (10),;
GN110408VM C
(10),;
PR042208 C (10),;
PR042208VM C
(10))
append from
voters2.txt type delimited with character "|"
1025829 records
created. This represents all voters, active and inactive.
Add an index on
id
Modify
philavoters table to add the following fields.
Noid char(1) -
flag for voters in the state's "no id" file
Expired char(1) -
flag for voters in the "expired id" file.
Age integer - age
calculated by subtracting Date of Birth from today's date.
Age range char(8)
- range to be calculated from Age field.
Create noid table
from the state's "no id" data release.
create table
no_id free ;
(ID C (12),;
Las C (25),;
Fir C (25),;
Mid C (15),;
DOB C (8))
append from
no_voter_id_per_state.csv type delimited
186830 records created.
This represents all records in the "no id" file for Philadelphia,
active
and inactive.
Add an index on
id.
Create table from
"expired" file from the state.
The file I
received contained only a list of state voter ids.
create table expire
free ;
(ID C (12))
append from
expire.txt type delimited
574631 Records
created. (this is more than just Philly voters; it is presumably a statewide
file)
Add an index on
id
Tables created,
begin analysis.
Overall count of
voters
Select count(*)
from philavoters
Result: 1,025,829
Count of
"active" voters:
Select count(*)
from philavoters where status='A'
Result: 868,674
Query for records
in the Philly voter file with IDs that are contained in the "no_id"
file
select count(*)
from Philavoters where id in (select id from no_id)
Result: 186,560
...this is the number of ALL philly voters in the "no id" file.
Same query, this
time limiting for voters on "active" status. This means voters who
have voted in last X
years.
select count(*)
from Philavoters where status='A' and id in (select id from no_id)
Result: 135,859
Query for records
in the Philly voter file with IDs that are contained in the "expired"
file
select count(*)
from Philavoters where id in (select id from expire)
result: 175,769
select count(*)
from Philavoters where status='A' and id in (select id from expire)
result: 146,750
Now, is there any
overlap between the "no id" and the "expired" file?
select count(*)
from expire where id in (select id from no_id)
Result: 0
Just for good
measure, reverse it:
select count(*)
from no_id where id in (select id from expire)
result: 0
So - there is no
overlap between "no id" and "expired" sets from the state.
They are different
subsets of voters.
Now, put the data
into the main table using the fields we created:
update
Philavoters set noid='1' where id in (select id from no_id)
update
Philavoters set expired='1' where id in (select id from expire)
How many voters
are either no id or expired?
select count(*)
from Philavoters where Noid='1' or expired='1'
Result: 362,329
How many of these
are active?
select count(*)
from Philavoters where (Noid='1' or expired='1') and Status='A'
Result: 282,609
How many are both
(just to double check our data)?
select count(*)
from Philavoters where Noid='1' and expired='1'
Result: 0
For convenience,
populate field "either" which represents voter is either "no
id" or "expired"
THIS IS THE GROUP
THAT THE STATE HAS IDENTIFIED WILL NOT BE ABLE TO VOTE
WITHOUT GETTING
AN ID
update
philavoters set either='1' where Noid='1' or expired='1'
362,369 records
updated.
Populate age
field by calculating from DOB (this will vary by database)
update
philavoters set Age=(date()-dob)/365.25
Populate age
range field
update
philavoters set age_range="und_25" where age<25
update
philavoters set age_range="25-34" where age<35 and age >=25
update
philavoters set age_range="35-44" where age<45 and age >=35
update
philavoters set age_range="45-49" where age<50 and age >=45
update
philavoters set age_range="50-54" where age<55 and age >=50
update
philavoters set age_range="55-59" where age<60 and age >=55
update
philavoters set age_range="60-64" where age<65 and age >=60
update
philavoters set age_range="65-69" where age<70 and age >=65
update
philavoters set age_range="70-74" where age<75 and age >=70
update
philavoters set age_range="75-79" where age<80 and age >=75
update
philavoters set age_range="80-84" where age<85 and age >=80
update philavoters
set age_range="85-" where age >=85
Cross-tabulate
age range with "either" (all voters)
SELECT
Philavoters.age_range, Philavoters.either, count(*);
FROM philavoters;
GROUP BY Philavoters.age_range,
Philavoters.either;
ORDER BY Philavoters.age_range,
Philavoters.either;
INTO CURSOR SYS(2015)
DO (_GENXTAB) WITH 'Query1'
Note: c_1 in this
table means the voters have ID problems of one kind or another. Blank means
they have a valid
ID in the state licensing database according to Secretary of State.
age_range
|
ID problem
|
Has id
|
und_25
|
52151
|
46052
|
25-34
|
85609
|
158700
|
35-44
|
58156
|
121515
|
45-49
|
30643
|
58415
|
50-54
|
31264
|
58705
|
55-59
|
26077
|
57193
|
60-64
|
19876
|
48445
|
65-69
|
15217
|
36635
|
70-74
|
11861
|
25664
|
75-79
|
9889
|
19806
|
80-84
|
8565
|
15542
|
85-
|
13021
|
16828
|
Same crosstab but
including only "active" voters.
SELECT
Philavoters.age_range, Philavoters.either, count(*);
FROM philavoters;
WHERE Philavoters.status = "A";
GROUP BY Philavoters.age_range, Philavoters.either;
ORDER BY Philavoters.age_range,
Philavoters.either;
INTO CURSOR SYS(2015)
DO (_GENXTAB) WITH 'Query1'
Note: c_1 in this
table means the voters have ID problems of one kind or another. Blank
means they have a
valid ID in the state licensing database according to Secretary of State.
Includes only
"active" voters
age_range
|
id problem
|
has id
|
und_25
|
48623
|
44087
|
25-34
|
57389
|
134129
|
35-44
|
40714
|
102937
|
45-49
|
23402
|
51109
|
50-54
|
24923
|
52595
|
55-59
|
21708
|
52043
|
60-64
|
16768
|
44695
|
65-69
|
13106
|
33835
|
70-74
|
10286
|
23842
|
75-79
|
8634
|
18399
|
80-84
|
7328
|
14278
|
85-
|
9728
|
14116
|
Thursday, July 26, 2012
Making sense of the numbers -- overview of Voter ID in Philadelphia
- Phila total registered voters: 1.026 million
- Active voters (meaning voted in the last 4 years): 868,674
- "No ID" voters for Philly (active): 186,560 (135,859)
- "Expired for Philly: 175,769 (146,750)
- No ID or Expired, active 282,609 (32.5 percent of all Philly active voters)
Using other data fields in the Philadelphia voter file, crosstabs can be run by age, party registration, and all levels of voting and legislative districts.
Wednesday, July 11, 2012
The old and the young....
One clear pattern that emerges is that the young and elderly are over-represented on the "need ID" lists.
Among those over 85 years old, 41 percent either cannot be found in the state's database of driver's licenses or ID cards, or have IDs that have expired and are not usable to vote.
There are people over 90 who have been voting in every election since Gov. Corbett was in diapers who will lose their right to vote unless they can get their paperwork in order and stand in line at PennDOT.
Among those under age 25, more than 50 percent lack ids, though that number is no doubt inflated by college students who registered to vote here but have driver licenses in other states.
--------------------------------------------------------------
Philadelphia voters without IDs, broken down by age ranges | ||||
Active voters only. | ||||
Age | No id or expired | Has valid id | Total | Pct needs id |
und_25 | 43994 | 38254 | 82248 | 53.5% |
25-34 | 59879 | 134024 | 193903 | 30.9% |
35-44 | 40669 | 104024 | 144693 | 28.1% |
45-49 | 23142 | 50710 | 73852 | 31.3% |
50-54 | 24889 | 52536 | 77425 | 32.1% |
55-59 | 22317 | 52468 | 74785 | 29.8% |
60-64 | 17143 | 45516 | 62659 | 27.4% |
65-69 | 13359 | 34740 | 48099 | 27.8% |
70-74 | 10624 | 24951 | 35575 | 29.9% |
75-79 | 8716 | 18862 | 27578 | 31.6% |
80-84 | 7475 | 14649 | 22124 | 33.8% |
85- | 10402 | 15331 | 25733 | 40.4% |
Citywide | 282609 | 586065 | 868674 | 32.5% |
Subscribe to:
Posts (Atom)