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)
Beispiel #7
0
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