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
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
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
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
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
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