Пример #1
0
def create_neutral_profiles_cohort(population):
    """
    Utility function which generates a DataCohort with population and transfers.
    No projection is needed, the dataframe is delivered without "hole"
    
    Parameters
    ----------
    population : Int
                 The value of the constant population at each period and for each age
    
    Returns
    -------
    cohort : a cohort dataframe such that :
            Anybody below 50 years old (excluded) pays -1
            Anybody between 50 and 99 years old (included) recieve 1
            Anybody over 100 years old (included) pays 0
            As such, the total net transfer is zero for newborns
    """
    n = 0
    population_dataframe = create_testing_population_dataframe(year_start=2001, year_end=2201, rate=n, population=population)
#     print population.get_value((0,0,2011), 'pop')
    profile = create_constant_profiles_dataframe(population_dataframe, tax=-1)
    g = 0.0
    r = 0.0 
    cohort = DataCohorts(population_dataframe)
    cohort.fill(profile)
    cohort.loc[cohort.index.get_level_values(0) >= 0,'tax'] = -1
    cohort.loc[cohort.index.get_level_values(0) >= 50,'tax'] = 1
    cohort.loc[cohort.index.get_level_values(0) == 100,'tax'] = 0
    typ = 'tax'
    cohort.proj_tax(g, r, typ,  method = 'per_capita')

    return cohort
Пример #2
0
def test_fill_cohort():   
    population = create_empty_population_dataframe(2001, 2061)
    profiles = create_constant_profiles_dataframe(population, tax = -1, subsidies = 0.5)
    cohorts_test = DataCohorts(data = population, columns = ['pop'])
    cohorts_test.fill(profiles, year = None)
    test_value = cohorts_test.get_value((0,0,2060), 'tax')
    assert test_value == -1
Пример #3
0
def test_generation_extraction():
    # Creating a fake cohort
    n = 0.00
    r = 0.00
    g = 0.05
    population = create_testing_population_dataframe(year_start=2001, year_end=2061, rate=n)
    profile = create_constant_profiles_dataframe(population, tax=-1, sub=0.5)
    cohort = DataCohorts(population)
    # Applying projection methods
    year_length = 199
    method = "stable"
    cohort.population_project(year_length, method=method)
    cohort.fill(profile)
    typ = None
    cohort.proj_tax(g, r, typ, method="per_capita")
    cohort = AccountingCohorts(cohort)
    cohort._types = ["tax"]

    # Extracting generations
    start = 2030
    age = 0
    generation = cohort.extract_generation(start, typ="tax", age=age)
    count = age
    while count <= 100 & start + count <= array(list(generation.index_sets["year"])).max():
        assert abs((1 + g) ** (count + (start - 2001)) + generation.get_value((count, 1, start + count), "tax")) == 0.0
        count += 1
Пример #4
0
def test_population_projection():
    # Create cohorts
    start_data = 2001
    end_data = 2061
    population = create_empty_population_dataframe(start_data, end_data)
    cohorts = DataCohorts(data = population, columns = ['pop'])

    # Complete population projection
    year_length = 100
    end_project = start_data + year_length
    method = 'exp_growth'   
    growth_rate = n = 0.05
    cohorts.population_project(year_length, method = method, growth_rate = n)
    
    year_control = 2082
    control_value = (1+n)**(year_control - end_data - 1)
    test_value = cohorts.get_value((0,0,2081), "pop")
    assert test_value == control_value
Пример #5
0
def test_tax_projection():

    population = create_empty_population_dataframe(2001, 2061)
    profile = create_constant_profiles_dataframe(population, tax = -1, sub=0.5) 
    g = 0.05
    r = 0
    cohort = DataCohorts(population)
    year_length = 200
    method = 'stable'   
    cohort.population_project(year_length, method = method)
    cohort.fill(profile)
    typ = None
    cohort.proj_tax(g, r, typ,  method = 'per_capita')
#    print cohort
    test_value = cohort.get_value((0,1,2002), 'tax')
    test_value2 = cohort.get_value((0,1,2002), 'sub')
#    print test_value, test_value2
    # TODO: I don't understand the following <- Just wanted to check if the for loop works by changing the value of typ in the test
    assert test_value2 > 0.5 and test_value < -1
Пример #6
0
def test_create_age_class():
    """
    Testing the method to regroup age classes
    """
    population = create_testing_population_dataframe(2001, 2003)
    profile = create_constant_profiles_dataframe(population, tax=1.0, sub=-0.5)

    cohort = DataCohorts(population)
    cohort.fill(profile)
    cohort2 = cohort.per_capita_generation_present_value("tax", discount_rate=0)
    print cohort2.head()
    print cohort2.tail()
    step = 5.0
    age_class = cohort2.create_age_class(step=step)
    print age_class.tail(10)
    count = 0
    while count < 100:
        assert age_class.get_value((count, 1, 2001), "tax") == 2
        count += step
Пример #7
0
def test_create_age_class():
    """
    Testing the method to regroup age classes
    """
    population = create_testing_population_dataframe(2001, 2003)
    profile = create_constant_profiles_dataframe(population, tax=1.0, sub=-0.5)

    cohort = DataCohorts(population)
    cohort.fill(profile)
    cohort2 = cohort.per_capita_generation_present_value('tax',
                                                         discount_rate=0)
    print cohort2.head()
    print cohort2.tail()
    step = 5.0
    age_class = cohort2.create_age_class(step=step)
    print age_class.tail(10)
    count = 0
    while count < 100:
        assert age_class.get_value((count, 1, 2001), 'tax') == 2
        count += step
Пример #8
0
def test_tax_projection_aggregated():
    n = 1
    population = create_testing_population_dataframe(year_start=2001, year_end=2061, rate=n)
    profile = create_constant_profiles_dataframe(population, tax=-1, sub=0.5)
    g = 0.5
    r = 0.0 
    cohort = DataCohorts(population)
    cohort.fill(profile)
    typ = None
    cohort.proj_tax(g, r, typ,  method = 'aggregate')
    test_value = cohort.get_value((0,1,2002), 'tax')
    test_value2 = cohort.get_value((0,1,2002), 'sub')
    assert test_value2 < 0.5 and test_value > -1
Пример #9
0
def create_neutral_profiles_cohort(population):
    """
    Utility function which generates a DataCohort with population and transfers.
    No projection is needed, the dataframe is delivered without "hole"
    
    Parameters
    ----------
    population : Int
                 The value of the constant population at each period and for each age
    
    Returns
    -------
    cohort : a cohort dataframe such that :
            Anybody below 50 years old (excluded) pays -1
            Anybody between 50 and 99 years old (included) recieve 1
            Anybody over 100 years old (included) pays 0
            As such, the total net transfer is zero for newborns
    """
    n = 0
    population_dataframe = create_testing_population_dataframe(
        year_start=2001, year_end=2201, rate=n, population=population)
    #     print population.get_value((0,0,2011), 'pop')
    profile = create_constant_profiles_dataframe(population_dataframe, tax=-1)
    g = 0.0
    r = 0.0
    cohort = DataCohorts(population_dataframe)
    cohort.fill(profile)
    cohort.loc[cohort.index.get_level_values(0) >= 0, 'tax'] = -1
    cohort.loc[cohort.index.get_level_values(0) >= 50, 'tax'] = 1
    cohort.loc[cohort.index.get_level_values(0) == 100, 'tax'] = 0
    typ = 'tax'
    cohort.proj_tax(g, r, typ, method='per_capita')

    return cohort
Пример #10
0
def test_compute_net_transfers():
    population = create_empty_population_dataframe(2001, 2061)
    profiles = create_constant_profiles_dataframe(population, tax = 1, subsidies = 0.5)
    tax = ['tax']
    subsidy = ['subsidies']
    cohorts_test = DataCohorts(data = population, columns = ['pop'])
    cohorts_test.fill(profiles, year = None)
    cohorts_test.compute_net_transfers(taxes_list = tax, payments_list = subsidy)
    test_value = cohorts_test.get_value((0,0,2060), 'net_transfers')
    assert test_value == 0.5
    
    pass
Пример #11
0
def test_generation_extraction():
    # Creating a fake cohort
    n = 0.00
    r = 0.00
    g = 0.05
    population = create_testing_population_dataframe(year_start=2001,
                                                     year_end=2061,
                                                     rate=n)
    profile = create_constant_profiles_dataframe(population, tax=-1, sub=0.5)
    cohort = DataCohorts(population)
    # Applying projection methods
    year_length = 199
    method = 'stable'
    cohort.population_project(year_length, method=method)
    cohort.fill(profile)
    typ = None
    cohort.proj_tax(g, r, typ, method='per_capita')
    cohort = AccountingCohorts(cohort)
    cohort._types = ['tax']

    #Extracting generations
    start = 2030
    age = 0
    generation = cohort.extract_generation(start, typ='tax', age=age)
    count = age
    while count <= 100 & start + count <= array(
            list(generation.index_sets['year'])).max():
        assert abs((1 + g)**(count + (start - 2001)) +
                   generation.get_value((count, 1,
                                         start + count), 'tax')) == 0.0
        count += 1