Visualizing tax brackets

April 15, 2011

(This article was first published on Revolutions, and kindly contributed to R-bloggers)

With Tax Day fast approaching here in the US, there's been a lot of discussion about tax policy and in particular the tax rates paid by the highest income earners. Like in many countries, here the income tax system is bracketed:

Tax Bracket Single Married Filing Jointly
10% Bracket $0 – $8,375 $0 – $16,750
15% Bracket $8,375 – $34,000 $16,750 – $68,000
25% Bracket $34,000 – $82,400 $68,000 – $137,300
28% Bracket $82,400 – $171,850 $137,300 – $209,250
33% Bracket $171,850 – $373,650 $209,250 – $373,650
35% Bracket $373,650+ $373,650+

But there's a lot of confusion about how those brackets work. (One reason is apparently that official information is hard to come by: 5 minutes of Google searching ought to be enough to find an IRS page simply describing those brackets like in the table above, but I, for one, failed at the task.) While a single person earning $34,500 (in adjusted, not total income, BTW) is in the 25% bracket, this doesn't mean they are liable for 34,500*25% = $8850 in taxes. In fact, only $500 (the amount over the bracket threshhold) is subject to 25% taxes; $8,375 is subject to 10% taxes, and $25,625 (the amount in bracket 2) is subject to 15% taxes. Of course, all of this is subject to the myriad complications and loopholes of US tax law (and I"m not a tax lawyer), but the basic principle is sound. So if you hear someone complaining that they're heading into a new tax bracket, or hoping to find deductions to keep them in a lower one, that's all well and good, but the effect of moving from one bracket to the next might not be as great as they think.

So what is the effect of the tax brackets? The effective tax rate for our $34,500 earner is 13.9% ($4806), not 25% (as calculated in the R language):

> sum(c(8375, 25625, 500)*c(0.1, 0.15, 0.25))/34500
[1] 0.1393116

If we do that same calculation over a range of possible incomes (or use the data from IRS tables[*]) and calculate the effective tax rate for both singles and straight[**] married couples, you can create a chart that gives a great picture of the actual impact of the tax brackets. A reader of the Daily Dish did just that (possibly in R?):

Tax brackets
The squares/circles represent the boundaries of the tax brackets; as you can see, moving from one bracket to the next has little impact on the effective tax rate (and therefore the tax paid). (Also of note: a married couple just in the 35% bracket is actually paying 25% in taxes.) That's because the system is designed to be monotone: if your taxes jumped suddenly moving from one bracket to the next and your net income dropped, there'd be a big disincentive to crossing the tax bracket boundaries. As it stands, earning more always leads to more net income.

The Daily Dish: Tax Brackets 101, Ctd

[*] Those IRS tables calculate taxes on $34,500 at $4813, not $4806 – I assume the discrepancy is because the income is apparently rounded to the nearest $50 and the tax to the nearest dollar. Why use a smooth curve when you can use a step-function, eh IRS?

[**] As a gay man married in California but not in the eyes of the federal IRS, our taxes were a total nightmare this year. We had to do a "synthetic" joint return for federal taxes which was not submitted (but still had to pay to prepare) because the numbers were required for the joint state return. Again, I'm not a tax lawyer, but I sure needed one this year. I wish it were as easy as described above.

To leave a comment for the author, please follow the link and comment on their blog: Revolutions. offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Tags: , ,

Comments are closed.

Search R-bloggers


Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)