SAS tax calculator - Example 4

This example shows how to calculate the marginal tax rate for taxpayers using the method of finite differences. Here we add $1 to wages, and take the difference in tax (x100) to be the marginal rate. We call any difference in calculated tax of more than $1 a "wild rate".

This example also shows how multiple years of data can be processed with minimal additional effort.

/* Example 4 - Marginal rates */ libname t "taxpayer-data-files"; %INCLUDE "taxcalc.sas"; data; set t.insole99 t.insole00 t.insole01 t.insole02 t.insole03 t.insole04 t.insole05 t.insole06 t.insole07 indsname=soiyr; weight = S006/100; %INIT; %COMP; tax0 = c10300; e00200 = e00200 + 1; %COMP; tax1 = c10300; mrate = abs(tax1-tax0)*100; if abs(mrate gt 100) then wildrate = 1; keep mrate weight soiyr wildrate; run; proc summary; weight weight; class soiyr; var mrate wildrate; output out=mrate mean(mrate) = mrate N(wildrate)=wildrate; run; proc print noobs; var soiyr _freq_ mrate wildrate; run;

Results

The federal law includes a number of notches where small changes in income cause unexpectedly large changes in tax. Many of these are small and due to the use of published tables instead of formulae. The program uses smooth approximations to avoid creating local notches. However several notches are not smoothed away. Notches can come about for several reasons, including:

  1. basing the itemization/standard deduction choice on regular tax, ignoring the possibility that small changes in itemized deductions can lead to large changes in AMT.
  2. Small changes in property income can lead to large changes in the EIC.

The above job asks only for the taxpayer weighted mean marginal rate, and these means are fairly independent of the size of the finite difference. It could be increased to $100 without significantly changing any of mean values. However, while the dollar finite difference leads to a single wild result in only one out of nearly a million observations, a $100 difference leads to many.

For this reason if marginal tax rates are calculated by the method of finite differences, a small finite difference should be used, and any very large (in absolute value) rates should be discarded. Records with calculated rates above 100% should probably be dropped from regressions or other analytical uses.

All calculation are in double precision, so a finite difference as small as a penny will not induce rounding error.