本文整理汇总了Python中taxcalc.Calculator.weighted_total方法的典型用法代码示例。如果您正苦于以下问题:Python Calculator.weighted_total方法的具体用法?Python Calculator.weighted_total怎么用?Python Calculator.weighted_total使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类taxcalc.Calculator
的用法示例。
在下文中一共展示了Calculator.weighted_total方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_credit_reforms
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import weighted_total [as 别名]
def test_credit_reforms(puf_subsample):
"""
Test personal credit reforms using puf.csv subsample
"""
rec = Records(data=puf_subsample)
reform_year = 2017
# create current-law Calculator object, calc1
pol = Policy()
calc1 = Calculator(policy=pol, records=rec)
calc1.advance_to_year(reform_year)
calc1.calc_all()
itax1 = calc1.weighted_total('iitax')
# create personal-refundable-credit-reform Calculator object, calc2
reform = {'II_credit': {reform_year: [1000, 1000, 1000, 1000, 1000]}}
pol.implement_reform(reform)
calc2 = Calculator(policy=pol, records=rec)
calc2.advance_to_year(reform_year)
calc2.calc_all()
itax2 = calc2.weighted_total('iitax')
# create personal-nonrefundable-credit-reform Calculator object, calc3
reform = {'II_credit_nr': {reform_year: [1000, 1000, 1000, 1000, 1000]}}
pol = Policy()
pol.implement_reform(reform)
calc3 = Calculator(policy=pol, records=rec)
calc3.advance_to_year(reform_year)
calc3.calc_all()
itax3 = calc3.weighted_total('iitax')
# check income tax revenues generated by the three Calculator objects
assert itax2 < itax1 # because refundable credits lower revenues
assert itax3 > itax2 # because nonrefundable credits lower revenues less
assert itax3 < itax1 # because nonrefundable credits lower revenues some
示例2: test_calculator_using_nonstd_input
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import weighted_total [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)
示例3: test_compatible_data
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import weighted_total [as 别名]
def test_compatible_data(cps_subsample, puf_subsample,
allparams, reform_xx,
tc_objs, allparams_batch):
"""
Test that the compatible_data attribute in policy_current_law.json
is accurate by implementing the min and max values of each parameter
as reforms and ensuring that revenue differs from baseline when for
at least one of these reforms when using datasets marked compatible
and does not differ when using datasets marked as incompatible.
"""
# pylint: disable=too-many-arguments,too-many-locals
# pylint: disable=too-many-statements,too-many-branches
# Check NPARAMS value
assert NPARAMS == len(allparams)
# Get taxcalc objects from tc_objs fixture
rec_xx, c_xx, puftest = tc_objs
# These parameters are exempt because they are not active under
# current law and activating them would deactivate other parameters,
# or if it is difficult to devise a test for them.
exempt_from_testing = [
'CG_ec', 'CG_reinvest_ec_rt',
'II_prt', 'ID_prt', 'ID_crt',
'CR_SchR_hc', 'ACTC_ChildNum'
]
# Loop through the parameters in allparams_batch
errmsg = 'ERROR: {} {}\n'
errors = ''
for pname in allparams_batch:
param = allparams_batch[pname]
max_listed = param['valid_values']['max']
# handle links to other params or self
if isinstance(max_listed, str):
if isinstance(allparams[max_listed]['value'][0], list):
max_val = allparams[max_listed]['value'][0]
else:
max_val = float(allparams[max_listed]['value'][0])
else:
if isinstance(param['value'][0], list):
max_val = [max_listed] * len(param['value'][0])
else:
max_val = max_listed
min_listed = param['valid_values']['min']
if isinstance(min_listed, str):
if isinstance(allparams[min_listed]['value'][0], list):
min_val = allparams[min_listed]['value'][0]
else:
min_val = float(allparams[min_listed]['value'][0])
else:
if isinstance(param['value'][0], list):
min_val = [min_listed] * len(param['value'][0])
else:
min_val = min_listed
# create reform dictionaries
max_reform = copy.deepcopy(reform_xx)
min_reform = copy.deepcopy(reform_xx)
max_reform[XX_YEAR][str(pname)] = [max_val]
min_reform[XX_YEAR][str(pname)] = [min_val]
# assess whether max reform changes results
if puftest:
rec_yy = Records(data=puf_subsample)
else:
rec_yy = Records.cps_constructor(data=cps_subsample)
p_yy = Policy()
p_yy.implement_reform(max_reform, raise_errors=False)
c_yy = Calculator(policy=p_yy, records=rec_yy, verbose=False)
c_yy.advance_to_year(TEST_YEAR)
c_yy.calc_all()
if pname.startswith('BEN') and pname.endswith('_repeal'):
max_reform_change = (
c_yy.weighted_total('benefit_cost_total') -
c_xx.weighted_total('benefit_cost_total')
)
else:
max_reform_change = (
c_yy.weighted_total('combined') -
c_xx.weighted_total('combined')
)
min_reform_change = 0
# assess whether min reform changes results, if max reform did not
if max_reform_change == 0:
p_yy = Policy()
p_yy.implement_reform(min_reform, raise_errors=False)
c_yy = Calculator(policy=p_yy, records=rec_xx)
c_yy.advance_to_year(TEST_YEAR)
c_yy.calc_all()
if pname.startswith('BEN') and pname.endswith('_repeal'):
min_reform_change = (
c_yy.weighted_total('benefit_cost_total') -
c_xx.weighted_total('benefit_cost_total')
)
else:
min_reform_change = (
c_yy.weighted_total('combined') -
c_xx.weighted_total('combined')
)
if min_reform_change == 0 and pname not in exempt_from_testing:
#.........这里部分代码省略.........
示例4: test_itemded_component_amounts
# 需要导入模块: from taxcalc import Calculator [as 别名]
# 或者: from taxcalc.Calculator import weighted_total [as 别名]
def test_itemded_component_amounts(year, cvname, hcname, puf_fullsample):
"""
Check that all c04470 components are adjusted to reflect the filing
unit's standard-vs-itemized-deduction decision. Check for 2018
(when current law has no Pease phaseout of itemized deductions and
already has complete haircuts for Casualty and Miscellaneous deductions)
and 2017 (when current law has a Pease phaseout of itemized deductions
and has no haircuts). The calcfunctions.py code makes no attempt to
adjust the components for the effects of Pease-like phaseout or any other
type of limitation on total itemized deductions, so the pre-2018 tests
here use c21060, instead of c04470, as the itemized deductions total.
"""
# pylint: disable=too-many-locals
recs = Records(data=puf_fullsample)
# policy1 such that everybody itemizes deductions and all are allowed
policy1 = Policy()
reform1 = {
'STD_Aged': {year: [0.0, 0.0, 0.0, 0.0, 0.0]},
'STD': {year: [0.0, 0.0, 0.0, 0.0, 0.0]}
}
policy1.implement_reform(reform1)
assert not policy1.parameter_errors
# policy2 such that everybody itemizes deductions but one is disallowed
policy2 = Policy()
reform2 = {
'STD_Aged': {year: [0.0, 0.0, 0.0, 0.0, 0.0]},
'STD': {year: [0.0, 0.0, 0.0, 0.0, 0.0]},
hcname: {year: 1.0}
}
policy2.implement_reform(reform2)
assert not policy2.parameter_errors
# compute tax liability in specified year
calc1 = Calculator(policy=policy1, records=recs, verbose=False)
calc1.advance_to_year(year)
calc1.calc_all()
calc2 = Calculator(policy=policy2, records=recs, verbose=False)
calc2.advance_to_year(year)
calc2.calc_all()
# confirm that nobody is taking the standard deduction
assert np.allclose(calc1.array('standard'), 0.)
assert np.allclose(calc2.array('standard'), 0.)
# calculate different in total itemized deductions
if year == 2017:
# pre-Pease limitation total itemized deductions
itmded1 = calc1.weighted_total('c21060') * 1e-9
itmded2 = calc2.weighted_total('c21060') * 1e-9
elif year == 2018:
# total itemized deductions (no Pease-like limitation)
itmded1 = calc1.weighted_total('c04470') * 1e-9
itmded2 = calc2.weighted_total('c04470') * 1e-9
else:
raise ValueError('illegal year value = {}'.format(year))
difference_in_total_itmded = itmded1 - itmded2
# calculate itemized component amount
component_amt = calc1.weighted_total(cvname) * 1e-9
# confirm that component amount is equal to difference in total deductions
if year == 2017 and cvname == 'c19700':
atol = 0.009
elif year == 2017 and cvname == 'c19200':
atol = 0.010
else:
atol = 0.00001
if not np.allclose(component_amt, difference_in_total_itmded, atol=atol):
txt = '\n{}={:.3f} != {:.3f}=difference_in_total_itemized_deductions'
msg = txt.format(cvname, component_amt, difference_in_total_itmded)
raise ValueError(msg)