コード例 #1
0
ファイル: test_AccountingCohort.py プロジェクト: jsantoul/ga
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
コード例 #2
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
コード例 #3
0
ファイル: test_cohorts.py プロジェクト: jsantoul/ga
def test_filter_value():
    """
    Testing the method to filter data from a given cohort
    """
    #Generate a testing cohort with 5% population and economy growth
    n = 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)
    cohort._fill(profile)
    r = 0.0
    g = 0.05
    column = None
    cohort.proj_tax(g, r, column, method='per_capita')
    #Testing restrictions
    cohort_filtered = cohort.filter_value(age=list(range(0, 100, 1)),
                                          year=list(range(2001, 2060, 5)),
                                          typ='tax')
    count = 2001
    while count <= 2060:
        assert abs(
            cohort_filtered.get_value((0, 1, count), 'tax') +
            (1 + g)**(count - 2001)) == 0.0
        count += 5
コード例 #4
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
コード例 #5
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
コード例 #6
0
ファイル: test_DataCohort.py プロジェクト: jsantoul/ga
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
コード例 #7
0
ファイル: test_DataCohort.py プロジェクト: jsantoul/ga
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
コード例 #8
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
コード例 #9
0
def test_filter_value():
    """
    Testing the method to filter data from a given cohort
    """
    # Generate a testing cohort with 5% population and economy growth
    n = 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)
    cohort._fill(profile)
    r = 0.0
    g = 0.05
    column = None
    cohort.proj_tax(g, r, column, method="per_capita")
    # Testing restrictions
    cohort_filtered = cohort.filter_value(age=list(range(0, 100, 1)), year=list(range(2001, 2060, 5)), typ="tax")
    count = 2001
    while count <= 2060:
        assert abs(cohort_filtered.get_value((0, 1, count), "tax") + (1 + g) ** (count - 2001)) == 0.0
        count += 5