5.20. Step 20: Human Capital Index

5.20.1. Model Description

At this step we add various modules for the calculation of human capital and the World Bank Human Capital Index (HCI).

  • Stunting.mpp implements stunting
  • Preschool.mpp implements pre-school experience
  • HumanCapitalIndex.mpp is the module implementing the calculation of human capital and the human capital index

5.20.2. The Stunting.mpp Module

Stunting is the impaired growth and development that children experience from poor nutrition, repeated infection, and inadequate psychosocial stimulation. Children are defined as stunted if their height-for-age is more than two standard deviations below the WHO Child Growth Standards median. Stunting in early life has adverse functional consequences on the child. Some of those consequences include poor cognition and educational performance, low adult wages, lost productivity and, when accompanied by excessive weight gain later in childhood, an increased risk of nutrition-related chronic diseases in adult life. (WHO)

This module implements stunting as an individual level ‘fate’ decided at birth based on sex, region, and mother’s education. Stunting is modeled for babies born within the country in simulated time.

In the current application, stunting has no time dimension thus rates are assumed to stay unchanged for given sex, region, and mother’s education. All changes in aggregate stunting rates thus result from composition effects. Accordingly, the module has only one parameter: the proportion of children affected by stunting by sex, region, and mother’s education.



////////////////////////////////////////////////////////////////////////////////////////////////////
// Parameters
////////////////////////////////////////////////////////////////////////////////////////////////////

parameters
{
    //EN Stunting by mother's education, region and sex
    double ProportionStunting[SEX][REGION_NAT][EDUC_ONE_LEVEL];
};

parameter_group PG_Stunting                         //EN Stunting
{
    ProportionStunting
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Person actor
////////////////////////////////////////////////////////////////////////////////////////////////////

actor Person
{
    logical is_stunted = { FALSE };                 //EN Person with impared growth (stunting) age<5
    logical is_not_stunted = (is_stunted) ? FALSE : TRUE;  //EN Person with un-impared growth (stunting) age<5

    void    DecideStuntingFate();                   //EN Decide stunting fate at birth
    hook    DecideStuntingFate, Start;              //EN Call at Start()
    REGION_INT region_birth = aggregate(district_birth, REGION_INT);
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Implementation
////////////////////////////////////////////////////////////////////////////////////////////////////

void Person::DecideStuntingFate()
{
    if (in_hci_sample)
    {
        if (RandUniform(48) < ProportionStunting[sex][region_nat][educ_mother])
        {
            is_stunted = TRUE;
        }
    }
};

5.20.3. The PreSchool.mpp Module

The pre-school module is a simple module implementing up to 2 years of pre-school experience. This module is an add-on developed when introducing the calculations of the Human Capital Index (HCI). It is assumed, that all children attending pre-school enter primary education. Pre-school experience is decided at school entry thus the career itself is not modeled. The module has one single parameter table containing - by sex and region - the probability to have attended pre-school for at least one year, and the probability that the pre-school experience was two years.



////////////////////////////////////////////////////////////////////////////////////////////////////
// Dimensions
////////////////////////////////////////////////////////////////////////////////////////////////////

classification PRE_SCHOOL_PARA      //EN Preschool
{
    PLP_ANY,                        //EN Proportion of primary entrants ever attending pre-school
    PLS_TWO                         //EN Proportion of pre-school attendants attending 2 years
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Parameters
////////////////////////////////////////////////////////////////////////////////////////////////////

parameters
{
    double PreSchoolAttendance[SEX][REGION_NAT][PRE_SCHOOL_PARA];   //EN Pre-School Attendance
};

parameter_group PG_PreSchool                                        //EN Pre-School
{
    PreSchoolAttendance
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Actor States and Functions
////////////////////////////////////////////////////////////////////////////////////////////////////

actor Person
{
    int years_preschool = { 0 };                                    //EN Years in pre-school

    logical preschool_is_decided = { FALSE };                       //EN Pre-school fate is decided
    event timeSetPreschoolYearsEvent, SetPreschoolYearsEvent;       //EN Decide pre-school
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Implementation
////////////////////////////////////////////////////////////////////////////////////////////////////

TIME Person::timeSetPreschoolYearsEvent()
{
    if (!preschool_is_decided && in_hci_sample && educ_one_grade_attended == 1) return WAIT(0);
    else return TIME_INFINITE;
}

void Person::SetPreschoolYearsEvent()
{
    if (RandUniform(49) < PreSchoolAttendance[sex][region_nat][PLP_ANY])
    {
        years_preschool++;
        if (RandUniform(50) < PreSchoolAttendance[sex][region_nat][PLS_TWO]) years_preschool++;
    }
    preschool_is_decided = TRUE;
}

5.20.4. The HumanCapitalIndex.mpp Module

This module calculates the components of the Human Capital Index and individual human capital. The Human Capital Index (HCI) measures the human capital that a child born today can expect to attain by age 18, given the risks to poor health and poor education that prevail in the country where she lives. The HCI follows the trajectory from birth to adulthood of a child born today.

Components:

  • Child survival up to the 5th birthday
  • Years of schooling age 4-18 (max 14 years) including up to two years of pre-school
  • Quality of education to quality-adjust the years of schooling. This measure is based on test scores
  • Stunting in the first 5 years of life: the impaired growth and development that children experience from poor nutrition, repeated infection, and inadequate psychosocial stimulation. Children are defined as stunted if their height-for-age is more than two standard deviations below the WHO Child Growth Standards median.
  • Adult survival from 15 to 60.

Formula:

On the population level, the HCI is calculated by multiplying up its components in the following form.

HCI  = [Child Survival to 5th birthday]
         * exp(0.08 * ([average years of schooling] * [average quality of schooling] - 14))
         * exp((0.65 * ([adult_survival] - 1.0) + 0.35 * ([proportion children not stunted] - 1.0)) / 2.0);

The individual human capital can be calculated from the individual life experience of each actor at the moment of her death. Note that, if the components of the human capital are correlated (which is the case as e.g. stunting affects school success) the average of the individual human capital will be different from the aggregate HCI calculated from the average values of the components. At the individual level, the individual human capital IHC is:

IHC  = [survived first five years of life y/n]
         * exp(0.08 * ([individual years of schooling] * [individual quality of schooling] - 14))
         * exp((0.65 * ([survived to age 60] - 1.0) + 0.35 * ([not stunted age 0-4 y/n] - 1.0)) / 2.0);

This module implements the calculation of some of the components of the index as well as the index itself. Most components are addressed in dedicated separate modules or can be derived from recorded life course information stemming from other modules, e.g. schooling and survival. The only component implemented here is the quality of schooling: we use a simple normal distribution with parameters for the average and the standard deviation.

In the core of this module is the function CalculateHCIVariables() which is called at the mortality event. Note that for proper calculation, individuals have to life their while life in the country, thus emigration should be switched off for the analysis of the HCI.



////////////////////////////////////////////////////////////////////////////////////////////////////
// Types
////////////////////////////////////////////////////////////////////////////////////////////////////

classification SCHOOL_QUALITY_PARA          //EN School Quality Parameters
{
    SQP_AV,                                 //EN Average
    SQP_SD                                  //EN Standard Deviation
};

classification HCI_COEF                     //EN Human Capital Index Coefficients
{
    HCI_EDUC,                               //EN Return to education
    HCI_ASR,                                //EN Adult survival return
    HCI_STUNT                               //EN Return of not stunted
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Parameters
////////////////////////////////////////////////////////////////////////////////////////////////////

parameters
{
    double SchoolQuality[REGION_NAT][SCHOOL_QUALITY_PARA];      //EN Quality of schooling
    double HCICoefficients[HCI_COEF];                           //EN HCI Coefficients
};

parameter_group PG_HumanCapitalIndex        //EN Human Capital Index
{
    ProportionStunting,
    PreSchoolAttendance,
    SchoolQuality,
    HCICoefficients
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Actor declarations
////////////////////////////////////////////////////////////////////////////////////////////////////

actor Person
{
    //EN In population for hci calculation
    logical in_hci_sample = (person_type == PT_CHILD) ? TRUE : FALSE;

    //EN Total years of schooling
    int years_of_schooling = years_preschool + educ_one_grade_passed + educ_two_grade_passed;

    //EN Quality of schooling
    double quality_of_schooling = { 0.0 };      //EN Quality of schooling

    //EN Quality adjusted schooling
    double quality_adjusted_schooling = { 0.0 };

    //EN Calculate HCI variables
    void CalculateHCIVariables(); hook CalculateHCIVariables, MortalityEvent;

    //EN Survived early years
    logical survived_early_years = (integer_age >= 5) ? TRUE : FALSE;

    //EN Adult survival (proportion of age 18-60 alive)
    double adult_survival = { 0.0 };

    //EN Enters adulthood
    logical is_adult = (integer_age >= 15) ? TRUE : FALSE;

    //EN Individual HCI
    double ind_hci = { 0.0 };
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Implementation
////////////////////////////////////////////////////////////////////////////////////////////////////

void Person::CalculateHCIVariables()
{
    if (in_hci_sample)
    {
        // Quality of schooling
        double dQ = SchoolQuality[region_birth][SQP_AV]
            + RandNormal(51) * SchoolQuality[region_birth][SQP_SD];
        if (dQ > 0.0 && age >= 5) quality_of_schooling = dQ;

        // adult survival
        //double dA = age; if (dA > 60.0) dA = 60.0;
        //if (integer_age >= 15) adult_survival = (dA - 15.0) / 45.0;
        if (integer_age >= 60) adult_survival = 1; else adult_survival = 0.0;

        // individual hci
        ind_hci = survived_early_years
            * exp(HCICoefficients[HCI_EDUC] * (years_of_schooling * quality_of_schooling - 14.0))
            * exp((HCICoefficients[HCI_ASR] * (adult_survival - 1.0) + HCICoefficients[HCI_STUNT] * (is_not_stunted - 1.0)) / 2.0);
    }
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Tables
////////////////////////////////////////////////////////////////////////////////////////////////////

table_group TG_HCI             //EN Human Capital Index
{
    TabStuntingByYob,
    TabHCI
};

table Person TabStuntingByYob       //EN Stunting
[in_projected_time && in_hci_sample && year_of_birth >= MIN(SIM_YEAR_RANGE)]
{
    sex + *
    {
        //EN Stunting rate decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, is_stunted) / transitions(is_alive, TRUE, FALSE)
    }
    *tab_sim_yob
    * aggregate(region_birth, REGION_NAT) +              //EN Region of birth
};

table Person TabHCI       //EN HCI
[in_projected_time && in_hci_sample && year_of_birth >= MIN(SIM_YEAR_RANGE)]
{
    sex + *
    aggregate(region_birth, REGION_NAT)+ *              //EN Region of birth

    {
        //EN Stunting rate decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, is_stunted) / transitions(is_alive, TRUE, FALSE),

        //EN Child survival rate decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, survived_early_years) / transitions(is_alive, TRUE, FALSE),

        //EN Adult survival rate 15-60 decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, adult_survival) / transitions(integer_age, 14, 15),

        //EN Average quality of schooling decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, quality_of_schooling) / transitions(survived_early_years, FALSE,TRUE),

        //EN Average years of schooling decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, years_of_schooling) / transitions(survived_early_years, FALSE,TRUE),

        //EN Average individual level HCI decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, ind_hci) / transitions(is_alive, TRUE, FALSE)
    }
    * tab_sim_yob
};

table Person TabHCIDistrict       //EN HCI by district
[in_projected_time && in_hci_sample && year_of_birth >= MIN(SIM_YEAR_RANGE)]
{
    sex + *
    aggregate(district_birth, DISTRICT_NAT)+ *              //EN District of birth

    {
        //EN Stunting rate decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, is_stunted) / transitions(is_alive, TRUE, FALSE),

        //EN Child survival rate decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, survived_early_years) / transitions(is_alive, TRUE, FALSE),

        //EN Adult survival rate 15-60 decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, adult_survival) / transitions(integer_age, 14, 15),

        //EN Average quality of schooling decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, quality_of_schooling) / transitions(survived_early_years, FALSE,TRUE),

        //EN Average years of schooling decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, years_of_schooling) / transitions(survived_early_years, FALSE,TRUE),

        //EN Average individual level HCI decimals=4
        value_at_transitions(is_alive, TRUE, FALSE, ind_hci) / transitions(is_alive, TRUE, FALSE)
    }
    * tab_sim_yob
};