Exemplo n.º 1
0
def test_wg(input_data, year, column):
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)
    columns = [
        "elterngeld_m",
        "arbeitsl_geld_m",
        "unterhaltsvors_m",
        "ertragsanteil",
        "brutto_eink_1",
        "brutto_eink_4",
        "brutto_eink_5",
        "brutto_eink_6",
        "ges_krankenv_beitr_m",
        "rentenv_beitr_m",
        "kindergeld_anspruch",
    ]
    policy_functions["eink_st_tu"] = eink_st_m_tu_from_data

    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=column,
        columns_overriding_functions=columns,
    )
    assert_series_equal(result[column], year_data[column])
Exemplo n.º 2
0
def test_kiz(
    input_data, year, column,
):
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)
    columns = [
        "alleinerziehenden_mehrbedarf_hh",
        "arbeitsl_geld_2_eink_hh",
        "kindergeld_m_hh",
        "unterhaltsvors_m",
        "_arbeitsl_geld_2_brutto_eink_hh",
        "kindergeld_anspruch",
    ]

    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=column,
        columns_overriding_functions=columns,
    )

    assert_series_equal(
        result[column], year_data[column], check_dtype=False,
    )
Exemplo n.º 3
0
def test_increasing_hh_size(input_data_households, year, mietstufe):
    column = "wohngeld_basis_hh"
    policy_params, policy_functions = set_up_policy_environment(date=year)
    columns = [
        "elterngeld_m",
        "arbeitsl_geld_m",
        "unterhaltsvors_m",
        "ertragsanteil",
        "brutto_eink_1",
        "brutto_eink_4",
        "brutto_eink_5",
        "eink_st_tu",
        "brutto_eink_6",
        "ges_krankenv_beitr_m",
        "rentenv_beitr_m",
        "kindergeld_anspruch",
    ]
    input_data_households["mietstufe"] = mietstufe

    result = compute_taxes_and_transfers(
        data=input_data_households,
        params=policy_params,
        functions=policy_functions,
        targets=column,
        columns_overriding_functions=columns,
    )
    assert result[column].is_monotonic
Exemplo n.º 4
0
def test_vorsorge(
    input_data,
    year,
    target,
):
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[IN_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)
    columns_overriding_functions = [
        "ges_krankenv_beitr_m",
        "arbeitsl_v_beitr_m",
        "pflegev_beitr_m",
        "rentenv_beitr_m",
    ]

    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=target,
        columns_overriding_functions=columns_overriding_functions,
    )

    # TODO: Here our test values are off by about 5 euro. We should revisit. See #217.
    assert_series_equal(result[target],
                        year_data[target],
                        atol=1e-1,
                        rtol=1,
                        check_dtype=False)
Exemplo n.º 5
0
def test_tax_sched(
    input_data, year, column,
):
    policy_params, policy_functions = set_up_policy_environment(date=year)

    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()

    df["_zu_verst_eink_kein_kinderfreib_tu"] = (
        df["_zu_verst_eink_kein_kinderfreib"].groupby(df["tu_id"]).transform("sum")
    )

    df["_zu_verst_eink_kinderfreib_tu"] = (
        df["_zu_verst_eink_kinderfreib"].groupby(df["tu_id"]).transform("sum")
    )

    columns = [
        "_zu_verst_eink_kein_kinderfreib_tu",
        "_zu_verst_eink_kinderfreib_tu",
        "brutto_eink_5",
    ]

    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=column,
        columns_overriding_functions=columns,
    )

    assert_series_equal(
        result[column], year_data[column], check_dtype=False, check_less_precise=2,
    )
def test_soc_ins_contrib(input_data, year, target):
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)

    results = compute_taxes_and_transfers(data=df,
                                          params=policy_params,
                                          functions=policy_functions,
                                          targets=target)

    pd.testing.assert_series_equal(results[target], year_data[target])
Exemplo n.º 7
0
def test_tax_transfer(
    input_data, year,
):
    year_data = input_data[input_data["jahr"] == year].copy()
    df = year_data[REQUIRED_INPUTS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)
    # params["renten_daten"] = renten_daten

    compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=DEFAULT_TARGETS,
    )
Exemplo n.º 8
0
def test_kindergeld(input_data, year, target):

    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)

    calc_result = compute_taxes_and_transfers(data=df,
                                              params=policy_params,
                                              functions=policy_functions,
                                              targets=target)

    assert_series_equal(calc_result[target],
                        year_data[target],
                        check_dtype=False)
Exemplo n.º 9
0
def test_kindergeld(input_data, year, target):

    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)

    user_cols = ["zu_verst_eink_kein_kinderfreib_tu"]
    calc_result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=target,
        columns_overriding_functions=user_cols,
    )
    assert_series_equal(calc_result[target], year_data[target], check_dtype=False)
Exemplo n.º 10
0
def test_tax_transfer(
    input_data,
    year,
):
    year_data = input_data[input_data["jahr"] == year].copy()
    df = year_data[list(STANDARD_DATA_TYPES.keys())].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)
    # params["renten_daten"] = renten_daten

    compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=DEFAULT_TARGETS,
    )
def test_uhv(input_data, year, column, month):
    year_data = input_data[(input_data["jahr"] == year)
                           & (input_data["monat"] == month)]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(
        date=f"{year}-{month}")

    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=column,
        columns_overriding_functions=["arbeitsl_geld_m"],
    )

    assert_series_equal(result[column], year_data[column], check_dtype=False)
def test_zve(
    input_data,
    year,
    target,
):
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)

    columns_overriding_functions = [
        "ges_krankenv_beitr_m",
        "arbeitsl_v_beitr_m",
        "pflegev_beitr_m",
        "rentenv_beitr_m",
    ]
    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=target,
        columns_overriding_functions=columns_overriding_functions,
    )

    if target == "kindergeld_tu":
        expected_result = sum_test_data_tu("kindergeld", year_data)
    elif target == "zu_verst_eink_kein_kinderfreib_tu":
        expected_result = sum_test_data_tu("zu_verst_eink_kein_kinderfreib",
                                           year_data)
    elif target == "zu_verst_eink_kinderfreib_tu":
        expected_result = sum_test_data_tu("zu_verst_eink_kinderfreib",
                                           year_data)
    elif target == "kinderfreib_tu":
        expected_result = sum_test_data_tu("kinderfreib", year_data)
    else:
        expected_result = year_data[target]

    # TODO: There are large differences for the 2018 test. See #217.
    assert_series_equal(
        result[target],
        expected_result,
        check_dtype=False,
        atol=1e-1,
        rtol=1,
    )
Exemplo n.º 13
0
def test_data_types(
    input_data,
    year,
):
    imports = _convert_paths_to_import_strings(PATHS_TO_INTERNAL_FUNCTIONS)
    functions = _load_functions(imports)

    # Load all time dependent functions
    for year in range(1990, 2021):
        year_functions = load_reforms_for_date(
            datetime.date(year=year, month=1, day=1))

    year_data = input_data[input_data["jahr"] == year].copy()
    df = year_data[list(STANDARD_DATA_TYPES.keys())].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)
    # params["renten_daten"] = renten_daten

    data = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=DEFAULT_TARGETS,
        debug=True,
    )
    for column_name, series in data.items():
        if series.empty:
            pass
        else:
            if column_name in STANDARD_DATA_TYPES:
                internal_type = STANDARD_DATA_TYPES[column_name]
            elif column_name in functions:
                internal_type = functions[column_name].__annotations__[
                    "return"]
            elif column_name in year_functions:
                internal_type = year_functions[column_name].__annotations__[
                    "return"]
            else:
                raise ValueError("Column name unknown.")
            if not check_if_series_has_internal_type(series, internal_type):
                raise AssertionError(
                    f"{column_name} has datatype {series.dtype}, but should have {internal_type}."
                )
def test_favorability_check(input_data, year, target):
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)
    columns_overriding_functions = [
        "st_kein_kind_freib_tu",
        "st_kind_freib_tu",
        "abgelt_st_tu",
        "kindergeld_m_basis",
        "kindergeld_m_basis_tu",
    ]

    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=target,
        columns_overriding_functions=columns_overriding_functions,
    )

    assert_series_equal(result[target], year_data[target], check_dtype=False)
def test_eltgeld(
    year,
    column,
    input_data,
):
    """Run tests to validate elterngeld.

    hh_id 7 in test cases is for the calculator on
    https://familienportal.de/familienportal/meta/egr. The result of the calculator is
    10 Euro off the result from gettsim. We need to discuss if we should adapt the
    calculation of the proxy wage of last year or anything else.

    """
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)
    df["soli_st_tu"] = df["soli_st_m"].groupby(
        df["tu_id"]).transform("sum") * 12
    df["eink_st_tu"] = df["eink_st_m"].groupby(
        df["tu_id"]).transform("sum") * 12

    columns_overriding_functions = [
        "soli_st_tu", "sozialv_beitr_m", "eink_st_tu"
    ]

    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=column,
        columns_overriding_functions=columns_overriding_functions,
    )

    assert_series_equal(
        result[column],
        year_data[column],
        check_dtype=False,
        atol=1e-2,
        rtol=1,
    )
Exemplo n.º 16
0
def test_soli_st(
    input_data,
    year,
):
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()

    policy_params, policy_functions = set_up_policy_environment(date=year)

    user_cols = ["_st_kind_freib_tu", "abgelt_st_tu"]
    results = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets="soli_st_tu",
        columns_overriding_functions=user_cols,
    )
    assert_series_equal(
        results["soli_st_tu"],
        year_data["soli_st_tu"],
        check_dtype=False,
    )
Exemplo n.º 17
0
def test_benefit_checks(input_data, year, column):
    """Test the benefit checks."""
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    columns = [
        "kinderzuschlag_m_vorläufig",
        "wohngeld_basis_hh",
        "regelbedarf_m_hh",
        "kindergeld_m_hh",
        "unterhaltsvors_m_hh",
        "arbeitsl_geld_2_eink_hh",
    ]

    policy_params, policy_functions = set_up_policy_environment(date=year)
    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=column,
        columns_overriding_functions=columns,
    )
    assert_series_equal(result[column], year_data[column], check_dtype=False)
Exemplo n.º 18
0
def test_ui(
    input_data,
    year,
):
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)

    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets="arbeitsl_geld_m",
    )

    # to prevent errors from rounding, allow deviations after the 3rd digit.
    assert_series_equal(
        result["arbeitsl_geld_m"],
        year_data["arbeitsl_geld_m"],
        check_less_precise=3,
        check_dtype=False,
    )
Exemplo n.º 19
0
def test_alg2(input_data, year, column):
    year_data = input_data[input_data["jahr"] == year]
    df = year_data[INPUT_COLS].copy()
    policy_params, policy_functions = set_up_policy_environment(date=year)

    columns = [
        "arbeitsl_geld_m",
        "soli_st_tu",
        "kindergeld_m_hh",
        "unterhaltsvors_m",
        "elterngeld_m",
        "eink_st_tu",
        "sozialv_beitr_m",
    ]

    result = compute_taxes_and_transfers(
        data=df,
        params=policy_params,
        functions=policy_functions,
        targets=column,
        columns_overriding_functions=columns,
    )
    assert_series_equal(result[column], year_data[column], check_dtype=False)