Create a gist now
Instantly share code, notes, and snippets.
What would you like to do?
Embed
Embed this gist in your website.
Share
Copy sharable URL for this gist.
Clone via
HTTPS
Clone with Git or checkout with SVN using the repository's web address.
Quick and dirty simulation of votes in 2008 congressional election under inverse income voting system
| # We use a lognormal income distribution to simulate the income distribution in the USA in 2008. | |
| # The parameters are chosen so that the median income comes out to about $30,000, | |
| # the gini index comes out to about 0.35, and the 90/10 ratio comes in at about 6:1, | |
| # as in the Luxembourg Income Study figures for 2010. | |
| # See the key figures here: http://www.lisdatacenter.org/data-access/key-figures/inequality-and-poverty/ | |
| incomes <- rlnorm(300000,meanlog=log(30000),0.55) | |
| require(reldist) # to calculate the gini index | |
| gini(incomes) | |
| # should come out around 0.3, which is a bit lower than the 0.37 the LIS gives for the USA in 2010 | |
| # Voting system parameters. x is the sensitivity of the system to income inequality | |
| # (the "disenfranchisement parameter"); n is the number of classes of voters. | |
| # With n = 10, we have deciles; with x = 1, we have voting power inversely proportional to income. | |
| n <- 10 | |
| x <- 1 | |
| # We now calculate the median income of each class of voters | |
| spacing <- 1/n | |
| first.midpoint <- spacing/2 | |
| midpoints <- quantile(incomes,seq(first.midpoint, | |
| 1-first.midpoint, | |
| spacing)) | |
| # And we are now ready to calculate the relative weight of votes in each class | |
| votes <- (midpoints[1]/midpoints)^x | |
| # Here we approximate the democratic vote shares per decile, using this data from ANES: | |
| # http://electionstudies.org/nesguide/2ndtable/t9b_1_1.htm. (This is not exact). | |
| # Lowest decile voted about 75% democratic; highest decile voted about 33% democratic | |
| dem.vote.shares.08 <- seq(from=0.75, | |
| by=-0.04234, | |
| length.out=n) | |
| # Here we approximate the turnout per decile, using this data from ANES: | |
| # http://electionstudies.org/nesguide/2ndtable/t6a_2_2.htm. (This is not exact). | |
| # Lowest decile had turnout of about 65%; highest decile had turnout of about 89%. | |
| # This is probably overstated. | |
| turnout.08 <- seq(from=0.65,by=0.02,length.out=10) | |
| # This is the Democratic share of the vote we would expect with the existing voting system | |
| original.result <- weighted.mean(dem.vote.shares,turnout.08) | |
| # should be about 0.55, which is close to the 54% of the vote that the Democrats actually got in | |
| # the 2008 congressional election. See http://electionstudies.org/nesguide/toptable/tab9b_1.htm | |
| # This is the Democratic share of the vote we would expect with an inverse income voting system, | |
| # not taking differential turnout into account | |
| result.no.turnout <- weighted.mean(dem.vote.shares.08,votes) | |
| # should be about 0.62 (62%), about 7% points bigger than the actual Democratic share | |
| # This is the Democratic share of the vote we would expect with an inverse income voting system, | |
| # taking actual differences in turnout in 2008 into account | |
| result.with.turnout <- weighted.mean(dem.vote.shares.08,votes*turnout.08) | |
| # should be about 0.61 (61%) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment