本文整理汇总了Python中taxcalc.Calculator.mtr方法的典型用法代码示例。如果您正苦于以下问题:Python Calculator.mtr方法的具体用法?Python Calculator.mtr怎么用?Python Calculator.mtr使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类taxcalc.Calculator
的用法示例。
在下文中一共展示了Calculator.mtr方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_Calculator_mtr_when_PT_rates_differ
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_Calculator_mtr_when_PT_rates_differ():
reform = {2013: {'_II_rt1': [0.40],
'_II_rt2': [0.40],
'_II_rt3': [0.40],
'_II_rt4': [0.40],
'_II_rt5': [0.40],
'_II_rt6': [0.40],
'_II_rt7': [0.40],
'_PT_rt1': [0.30],
'_PT_rt2': [0.30],
'_PT_rt3': [0.30],
'_PT_rt4': [0.30],
'_PT_rt5': [0.30],
'_PT_rt6': [0.30],
'_PT_rt7': [0.30]}}
funit = (
u'RECID,MARS,FLPDYR,e00200,e00200p,e00900,e00900p\n'
u'1, 1, 2015, 200000,200000, 100000,100000\n'
)
pol1 = Policy()
rec1 = Records(pd.read_csv(StringIO(funit)))
calc1 = Calculator(policy=pol1, records=rec1)
(_, mtr1, _) = calc1.mtr(variable_str='p23250')
pol2 = Policy()
pol2.implement_reform(reform)
rec2 = Records(pd.read_csv(StringIO(funit)))
calc2 = Calculator(policy=pol2, records=rec2)
(_, mtr2, _) = calc2.mtr(variable_str='p23250')
assert np.allclose(mtr1, mtr2, rtol=0.0, atol=1e-06)
示例2: test_calculator_mtr_when_PT_rates_differ
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_calculator_mtr_when_PT_rates_differ():
"""
Test Calculator mtr method in special case.
"""
reform = {2013: {'_II_rt1': [0.40],
'_II_rt2': [0.40],
'_II_rt3': [0.40],
'_II_rt4': [0.40],
'_II_rt5': [0.40],
'_II_rt6': [0.40],
'_II_rt7': [0.40],
'_PT_rt1': [0.30],
'_PT_rt2': [0.30],
'_PT_rt3': [0.30],
'_PT_rt4': [0.30],
'_PT_rt5': [0.30],
'_PT_rt6': [0.30],
'_PT_rt7': [0.30]}}
funit = (
u'RECID,MARS,FLPDYR,e00200,e00200p,e00900,e00900p,extraneous\n'
u'1, 1, 2009, 200000,200000, 100000,100000, 9999999999\n'
)
rec = Records(pd.read_csv(StringIO(funit)))
pol = Policy()
calc1 = Calculator(policy=pol, records=rec)
(_, mtr1, _) = calc1.mtr(variable_str='p23250')
pol.implement_reform(reform)
calc2 = Calculator(policy=pol, records=rec)
(_, mtr2, _) = calc2.mtr(variable_str='p23250')
assert np.allclose(mtr1, mtr2, rtol=0.0, atol=1e-06)
示例3: test_consumption_response
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_consumption_response(puf_1991, weights_1991):
consump = Consumption()
mpc = 0.5
consumption_response = {2013: {"_MPC_e20400": [mpc]}}
consump.update_consumption(consumption_response)
# test incorrect call to response method
with pytest.raises(ValueError):
consump.response(list(), 1)
# test correct call to response method
recs = Records(data=puf_1991, weights=weights_1991, start_year=2009)
pre = copy.deepcopy(recs.e20400)
consump.response(recs, 1.0)
post = recs.e20400
actual_diff = post - pre
expected_diff = np.ones(recs.dim) * mpc
assert np.allclose(actual_diff, expected_diff)
# compute earnings mtr with no consumption response
recs0 = Records(data=puf_1991, weights=weights_1991, start_year=2009)
calc0 = Calculator(policy=Policy(), records=recs0, consumption=None)
ided0 = copy.deepcopy(recs0.e20400)
(mtr0_ptax, mtr0_itax, _) = calc0.mtr(variable_str="e00200p", wrt_full_compensation=False)
assert np.allclose(calc0.records.e20400, ided0)
# compute earnings mtr with consumption response
recs1 = Records(data=puf_1991, weights=weights_1991, start_year=2009)
calc1 = Calculator(policy=Policy(), records=recs1, consumption=None)
assert np.allclose(calc1.records.e20400, ided0)
calc1.consumption.update_consumption(consumption_response)
(mtr1_ptax, mtr1_itax, _) = calc1.mtr(variable_str="e00200p", wrt_full_compensation=False)
assert np.allclose(calc1.records.e20400, ided0)
# confirm that payroll mtr values are no different
assert np.allclose(mtr1_ptax, mtr0_ptax)
# confirm that all mtr with cons-resp are no greater than without cons-resp
assert np.all(np.less_equal(mtr1_itax, mtr0_itax))
# confirm that some mtr with cons-resp are less than without cons-resp
assert np.any(np.less(mtr1_itax, mtr0_itax))
示例4: test_consumption_response
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_consumption_response(cps_subsample):
consump = Consumption()
mpc = 0.5
consumption_response = {'MPC_e20400': {2013: mpc}}
consump.update_consumption(consumption_response)
# test incorrect call to response method
with pytest.raises(ValueError):
consump.response(list(), 1)
# test correct call to response method
rec = Records.cps_constructor(data=cps_subsample)
pre = copy.deepcopy(rec.e20400)
consump.response(rec, 1.0)
post = rec.e20400
actual_diff = post - pre
expected_diff = np.ones(rec.array_length) * mpc
assert np.allclose(actual_diff, expected_diff)
# compute earnings mtr with no consumption response
rec = Records.cps_constructor(data=cps_subsample)
ided0 = copy.deepcopy(rec.e20400)
calc0 = Calculator(policy=Policy(), records=rec, consumption=None)
(mtr0_ptax, mtr0_itax, _) = calc0.mtr(variable_str='e00200p',
wrt_full_compensation=False)
assert np.allclose(calc0.array('e20400'), ided0)
# compute earnings mtr with consumption response
calc1 = Calculator(policy=Policy(), records=rec, consumption=consump)
mtr1_ptax, mtr1_itax, _ = calc1.mtr(variable_str='e00200p',
wrt_full_compensation=False)
assert np.allclose(calc1.array('e20400'), ided0)
# confirm that payroll mtr values are no different
assert np.allclose(mtr1_ptax, mtr0_ptax)
# confirm that all mtr with cons-resp are no greater than without cons-resp
assert np.all(np.less_equal(np.around(mtr1_itax, decimals=5),
np.around(mtr0_itax, decimals=5)))
# confirm that some mtr with cons-resp are less than without cons-resp
assert np.any(np.less(mtr1_itax, mtr0_itax))
示例5: test_calculator_using_nonstd_input
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_calculator_using_nonstd_input(rawinputfile):
"""
Test Calculator using non-standard input records.
"""
# check Calculator handling of raw, non-standard input data with no aging
pol = Policy()
pol.set_year(RAWINPUTFILE_YEAR) # set policy params to input data year
nonstd = Records(data=rawinputfile.name,
gfactors=None, # keeps raw data unchanged
weights=None,
start_year=RAWINPUTFILE_YEAR) # set raw input data year
assert nonstd.array_length == RAWINPUTFILE_FUNITS
calc = Calculator(policy=pol, records=nonstd,
sync_years=False) # keeps raw data unchanged
assert calc.current_year == RAWINPUTFILE_YEAR
calc.calc_all()
assert calc.weighted_total('e00200') == 0
assert calc.total_weight() == 0
varlist = ['RECID', 'MARS']
dframe = calc.dataframe(varlist)
assert isinstance(dframe, pd.DataFrame)
assert dframe.shape == (RAWINPUTFILE_FUNITS, len(varlist))
mars = calc.array('MARS')
assert isinstance(mars, np.ndarray)
assert mars.shape == (RAWINPUTFILE_FUNITS,)
exp_iitax = np.zeros((nonstd.array_length,))
assert np.allclose(calc.array('iitax'), exp_iitax)
mtr_ptax, _, _ = calc.mtr(wrt_full_compensation=False)
exp_mtr_ptax = np.zeros((nonstd.array_length,))
exp_mtr_ptax.fill(0.153)
assert np.allclose(mtr_ptax, exp_mtr_ptax)
示例6: test_Calculator_mtr
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_Calculator_mtr():
policy = Policy()
puf = Records(TAX_DTA, weights=WEIGHTS, start_year=2009)
calc = Calculator(policy=policy, records=puf)
(mtr_FICA, mtr_IIT, mtr) = calc.mtr()
assert type(mtr) == np.ndarray
assert np.array_equal(mtr, mtr_FICA) is False
assert np.array_equal(mtr_FICA, mtr_IIT) is False
示例7: test_mtr_pt_active
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_mtr_pt_active(puf_subsample):
"""
Test whether including wages in active income causes
MTRs on e00900p and e26270 to be less than -1 (i.e., -100%)
"""
# pylint: disable=too-many-locals
rec = Records(data=puf_subsample)
reform_year = 2018
# create current-law Calculator object, calc1
pol1 = Policy()
calc1 = Calculator(policy=pol1, records=rec)
calc1.advance_to_year(reform_year)
calc1.calc_all()
mtr1_e00900p = calc1.mtr('e00900p')[2]
mtr1_e26270 = calc1.mtr('e26270')[2]
assert min(mtr1_e00900p) > -1
assert min(mtr1_e26270) > -1
# change PT rates, calc2
reform2 = {'PT_rt7': {reform_year: 0.35}}
pol2 = Policy()
pol2.implement_reform(reform2)
calc2 = Calculator(policy=pol2, records=rec)
calc2.advance_to_year(reform_year)
calc2.calc_all()
mtr2_e00900p = calc2.mtr('e00900p')[2]
mtr2_e26270 = calc2.mtr('e26270')[2]
assert min(mtr2_e00900p) > -1
assert min(mtr2_e26270) > -1
# change PT_wages_active_income
reform3 = {'PT_wages_active_income': {reform_year: True}}
pol3 = Policy()
pol3.implement_reform(reform3)
calc3 = Calculator(policy=pol3, records=rec)
calc3.advance_to_year(reform_year)
calc3.calc_all()
mtr3_e00900p = calc3.mtr('e00900p')[2]
mtr3_e26270 = calc3.mtr('e26270')[2]
assert min(mtr3_e00900p) > -1
assert min(mtr3_e26270) > -1
# change PT rates and PT_wages_active_income
reform4 = {
'PT_wages_active_income': {reform_year: True},
'PT_rt7': {reform_year: 0.35}
}
pol4 = Policy()
pol4.implement_reform(reform4)
calc4 = Calculator(policy=pol4, records=rec)
calc4.advance_to_year(reform_year)
calc4.calc_all()
mtr4_e00900p = calc4.mtr('e00900p')[2]
mtr4_e26270 = calc4.mtr('e26270')[2]
assert min(mtr4_e00900p) > -1
assert min(mtr4_e26270) > -1
示例8: test_Calculator_mtr
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_Calculator_mtr():
puf = Records(TAXDATA, weights=WEIGHTS, start_year=2009)
calc = Calculator(policy=Policy(), records=puf)
recs_pre_e00200p = copy.deepcopy(calc.records.e00200p)
(mtr_FICA, mtr_IIT, mtr_combined) = calc.mtr(income_type_str='e00200p')
recs_post_e00200p = copy.deepcopy(calc.records.e00200p)
assert np.allclose(recs_post_e00200p, recs_pre_e00200p)
assert type(mtr_combined) == np.ndarray
assert np.array_equal(mtr_combined, mtr_FICA) is False
assert np.array_equal(mtr_FICA, mtr_IIT) is False
with pytest.raises(ValueError):
(_, _, mtr_combined) = calc.mtr(income_type_str='bad_income_type')
(_, _, mtr_combined) = calc.mtr(income_type_str='e00650',
negative_finite_diff=True)
assert type(mtr_combined) == np.ndarray
(_, _, mtr_combined) = calc.mtr(income_type_str='e00900p')
assert type(mtr_combined) == np.ndarray
(_, _, mtr_combined) = calc.mtr(income_type_str='e01700')
assert type(mtr_combined) == np.ndarray
示例9: test_calculator_mtr
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_calculator_mtr(cps_subsample):
"""
Test Calculator mtr method.
"""
rec = Records.cps_constructor(data=cps_subsample)
calcx = Calculator(policy=Policy(), records=rec)
calcx.calc_all()
combinedx = calcx.array('combined')
c00100x = calcx.array('c00100')
calc = Calculator(policy=Policy(), records=rec)
recs_pre_e00200p = copy.deepcopy(calc.array('e00200p'))
(mtr_ptx, mtr_itx, mtr_cmb) = calc.mtr(variable_str='e00200p',
zero_out_calculated_vars=True)
recs_post_e00200p = calc.array('e00200p')
assert np.allclose(recs_post_e00200p, recs_pre_e00200p)
assert np.allclose(calc.array('combined'), combinedx)
assert np.allclose(calc.array('c00100'), c00100x)
assert np.array_equal(mtr_cmb, mtr_ptx) is False
assert np.array_equal(mtr_ptx, mtr_itx) is False
with pytest.raises(ValueError):
calc.mtr(variable_str='bad_income_type')
(_, _, mtr_combined) = calc.mtr(variable_str='e00200s',
calc_all_already_called=True)
assert isinstance(mtr_combined, np.ndarray)
(_, _, mtr_combined) = calc.mtr(variable_str='e00650',
negative_finite_diff=True,
calc_all_already_called=True)
assert isinstance(mtr_combined, np.ndarray)
(_, _, mtr_combined) = calc.mtr(variable_str='e00900p',
calc_all_already_called=True)
assert isinstance(mtr_combined, np.ndarray)
(_, _, mtr_combined) = calc.mtr(variable_str='e01700',
calc_all_already_called=True)
assert isinstance(mtr_combined, np.ndarray)
(_, _, mtr_combined) = calc.mtr(variable_str='e26270',
calc_all_already_called=True)
assert isinstance(mtr_combined, np.ndarray)
(_, _, mtr_combined) = calc.mtr(variable_str='e00200p',
calc_all_already_called=True)
assert np.allclose(mtr_combined, mtr_cmb)
assert np.allclose(calc.array('combined'), combinedx)
assert np.allclose(calc.array('c00100'), c00100x)
示例10: run
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def run():
"""
Compute histograms for each marginal tax rate income type using
sample input from the 'puf.csv' file and writing output to stdout.
"""
if NEG_DIFF:
sys.stdout.write('MTR computed using NEGATIVE finite_diff.\n')
else:
sys.stdout.write('MTR computed using POSITIVE finite_diff.\n')
# create a Policy object (clp) containing current-law policy parameters
clp = Policy()
clp.set_year(TAX_YEAR)
# create a Records object (puf) containing puf.csv input records
puf = Records()
recid = puf.RECID # pylint: disable=no-member
# create a Calculator object using clp policy and puf records
calc = Calculator(policy=clp, records=puf)
# . . . specify FICA mtr histogram bin boundaries (or edges):
fica_bin_edges = [0.0, 0.02, 0.04, 0.06, 0.08,
0.10, 0.12, 0.14, 0.16, 0.18, 1.0]
# the bin boundaries above are arbitrary, so users
# may want to experiment with alternative boundaries
# . . . specify IIT mtr histogram bin boundaries (or edges):
iit_bin_edges = [-1.0, -0.30, -0.20, -0.10, 0.0,
0.10, 0.20, 0.30, 0.40, 0.50, 1.0]
# the bin boundaries above are arbitrary, so users
# may want to experiment with alternative boundaries
assert len(fica_bin_edges) == len(iit_bin_edges)
sys.stdout.write('{} = {}\n'.format('Total number of data records',
puf.dim))
sys.stdout.write('FICA mtr histogram bin edges:\n')
sys.stdout.write(' {}\n'.format(fica_bin_edges))
sys.stdout.write('IIT mtr histogram bin edges:\n')
sys.stdout.write(' {}\n'.format(iit_bin_edges))
inctype_header = 'FICA and IIT mtr histogram bin counts for'
# compute marginal tax rate (mtr) histograms for each mtr income type
for inctype in Calculator.MTR_VALID_INCOME_TYPES:
(mtr_fica, mtr_iit, _) = calc.mtr(income_type_str=inctype,
negative_finite_diff=NEG_DIFF,
wrt_full_compensation=False)
sys.stdout.write('{} {}:\n'.format(inctype_header, inctype))
write_mtr_bin_counts(mtr_fica, fica_bin_edges, recid)
write_mtr_bin_counts(mtr_iit, iit_bin_edges, recid)
示例11: test_Calculator_using_nonstd_input
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_Calculator_using_nonstd_input(rawinputfile):
# check Calculator handling of raw, non-standard input data with no aging
policy = Policy()
policy.set_year(RAWINPUTFILE_YEAR) # set policy params to input data year
nonpuf = Records(data=rawinputfile.name,
start_year=RAWINPUTFILE_YEAR, # set raw input data year
consider_imputations=False) # keeps raw data unchanged
assert nonpuf.dim == RAWINPUTFILE_FUNITS
calc = Calculator(policy=policy,
records=nonpuf,
sync_years=False) # keeps raw data unchanged
assert calc.current_year == RAWINPUTFILE_YEAR
calc.calc_all()
exp_iitax = np.zeros((nonpuf.dim,))
assert_array_equal(nonpuf._iitax, exp_iitax)
mtr_fica, _, _ = calc.mtr(wrt_full_compensation=False)
exp_mtr_fica = np.zeros((nonpuf.dim,))
exp_mtr_fica.fill(0.153)
assert_array_equal(mtr_fica, exp_mtr_fica)
示例12: test_Calculator_using_nonstd_input
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_Calculator_using_nonstd_input(rawinputfile):
# check Calculator handling of raw, non-standard input data with no aging
policy = Policy()
policy.set_year(RAWINPUTFILE_YEAR) # set policy params to input data year
nonpuf = Records(data=rawinputfile.name,
blowup_factors=None, # keeps raw data unchanged
weights=None,
start_year=RAWINPUTFILE_YEAR) # set raw input data year
assert nonpuf.dim == RAWINPUTFILE_FUNITS
calc = Calculator(policy=policy,
records=nonpuf,
sync_years=False) # keeps raw data unchanged
assert calc.current_year == RAWINPUTFILE_YEAR
calc.calc_all()
exp_iitax = np.zeros((nonpuf.dim,))
assert np.allclose(nonpuf._iitax, exp_iitax)
mtr_ptax, _, _ = calc.mtr(wrt_full_compensation=False)
exp_mtr_ptax = np.zeros((nonpuf.dim,))
exp_mtr_ptax.fill(0.153)
assert np.allclose(mtr_ptax, exp_mtr_ptax)
示例13: test_Calculator_mtr
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_Calculator_mtr(records_2009):
calc = Calculator(policy=Policy(), records=records_2009)
recs_pre_e00200p = copy.deepcopy(calc.records.e00200p)
(mtr_ptx, mtr_itx, mtr_combined) = calc.mtr(variable_str='e00200p',
zero_out_calculated_vars=True)
recs_post_e00200p = copy.deepcopy(calc.records.e00200p)
assert np.allclose(recs_post_e00200p, recs_pre_e00200p)
assert type(mtr_combined) == np.ndarray
assert np.array_equal(mtr_combined, mtr_ptx) is False
assert np.array_equal(mtr_ptx, mtr_itx) is False
with pytest.raises(ValueError):
(_, _, mtr_combined) = calc.mtr(variable_str='bad_income_type')
(_, _, mtr_combined) = calc.mtr(variable_str='e00650',
negative_finite_diff=True)
assert type(mtr_combined) == np.ndarray
(_, _, mtr_combined) = calc.mtr(variable_str='e00900p')
assert type(mtr_combined) == np.ndarray
(_, _, mtr_combined) = calc.mtr(variable_str='e01700')
assert type(mtr_combined) == np.ndarray
(_, _, mtr_combined) = calc.mtr(variable_str='e26270')
assert type(mtr_combined) == np.ndarray
示例14: test_mtr
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def test_mtr():
"""
Test Tax-Calculator marginal tax rates with no policy reform using puf.csv
Compute histograms for each marginal tax rate income type using
sample input from the puf.csv file and writing output to a string,
which is then compared for differences with EXPECTED_MTR_RESULTS.
"""
# pylint: disable=too-many-locals
assert len(FICA_MTR_BIN_EDGES) == len(IIT_MTR_BIN_EDGES)
# construct actual results string, res
res = ''
if MTR_NEG_DIFF:
res += 'MTR computed using NEGATIVE finite_diff '
else:
res += 'MTR computed using POSITIVE finite_diff '
res += 'for tax year {}\n'.format(MTR_TAX_YEAR)
# create a Policy object (clp) containing current-law policy parameters
clp = Policy()
clp.set_year(MTR_TAX_YEAR)
# create a Records object (puf) containing puf.csv input records
puf = Records(data=PUFCSV_PATH)
recid = puf.RECID # pylint: disable=no-member
# create a Calculator object using clp policy and puf records
calc = Calculator(policy=clp, records=puf)
res += '{} = {}\n'.format('Total number of data records', puf.dim)
res += 'FICA mtr histogram bin edges:\n'
res += ' {}\n'.format(FICA_MTR_BIN_EDGES)
res += 'IIT mtr histogram bin edges:\n'
res += ' {}\n'.format(IIT_MTR_BIN_EDGES)
inctype_header = 'FICA and IIT mtr histogram bin counts for'
# compute marginal tax rate (mtr) histograms for each mtr income type
for inctype in Calculator.MTR_VALID_INCOME_TYPES:
(mtr_fica, mtr_iit, _) = calc.mtr(income_type_str=inctype,
negative_finite_diff=MTR_NEG_DIFF,
wrt_full_compensation=False)
res += '{} {}:\n'.format(inctype_header, inctype)
res += mtr_bin_counts(mtr_fica, FICA_MTR_BIN_EDGES, recid)
res += mtr_bin_counts(mtr_iit, IIT_MTR_BIN_EDGES, recid)
# generate differences between actual and expected results
actual = res.splitlines(True)
with open(MTRRES_PATH, 'r') as expected_file:
txt = expected_file.read()
expected_results = txt.rstrip('\n\t ') + '\n' # cleanup end of file txt
expected = expected_results.splitlines(True)
diff = difflib.unified_diff(expected, actual,
fromfile='expected', tofile='actual', n=0)
# convert diff generator into a list of lines:
diff_lines = list()
for line in diff:
diff_lines.append(line)
# test failure if there are any diff_lines
if len(diff_lines) > 0:
new_filename = '{}{}'.format(MTRRES_PATH[:-10], 'actual.txt')
with open(new_filename, 'w') as new_file:
new_file.write(res)
sys.stdout.write('*************************************************\n')
sys.stdout.write('*** NEW RESULTS IN pufcsv_mtr_actual.txt FILE ***\n')
sys.stdout.write('*** if new OK, copy pufcsv_mtr_actual.txt to ***\n')
sys.stdout.write('*** pufcsv_mtr_expect.txt ***\n')
sys.stdout.write('*** and rerun test. ***\n')
sys.stdout.write('*************************************************\n')
assert False
示例15: main
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import mtr [as 别名]
def main(mpc_e17500, mpc_e18400, mpc_e19800, mpc_e20400):
"""
Highest-level logic of consumption.py script that produces Tax-Calculator
marginal-tax-rate results running the taxcalc package on this computer.
"""
# pylint: disable=too-many-locals
# pylint: disable=too-many-statements
if not os.path.isfile(PUFCSV_PATH):
sys.stderr.write('ERROR: file {} does not exist\n'.format(PUFCSV_PATH))
return 1
cyr = 2014
# compute mtr under current-law policy with no consumption response
recs0 = Records(data=PUFCSV_PATH)
calc0 = Calculator(policy=Policy(), records=recs0,
consumption=None, verbose=False)
calc0.advance_to_year(cyr)
wghts = calc0.records.s006
(mtr0_fica, mtr0_itax, _) = calc0.mtr(income_type_str='e00200p',
wrt_full_compensation=False)
# compute mtr under current-law policy with specified consumption response
consump = Consumption()
consump_mpc = {cyr: {'_MPC_e17500': [mpc_e17500],
'_MPC_e18400': [mpc_e18400],
'_MPC_e19800': [mpc_e19800],
'_MPC_e20400': [mpc_e20400]}}
consump.update_consumption(consump_mpc)
recs1 = Records(data=PUFCSV_PATH)
calc1 = Calculator(policy=Policy(), records=recs1,
consumption=consump, verbose=False)
calc1.advance_to_year(cyr)
assert calc1.consumption.current_year == cyr
(mtr1_fica, mtr1_itax, _) = calc1.mtr(income_type_str='e00200p',
wrt_full_compensation=False)
# compare unweighted mtr results with and without consumption response
epsilon = 1.0e-6 # this would represent a mtr of 0.0001 percent
assert np.allclose(mtr1_fica, mtr0_fica, atol=epsilon, rtol=0.0)
mtr_raw_diff = mtr1_itax - mtr0_itax
mtr1_itax = np.where(np.logical_and(mtr_raw_diff > 0.0,
mtr_raw_diff < epsilon),
mtr0_itax, mtr1_itax) # zero out small positive diffs
num_total = mtr1_itax.size
num_increases = np.sum(np.greater(mtr1_itax, mtr0_itax))
num_decreases = np.sum(np.less(mtr1_itax, mtr0_itax))
num_nochanges = num_total - num_increases - num_decreases
res = 'unweighted_num_of_mtr_{}_with_consump_response= {:6d} ({:5.1f}%)\n'
sys.stdout.write(res.format('increases', num_increases,
(100.0 * num_increases) / num_total))
sys.stdout.write(res.format('decreases', num_decreases,
(100.0 * num_decreases) / num_total))
sys.stdout.write(res.format('nochanges', num_nochanges,
(100.0 * num_nochanges) / num_total))
sys.stdout.write(res.format('all_units', num_total, 100.0))
# compute average size of decreases in mtr_itax
mtr_pre = mtr0_itax[mtr1_itax < mtr0_itax]
assert mtr_pre.size == num_decreases
avg_pre = np.mean(mtr_pre)
res = 'unweighted_abs_mean_no_c_resp(for_decreases)mtr_itax= {:.4f}\n'
sys.stdout.write(res.format(avg_pre))
mtr_diff = mtr1_itax - mtr0_itax
mtr_neg = mtr_diff[mtr_diff < 0.0]
assert mtr_neg.size == num_decreases
avg_neg = np.mean(mtr_neg)
assert avg_neg < 0.0
res = 'unweighted_abs_mean_change(for_decreases)in_mtr_itax= {:.4f}\n'
sys.stdout.write(res.format(-avg_neg))
res = ' ratio_of_abs_change_in_mtr_itax_and_no_c_resp_mtr_itax= {:.3f}\n'
sys.stdout.write(res.format(-avg_neg / avg_pre))
# compare weighted mtr results with and without consumption response
wghts_pre = wghts[mtr1_itax < mtr0_itax]
assert wghts_pre.size == num_decreases
res = 'weighted_percent_of_units_with_mtr_decrease= {:.1f}%\n'
frac = wghts_pre.sum() / wghts.sum()
sys.stdout.write(res.format(100.0 * frac))
res = ' ratio_of_abs_change_in_mtr_itax_and_no_c_resp_mtr_itax= {:.3f}\n'
w_avg_pre = np.mean((mtr_pre * wghts_pre).sum() / wghts_pre.sum())
w_avg_neg = np.mean((mtr_neg * wghts_pre).sum() / wghts_pre.sum())
sys.stdout.write(res.format(-w_avg_neg / w_avg_pre))
# return no-error exit code
return 0