Visualizing tax brackets

[This article was first published on Revolutions, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

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 about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

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)