Out of curiosity, I produced a “sequential” set of ideal point estimate for the (current) 111th U.S. Senate, plotting the results in the graph attached below (click on the thumbnail); as is conventional, red is Republican and blue is Democratic. The analysis uses all 373 non-unanimous roll calls in the 111th Senate thus far.
Each senator starts with a prior centered at zero. Each roll call induces a partitioning of the senators, and a branching in the trajectories of the estimated ideal points, as the space of voting profiles gets richer. We also see the roll calls tending to discriminate among the Republicans more rapidly than the Democrats (the latter being the majority party in the 111th Senate). It is rather striking how quickly we recover a reasonably stable rank-ordering of the senators, at least in 1d in a Congress like that 111th with strong/stable separation along party lines.
Also of interest is the Specter party switch (for a short while the voting history of Specter as a “D” wasn’t especially “D”). Note also that we don’t know much about extremist legislators; until we get votes that have cut-points close to their ideal points, the roll calls just aren’t revealing much about their preferences. Hence we see the trajectories of ideal point estimates of the most liberal senators wavering around a little bit.
I used the doMC package in R to do this on a 4 core machine. Each set of ideal point estimates are based on 4 parallel chains (one on each core), generated using ideal in pscl. The “ideal point estimates” here are Monte Carlo estimates of the mean of the marginal posterior density of each respective ideal points. I used 4 chains (in parallel) 150K iterations each, for each of the 373 non-unanimous roll calls. Even with this many iterations there is a little bit of Monte Carlo error; i.e., with the same priors, and the same voting histories, ideal point estimates should coincide, modulo MC error.
The other thing is that there doesn’t seem to be any obvious “vote 1″ update for ideal points. That is, there is no simple mapping from the ideal point estimate based on m roll call to ideal point estimates based on m+1 roll calls. You have to start the fitting algorithm from scratch each time (and hence the appeal of exploiting multiple cores etc), although the results from the previous run giving pretty good start values.