def varying_survey_simulation(year = 2009, increment = 10, target = 'irpp', varying = 'rni', used_as_input_variables = None): TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() input_data_frame = get_input_data_frame(year) # Simulation 1 : get varying and target survey_scenario = SurveyScenario().init_from_data_frame( input_data_frame = input_data_frame, used_as_input_variables = used_as_input_variables, year = year, tax_benefit_system = tax_benefit_system ) simulation = survey_scenario.new_simulation(debug = False) output_data_frame = pandas.DataFrame( dict([(name, simulation.calculate_add(name)) for name in [ target, varying, 'idfoy_original' ]])) # Make input_data_frame_by_entity_key_plural from the previous input_data_frame and simulation input_data_frames_by_entity_key_plural = \ from_input_df_to_entity_key_plural_df(input_data_frame, tax_benefit_system, simulation) foyers = input_data_frames_by_entity_key_plural['idfoy'] foyers = pandas.merge(foyers, output_data_frame, on = 'idfoy_original') # Incrementation of varying: foyers[varying] = foyers[varying] + increment # On remplace la nouvelle base dans le dictionnaire input_data_frames_by_entity_key_plural['idfoy'] = foyers # 2e simulation à partir de input_data_frame_by_entity_key_plural: # TODO: fix used_as_input_variabels in the from_input_df_to_entity_key_plural_df() function used_as_input_variables = used_as_input_variables + [varying] TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() survey_scenario = SurveyScenario().init_from_data_frame( input_data_frame = None, input_data_frames_by_entity_key_plural = input_data_frames_by_entity_key_plural, used_as_input_variables = used_as_input_variables, year = year, tax_benefit_system = tax_benefit_system, ) simulation = survey_scenario.new_simulation(debug = False) output_data_frame2 = pandas.DataFrame( dict([(name, simulation.calculate_add(name)) for name in [ target, varying, 'idfoy_original' ]])) output_data_frame2.rename(columns = {varying: '{}_2'.format(varying), target: '{}_2'.format(target)}, inplace = True) merged = pandas.merge(output_data_frame, output_data_frame2, on = 'idfoy_original') merged['marginal_rate'] = marginal_rate_survey(merged, '{}'.format(target), '{}_2'.format(target), 'rni', 'rni_2') merged['average_rate'] = average_rate(target = merged[target], varying = merged[varying]) return merged
def df_survey_simulation(reductions): year = 2009 TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() input_data_frame = get_input_data_frame(year) survey_scenario_reference = SurveyScenario().init_from_data_frame( input_data_frame=input_data_frame, used_as_input_variables=['sal', 'cho', 'rst', 'age_en_mois', 'smic55'], year=year, tax_benefit_system=tax_benefit_system) simulation = survey_scenario_reference.new_simulation() # from openfisca_core import periods # period = periods.period('year', 2007) # period = period.start.offset('first-of', 'month').period('year') # bareme = simulation.legislation_at(period.start).ir.bareme data_frame_by_entity_key_plural = dict(foyers=pandas.DataFrame( dict([(name, simulation.calculate_add(name)) for name in [ 'rfr', 'irpp', 'rbg', 'iaidrdi', 'rng', 'ip_net', 'reductions', 'decile_rfr', 'weight_foyers', ] + reductions])), ) return data_frame_by_entity_key_plural
def reform_survey_simulation(reform = None, year = None, ind_variables = None, fam_variables = None, foy_variables = None, men_variables = None, used_as_input_variables = None, reform_specific_foy_variables = None): assert reform is not None assert year is not None TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() reform = reform.build_reform(tax_benefit_system) input_data_frame = get_input_data_frame(year) survey_scenario_reform = SurveyScenario().init_from_data_frame( input_data_frame = input_data_frame, used_as_input_variables = used_as_input_variables, year = year, tax_benefit_system = reform ) reference_simulation = survey_scenario_reform.new_simulation(debug = False, reference = True) reference_data_frame_by_entity_key_plural = from_simulation_to_data_frame_by_entity_key_plural( reference_simulation, ind_variables, fam_variables, foy_variables, men_variables) reform_simulation = survey_scenario_reform.new_simulation(debug = False) reform_data_frame_by_entity_key_plural = from_simulation_to_data_frame_by_entity_key_plural( reform_simulation, ind_variables, fam_variables, foy_variables + reform_specific_foy_variables, men_variables) return reform_data_frame_by_entity_key_plural, reference_data_frame_by_entity_key_plural
def init_from_data_frame(self, input_data_frame=None, input_data_frames_by_entity_key_plural=None, reference_tax_benefit_system=None, tax_benefit_system=None, used_as_input_variables=None, year=None): if used_as_input_variables is None: used_as_input_variables = self.default_used_as_input_variables FranceDataTaxBenefitSystem = init_country() france_data_tax_benefit_system = FranceDataTaxBenefitSystem() if tax_benefit_system is None: tax_benefit_system = france_data_tax_benefit_system reference_tax_benefit_system = None return super(SurveyScenario, self).init_from_data_frame( input_data_frame=input_data_frame, input_data_frames_by_entity_key_plural= input_data_frames_by_entity_key_plural, reference_tax_benefit_system=reference_tax_benefit_system, tax_benefit_system=tax_benefit_system, used_as_input_variables=used_as_input_variables, year=year)
def simulate_reform_cd(year): assert year is not None TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() reform = reform_cd.build_reform(tax_benefit_system) input_data_frame = get_input_data_frame(year) survey_scenario = SurveyScenario().init_from_data_frame( input_data_frame = input_data_frame, used_as_input_variables = ['sal', 'cho', 'rst', 'age_en_mois', 'smic55'], year = year, tax_benefit_system = reform ) reference_simulation = survey_scenario.new_simulation(debug = True, reference = True) reform_simulation = survey_scenario.new_simulation(debug = True) reform_data_frame_by_entity_key_plural = dict( foyers = pandas.DataFrame( dict([(name, reference_simulation.calculate_add(name)) for name in [ 'impo', 'rfr', ]]) ), ) return reform_data_frame_by_entity_key_plural, reference_simulation
def test_survey_simulation(): year = 2009 TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() input_data_frame = get_input_data_frame(year) survey_scenario_reform = SurveyScenario().init_from_data_frame( input_data_frame = input_data_frame, used_as_input_variables = ['sal', 'cho', 'rst', 'age_en_mois', 'smic55'], year = year, tax_benefit_system = tax_benefit_system ) simulation = survey_scenario_reform.new_simulation(debug = False, reference = True) simulation_data_frame_by_entity_key_plural = dict( foyers = pandas.DataFrame( dict([(name, simulation.calculate_add(name)) for name in [ 'rfr', 'irpp', 'rbg', 'iaidrdi', 'rng', 'rni', 'ip_net', 'reductions', 'decile_rfr', 'weight_foyers', ]]) ), ) return simulation_data_frame_by_entity_key_plural
def test_survey_simulation(): year = 2009 TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() input_data_frame = get_input_data_frame(year) survey_scenario_reform = SurveyScenario().init_from_data_frame( input_data_frame=input_data_frame, used_as_input_variables=['sal', 'cho', 'rst', 'age_en_mois', 'smic55'], year=year, tax_benefit_system=tax_benefit_system) simulation = survey_scenario_reform.new_simulation(debug=False, reference=True) simulation_data_frame_by_entity_key_plural = dict(foyers=pandas.DataFrame( dict([(name, simulation.calculate_add(name)) for name in [ 'rfr', 'irpp', 'rbg', 'iaidrdi', 'rng', 'rni', 'ip_net', 'reductions', 'decile_rfr', 'weight_foyers', ]])), ) return simulation_data_frame_by_entity_key_plural
def init_from_data_frame(self, input_data_frame = None, tax_benefit_system = None, used_as_input_variables = None, year = None): if tax_benefit_system is None: TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() super(SurveyScenario, self).init_from_data_frame( input_data_frame = input_data_frame, tax_benefit_system = tax_benefit_system, used_as_input_variables = used_as_input_variables, year = year) return self
def init_from_data_frame(self, input_data_frame=None, tax_benefit_system=None, used_as_input_variables=None, year=None): if tax_benefit_system is None: TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() super(SurveyScenario, self).init_from_data_frame( input_data_frame=input_data_frame, tax_benefit_system=tax_benefit_system, used_as_input_variables=used_as_input_variables, year=year) return self
def init_from_data_frame(self, input_data_frame = None, input_data_frames_by_entity_key_plural = None, reference_tax_benefit_system = None, tax_benefit_system = None, used_as_input_variables = None, year = None): if used_as_input_variables is None: used_as_input_variables = self.default_used_as_input_variables FranceDataTaxBenefitSystem = init_country() france_data_tax_benefit_system = FranceDataTaxBenefitSystem() if tax_benefit_system is None: tax_benefit_system = france_data_tax_benefit_system reference_tax_benefit_system = None return super(SurveyScenario, self).init_from_data_frame( input_data_frame = input_data_frame, input_data_frames_by_entity_key_plural = input_data_frames_by_entity_key_plural, reference_tax_benefit_system = reference_tax_benefit_system, tax_benefit_system = tax_benefit_system, used_as_input_variables = used_as_input_variables, year = year )
def simulate_reform_cd(year): assert year is not None TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() reform = reform_cd.build_reform(tax_benefit_system) input_data_frame = get_input_data_frame(year) survey_scenario = SurveyScenario().init_from_data_frame( input_data_frame=input_data_frame, used_as_input_variables=['sal', 'cho', 'rst', 'age_en_mois', 'smic55'], year=year, tax_benefit_system=reform) reference_simulation = survey_scenario.new_simulation(debug=True, reference=True) reform_simulation = survey_scenario.new_simulation(debug=True) reform_data_frame_by_entity_key_plural = dict(foyers=pandas.DataFrame( dict([(name, reference_simulation.calculate_add(name)) for name in [ 'impo', 'rfr', ]])), ) return reform_data_frame_by_entity_key_plural, reference_simulation
def df_survey_simulation(reductions): year = 2009 TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() input_data_frame = get_input_data_frame(year) survey_scenario_reference = SurveyScenario().init_from_data_frame( input_data_frame = input_data_frame, used_as_input_variables = ['sal', 'cho', 'rst', 'age_en_mois', 'smic55'], year = year, tax_benefit_system = tax_benefit_system ) simulation = survey_scenario_reference.new_simulation() # from openfisca_core import periods # period = periods.period('year', 2007) # period = period.start.offset('first-of', 'month').period('year') # bareme = simulation.legislation_at(period.start).ir.bareme data_frame_by_entity_key_plural = dict( foyers = pandas.DataFrame( dict([(name, simulation.calculate_add(name)) for name in [ 'rfr', 'irpp', 'rbg', 'iaidrdi', 'rng', 'ip_net', 'reductions', 'decile_rfr', 'weight_foyers', ] + reductions ]) ), ) return data_frame_by_entity_key_plural
def varying_survey_simulation(year=2009, increment=10, target='irpp', varying='rni', used_as_input_variables=None): TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() input_data_frame = get_input_data_frame(year) # Simulation 1 : get varying and target survey_scenario = SurveyScenario().init_from_data_frame( input_data_frame=input_data_frame, used_as_input_variables=used_as_input_variables, year=year, tax_benefit_system=tax_benefit_system) simulation = survey_scenario.new_simulation(debug=False) output_data_frame = pandas.DataFrame( dict([(name, simulation.calculate_add(name)) for name in [target, varying, 'idfoy_original']])) # Make input_data_frame_by_entity_key_plural from the previous input_data_frame and simulation input_data_frames_by_entity_key_plural = \ from_input_df_to_entity_key_plural_df(input_data_frame, tax_benefit_system, simulation) foyers = input_data_frames_by_entity_key_plural['idfoy'] foyers = pandas.merge(foyers, output_data_frame, on='idfoy_original') # Incrementation of varying: foyers[varying] = foyers[varying] + increment # On remplace la nouvelle base dans le dictionnaire input_data_frames_by_entity_key_plural['idfoy'] = foyers # 2e simulation à partir de input_data_frame_by_entity_key_plural: # TODO: fix used_as_input_variabels in the from_input_df_to_entity_key_plural_df() function used_as_input_variables = used_as_input_variables + [varying] TaxBenefitSystem = openfisca_france_data.init_country() tax_benefit_system = TaxBenefitSystem() survey_scenario = SurveyScenario().init_from_data_frame( input_data_frame=None, input_data_frames_by_entity_key_plural= input_data_frames_by_entity_key_plural, used_as_input_variables=used_as_input_variables, year=year, tax_benefit_system=tax_benefit_system, ) simulation = survey_scenario.new_simulation(debug=False) output_data_frame2 = pandas.DataFrame( dict([(name, simulation.calculate_add(name)) for name in [target, varying, 'idfoy_original']])) output_data_frame2.rename(columns={ varying: '{}_2'.format(varying), target: '{}_2'.format(target) }, inplace=True) merged = pandas.merge(output_data_frame, output_data_frame2, on='idfoy_original') merged['marginal_rate'] = marginal_rate_survey(merged, '{}'.format(target), '{}_2'.format(target), 'rni', 'rni_2') merged['average_rate'] = average_rate(target=merged[target], varying=merged[varying]) return merged
import pandas from til_base_model.config import Config from liam2.simulation import Simulation path_model = os.path.join( pkg_resources.get_distribution('Til-BaseModel').location, 'til_base_model', ) import openfisca_france_data TaxBenefitSystem = openfisca_france_data.init_country() def dump(simulation, file_path = None, overwrite = False): assert os.path.isabs(file_path) assert file_path.endswith('.h5') if not overwrite: assert not os.path.exists(file_path), "Cannot overwrite on already existing file {}".format( file_path) store = pandas.HDFStore(file_path) tax_benefit_system = simulation.tax_benefit_system for key_plural, entity_class in tax_benefit_system.entity_class_by_key_plural.iteritems(): for variable in entity_class.column_by_name: try: simulation.calculate(variable)