def test_reform_combination(): reference_tax_benefit_system = base_survey.get_cached_reform( reform_key = 'inversion_directe_salaires', tax_benefit_system = base_survey.france_data_tax_benefit_system, ) tax_benefit_system = base_survey.get_cached_reform( reform_key = 'ayrault_muet', tax_benefit_system = reference_tax_benefit_system, )
def test_reform_combination(): baseline_tax_benefit_system = base_survey.get_cached_reform( reform_key = 'inversion_directe_salaires', tax_benefit_system = base_survey.france_data_tax_benefit_system, ) base_survey.get_cached_reform( reform_key = 'ayrault_muet', tax_benefit_system = baseline_tax_benefit_system, )
def test_reform(): year = 2014 input_data_frame = get_fake_input_data_frame(year) # On ne garde que les deux parents input_data_frame.loc[0, 'salaire_imposable'] = 20000 input_data_frame.loc[1, 'salaire_imposable'] = 18000 input_data_frame = input_data_frame.loc[0:1].copy() reform = base.get_cached_reform( reform_key = 'plf2015', tax_benefit_system = base.france_data_tax_benefit_system, ) year = 2013 survey_scenario = ErfsSurveyScenario.create( tax_benefit_system = reform, baseline_tax_benefit_system = base.france_data_tax_benefit_system, year = year, ) survey_scenario.init_from_data( data = dict(input_data_frame = input_data_frame), ) error_margin = 1 assert_near(survey_scenario.calculate_variable('irpp', use_baseline = True, period = year), [-10124, -869], error_margin) assert_near(survey_scenario.calculate_variable('irpp', period = year), [-10118, -911.4 + (1135 - 911.4)], error_margin)
def get_survey_scenario(year = 2012, rebuild_input_data = False, tax_benefit_system = None, baseline_tax_benefit_system = None, data = None, reform_key = None): assert not( (tax_benefit_system is not None) & (reform_key is not None) ) if tax_benefit_system is None: if reform_key is not None: tax_benefit_system = base_survey.get_cached_reform( reform_key = reform_key, tax_benefit_system = base_survey.france_data_tax_benefit_system, ) else: tax_benefit_system = base_survey.france_data_tax_benefit_system if baseline_tax_benefit_system is None: baseline_tax_benefit_system = tax_benefit_system survey_scenario = ErfsFprSurveyScenario.create( tax_benefit_system = tax_benefit_system, baseline_tax_benefit_system = tax_benefit_system, year = year, ) if data is None: data = dict( input_data_table = dict(), input_data_survey_prefix = 'openfisca_erfs_fpr_data', ) survey_scenario.init_from_data( data = data, rebuild_input_data = rebuild_input_data, ) return survey_scenario
def create(cls, input_data_type=None, baseline_tax_benefit_system=None, reform=None, reform_key=None, tax_benefit_system=None, year=None): assert baseline_tax_benefit_system is not None assert year is not None assert not ((reform is not None) and (reform_key is not None)) assert not (((reform is not None) or (reform_key is not None)) and (tax_benefit_system is not None)) if reform_key is not None: reform = base.get_cached_reform( reform_key=reform_key, tax_benefit_system=baseline_tax_benefit_system, ) if reform is not None: tax_benefit_system = reform if input_data_type is not None: survey_scenario = cls(input_data_type=input_data_type, year=year) else: survey_scenario = cls(year=year) survey_scenario.set_tax_benefit_systems( tax_benefit_system=tax_benefit_system, baseline_tax_benefit_system=baseline_tax_benefit_system) survey_scenario.year = year return survey_scenario
def test_reform(): year = 2006 input_data_frame = get_fake_input_data_frame(year) # On ne garde que les deux parents input_data_frame.loc[0, 'salaire_imposable'] = 20000 input_data_frame.loc[1, 'salaire_imposable'] = 18000 input_data_frame = input_data_frame.loc[0:1].copy() reform = base.get_cached_reform( reform_key='plf2015', tax_benefit_system=base.france_data_tax_benefit_system, ) survey_scenario = ErfsSurveyScenario().init_from_data_frame( input_data_frame=input_data_frame, tax_benefit_system=reform, baseline_tax_benefit_system=base.france_data_tax_benefit_system, year=2013, ) baseline_simulation = survey_scenario.new_simulation(use_baseline=True) reform_simulation = survey_scenario.new_simulation() assert 'weight_individus' in reform_simulation.tax_benefit_system.variables assert 'weight_individus' in baseline_simulation.tax_benefit_system.variables error_margin = 1 assert_near(baseline_simulation.calculate('irpp'), [-10124, -869], error_margin) assert_near(reform_simulation.calculate('irpp'), [-10118, -911.4 + (1135 - 911.4)], error_margin)
def get_survey_scenario(year=2012, rebuild_input_data=False): tax_benefit_system = base_survey.get_cached_reform( reform_key='inversion_directe_salaires', tax_benefit_system=base_survey.france_data_tax_benefit_system, ) survey_scenario = ErfsFprSurveyScenario.create( tax_benefit_system=tax_benefit_system, baseline_tax_benefit_system=tax_benefit_system, year=year, rebuild_input_data=rebuild_input_data, ) return survey_scenario
def test_erfs_fpr_survey_simulation(year = 2012, rebuild = False): tax_benefit_system = base_survey.get_cached_reform( reform_key = 'inversion_directe_salaires', tax_benefit_system = base_survey.france_data_tax_benefit_system, ) survey_scenario = ErfsFprSurveyScenario.create( tax_benefit_system = tax_benefit_system, baseline_tax_benefit_system = tax_benefit_system, year = year, # rebuild_input_data = True, ) data_frame_by_entity = None # data_frame_by_entity = survey_scenario.create_data_frame_by_entity( # variables = variables, # ) # loose_check(data_frame_by_entity) return survey_scenario, data_frame_by_entity
def test_erfs_fpr_survey_simulation(year = 2012, rebuild_input_data = False): tax_benefit_system = base_survey.get_cached_reform( reform_key = 'inversion_directe_salaires', tax_benefit_system = base_survey.france_data_tax_benefit_system, ) survey_scenario = get_survey_scenario( tax_benefit_system = tax_benefit_system, baseline_tax_benefit_system = tax_benefit_system, year = year, rebuild_input_data = rebuild_input_data, ) data_frame_by_entity = None # data_frame_by_entity = survey_scenario.create_data_frame_by_entity( # variables = variables, # ) # loose_check(data_frame_by_entity) return survey_scenario, data_frame_by_entity
def test_erfs_survey_simulation(year = 2009): tax_benefit_system = base_survey.get_cached_reform( reform_key = 'inversion_directe_salaires', tax_benefit_system = base_survey.france_data_tax_benefit_system, ) survey_scenario = ErfsSurveyScenario.create( tax_benefit_system = tax_benefit_system, baseline_tax_benefit_system = tax_benefit_system, year = year, ) data_frame_by_entity = survey_scenario.create_data_frame_by_entity( variables = variables, ) loose_check(frame_by_entity) assert ( data_frame_by_entity['familles'].weight_familles * data_frame_by_entity['familles'].af ).sum() / 1e9 > 10 return survey_scenario, frame_by_entity
def test_erfs_survey_simulation(year = 2009): tax_benefit_system = base_survey.get_cached_reform( reform_key = 'inversion_directe_salaires', tax_benefit_system = base_survey.france_data_tax_benefit_system, ) survey_scenario = get_survey_scenario( tax_benefit_system = tax_benefit_system, baseline_tax_benefit_system = tax_benefit_system, year = year, ) data_frame_by_entity = survey_scenario.create_data_frame_by_entity( variables = variables, period = year, ) loose_check(data_frame_by_entity) assert ( data_frame_by_entity['familles'].weight_familles * data_frame_by_entity['familles'].af ).sum() / 1e9 > 10 return survey_scenario, data_frame_by_entity
def create(cls, input_data_type = None, baseline_tax_benefit_system = None, reform = None, reform_key = None, tax_benefit_system = None, year = None): assert year is not None assert not( (reform is not None) and (reform_key is not None) ) reform_is_provided = (reform is not None) or (reform_key is not None) # With booleans != is xor # See https://stackoverflow.com/questions/432842/how-do-you-get-the-logical-xor-of-two-variables-in-python assert reform_is_provided != (tax_benefit_system is not None) if reform_is_provided: assert baseline_tax_benefit_system is not None if reform_key is not None: reform = base.get_cached_reform( reform_key = reform_key, tax_benefit_system = baseline_tax_benefit_system, ) if reform is not None: tax_benefit_system = reform if input_data_type is not None: survey_scenario = cls(input_data_type = input_data_type, year = year) else: survey_scenario = cls(year = year) survey_scenario.set_tax_benefit_systems( tax_benefit_system = tax_benefit_system, baseline_tax_benefit_system = baseline_tax_benefit_system ) survey_scenario.year = year return survey_scenario