Given dataframe solve for US Economic Recovery Act of 2008 Bush Stimulus Check amounts (tax-rebates) by household type and income array for Nygaard, Sorernsen and Wang (2021) for each household type. Also compute maximum allocation bounds based on tax-liability to consider alternatives to the actual stimulus (tax-rebate) policy.

We have a dataframe of households, where each household is defined by the number of kids in the household, marital status, and also income bin. Note that this is an income bin, not a specific income level. We computes an approximate income-bin (and marital status and kids count) specific stimulus amount by evaluating the stimulus checks function along a fine grid of income levels from the min to the max point of the income-bin, and simply take the average.

We do this first for the actual stimulus that households should receive under the Economic Stimulus Act of 2008. We then adjust parameters for the stimulus function and compute alternative max-stimulus bounds for each income bin.

ffp_snw_stimulus_checks_bush_add2dfid(
  df_id,
  it_income_n_in_seg = 100,
  fl_multiple = 54831,
  fl_percheck_dollar = 100,
  fl_stimulus_child = 300,
  fl_stimulus_adult_min = 300,
  fl_stimulus_adult_max = 600,
  fl_per_adult_phase_out = 75000,
  fl_phase_out_per_dollar_income = 0.05
)

Arguments

df_id

dataframe the dataframe that is generated at the start of the allocation problem, it contains the individual id, marital status, kids count, and a string varaible indicating lower and upper bound for current household type's income bin.

it_income_n_in_seg

integer the number of points between min and max income bounds for the current income bin at which to evaluate stimulus, and to average.

fl_multiple

integer what is 1 unit in dollar in 2008, equal to 54831, median income.

fl_percheck_dollar

integer we discretize the stimulus problem, how much is each stimulus check in dollars?

fl_stimulus_child

float the amount of stimulus per child, note that this is unrelated to the tax-liability issue.

fl_stimulus_adult_min

float the amount of minimum stimulus per adult (for lower income households), even if tax liability is below this, so no tax-rebate should be given, still provide this stimulus amount.

fl_stimulus_adult_max

float the amount of max stimulus per adult, in another word, the maximum amount of tax-rebate.

fl_per_adult_phase_out

float the amount per-adult (household-head only or household-head plus spouse) where phase-out for stimulus/tax-rebate begin going down. 75k under the actual policy for singles, and 150k for married.

fl_phase_out_per_dollar_income

for every addition dollar beyond the phaseout point, how much stimulus/tax-rebate to reduce. 0.05 means for every additional dollar of income, stimulus go down by 5 cents.

Value

an array of tax-liabilities for particular kids count and martial status along an array of income levels

Author

Fan Wang, http://fanwangecon.github.io

Examples

data(df_nsw_tiny_chk168_df_id)
df_id <- df_nsw_tiny_chk168_df_id
it_income_n_in_seg <- 100
df_id_checkadded_actual <- ffp_snw_stimulus_checks_bush_add2dfid(df_id, it_income_n_in_seg)
print('df_id_checkadded_actual')
#> [1] "df_id_checkadded_actual"
print(df_id_checkadded_actual)
#> # A tibble: 111 x 11
#>     id_i bush_rebate bush_rebate_n_c~ marital  kids age_group ymin_group    mass
#>    <dbl>       <dbl>            <dbl>   <int> <int> <fct>     <chr>        <dbl>
#>  1     1        398.                4       0     0 (17,64]   (0,0.363]  3.17e-2
#>  2     2        600                 6       0     0 (17,64]   (0.363,0.~ 6.06e-2
#>  3     3        600                 6       0     0 (17,64]   (0.544,0.~ 9.94e-2
#>  4     4        600                 6       0     0 (17,64]   (0.725,0.~ 4.37e-2
#>  5     5        600                 6       0     0 (17,64]   (0.907,1.~ 5.08e-2
#>  6     6        600                 6       0     0 (17,64]   (1.09,1.2~ 2.18e-2
#>  7     7        548.                5       0     0 (17,64]   (1.27,1.4~ 1.91e-2
#>  8     8        143.                1       0     0 (17,64]   (1.45,1.6~ 3.07e-2
#>  9     9          0                 0       0     0 (17,64]   (1.63,1.8~ 9.42e-4
#> 10    10          0                 0       0     0 (17,64]   (1.81,1.9~ 1.19e-2
#> # ... with 101 more rows, and 3 more variables: hhsize <dbl>,
#> #   y_group_min <dbl>, y_group_max <dbl>