Beware: interlopers in House roll calls!

A heads-up to those who analyze roll call votes in the US House - and a prime case of unintended consequences (or legislative arrogance):

We start (I started what seems like a week ago!) with a Hillpiece on ethics task force chairman Capuano (not a happy bunny!) which includes this:

...several influential Democrats, including Capuano, dealt Rep. Rahm Emanuel (Ill.), chairman of the Democratic Caucus, a blow last week by voting against an amendment to the financial services spending bill that would have barred the use of taxpayer funds for the office of the vice president. The amendment failed, 209-217.

After the vote, Capuano dismissed the amendment as "ridiculous."

Wow! I thought, in sufficient strength to do a little digging.

I have figured how to use the (pretty) up to date roll call info available here (in a form generated by software from the Voteview stable) to generate a spreadsheet analysis, to see which Dem reps flipped Rahmbo off.

Then - horror! - there was a discrepancy in the numbers between Voteview and the Clerk's Office vote page. (We're talking about HR 2829, the FY08 financial services apps bill, which passed last week.) The Clerk recorded four more Yeas than Voteview: his result, the 209-217 mentioned above, was split D207-24, R2-193. Voteview made the Yeas four Dems fewer.  

Now, it sometimes happens that the Clerk and the Record disagree about the details of a RCV, so I decided to check it out.

A good hour of buggeration later, it came to me: not all votes recorded by the Clerk were kosher.

And so it proved: under H Res 78, in a bout of pandering cum displacement activity, Pelosi and pals this January decided to allow Delegates (from Uncle Sam's Empire - and DC) to vote along with the real House members, providing their votes don't change the result!

So, ersatz reps can cast ersatz votes that get them their 15 minutes among the impressionable back home - but, at the same time, fuck up the stats whose ease of use was no doubt a consideration entirely absent from leadership thinking (if that's quite the word) on the change.

Of course, it would, with a little planning, have been possible to do both: to allow the delegates their 30 seconds on the local news, and made sure the Clerk's records showed the true result of votes.

(These House and Senate RCV pages are pretty crappy all round, and sorely in need of a revamp: availability of the full info as XLS files would be better, to avoid the need of tedious workarounds (which were necessary even before Nancy's little gesture to the unrepresented).)  

Oh - and, if anyone's interested in how this particular workaround works, I'll be happy to explain.

Final thing: I note that the Voteview stats codes Pelosi as a '0' (which is not a member at the time of the vote in Voteview-speak). She didn't vote on the Emanuel Amendment.

This follows the Clerk's treatment (she's not in his list of 11 no-votes); the reasoning, I think, is that (in a kind of reverse of the Delegates) the Speaker only votes where his vote makes a difference.

Tags: Clerk Website House Roll Call Pages, Emanuel Amendment Cutting Off Funds to Vice-President's Office, H Res 78, Polisci, Voting Rights for Delegates to US House (all tags)



Um, it was an amendment

offered in the committee of the whole house. This is the way it always works. But you don't think to ask, you just accuse.

by andgarden 2007-07-03 06:57AM | 0 recs
Not really

It's true that H Res 78 provides for otherwise nonvoting members of the House to vote in the Committee of the Whole, and not in the House itself.

But roll call votes on amendments generally take place in the CoW.

My point was that allowing nonvoting members to vote in the CoW without changing the Clerk's roll call pages to reflect this - ie, that some votes included in the lists and in the final tallies, are not votes of Representatives - made the lives of those who analyze this data that little bit more difficult.

No doubt there is some value in analyzing the CoW votes of nonvoting members - but separately!

by skeptic06 2007-07-03 09:06AM | 0 recs
Re: Beware: interlopers in House roll calls!

by skeptic06 2007-07-03 09:07AM | 0 recs
Re: Beware: interlopers in House roll calls!

Oh - and, if anyone's interested in how this particular workaround works, I'll be happy to explain.

Idiot-friendly -- please?

by SandThroughTheEyeGlass 2007-07-03 10:13AM | 0 recs
As good as it gets...

To start with, you need to have R installed (download from here) with the pscl package installed.

It worked fine for me under XP, and almost fine on my new machine cursed with Vista - Cliff Notes: you need to have your working directory somewhere other than in the R folder in Program Files. (That's my workaround, at least!)

Let's suppose you want to spreadsheet the votes given in the current House (the 110th) on votes #590-596.

You go to this page for a regularly updated file, H110.ord. This is in the format of rollcall info in earlier Congresses available at the Voteview site; unfortunately, the normal read function in R (read.table) balks at reading the ORD version. (Earlier years offer the info as a Stata file, which R can read with the foreign package.

Hence the need for the pscl package. This reads the ORD file as part of a more complicated model that I've yet to work, and which we don't need, thank God!

So - H110.ord is in your working directory.

You then need to subset the rollcalls you're interested in; and then export the subset as a CSV file.

That's fine up to a point; but the list of reps' names, parties and districts are all melded into one field.

R comes to the rescue again; you paste the names into Notepad and save the file; you then read that file into R, and then straight away export the file as a CSV.

Now, imported into a spreadsheet, we have names, parties and districts each in their own columns. Remove the superfluous brackets - and Bob's your uncle!

R is command-line, and therefore utterly unforgiving. The code is this (each line a separate instruction actioned by the Enter key):

house <- readKH("H110.ord")
rc <- votes[ ,c(590:596)]
write.csv(rc, "590-596test.csv")
names <- read.table("590-596names.txt")
write.csv(names, "590-596names.csv")

After that, you can close R - no need to save the workspace.

If it doesn't work, I'd be delighted if you'd let me know. Really.

by skeptic06 2007-07-03 03:19PM | 0 recs


Advertise Blogads