Computing distribution

Forums Questions on specific programs Computing distribution

This topic contains 2 replies, has 2 voices, and was last updated by Umesh Ghimire May 16, 2020 at 7:19 am.

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #1828

    Umesh Ghimire
    User

    Hello!
    In models with mortality/survival probability (for example, program: prog10_2 ), while computing distribution in the get_distribution() subroutine, should we not account for mortality in the distribution (the declining cohort share of the successive ages)? For example, I have seen some papers do the following:
    phi(ij, ial, ip, is_p) = phi(ij, ial, ip, is_p) +sp(ij-1)* pi(is, is_p)*varphi*phi(ij-1, ia, ip, is)/(1d0+n_p),
    where sp(ij) is the survival probability to age ij and n_p is the population growth rate

    instead of what is written in prog10_2’s subroutine for distribution:
    phi(ij, ial, ip, is_p) = phi(ij, ial, ip, is_p) + pi(is, is_p)*varphi*phi(ij-1, ia, ip, is).

    Or am I missing something?
    Thanks for your response!
    Umesh

    #1829

    Maurice Hofmann
    User

    Hi Umesh,

    thank you for this great question. I think the right way to compute the distribution over the state-space always depends on what you are actually interested in.

    In chapter 10 the focus is on the decisions of households over the lifecycle and we are particularly interested in cohort averages. Since survival probabilities are not endogenous in these models (i.e. no feedback of the household’s decisions on survival probabilities), there is no need to account for them in get_distribution(). Here, survival probabilities are only scaling factors that affect the relative cohort sizes, but have no impact on the composition of cohorts.

    To verify that this is right, you could alternatively account for the survival probabilities in get_distribution() and then compute the cohort average in aggregation() by dividing through the cohort size at each age (see below). You would obtain exactly the same solution.

    ! determines the invariant distribution of households
    subroutine get_distribution()
    
        ...
    
        phi(ij, ial, ip, is_p) = phi(ij, ial, ip, is_p) + &
                                 psi(ij)*pi(is, is_p)*varphi*phi(ij-1, ia, ip, is)
        phi(ij, iar, ip, is_p) = phi(ij, iar, ip, is_p) + &
                                 psi(ij)*pi(is, is_p)*(1d0-varphi)*phi(ij-1, ia, ip, is)
    
        ...
    
    end subroutine
    
    ! subroutine for calculating quantities
    subroutine aggregation()
    
        ...
    
        ! compute cohort size
        m_coh(:) = 0d0
        do ij = 1, JJ
            do ia = 0, NA
                do ip = 1, NP
                    do is = 1, NS
                        m_coh(ij) = m_coh(ij) + phi(ij, ia, ip, is)
                    enddo
                enddo
            enddo
        enddo
    
        ...
        
        do ij = 1, JJ
            do ia = 0, NA
                do ip = 1, NP
                    do is = 1, NS
                        c_coh(ij) = c_coh(ij) + c(ij, ia, ip, is)* &
                                                phi(ij, ia, ip, is)/m_coh(ij)
                        y_coh(ij) = y_coh(ij) + eff(ij)*theta(ip)*eta(is)* &
                                                l(ij, ia, ip, is)* &
                                                phi(ij, ia, ip, is)/m_coh(ij)
                        l_coh(ij) = l_coh(ij) + l(ij, ia, ip, is)* &
                                                phi(ij, ia, ip, is)/m_coh(ij)
                        h_coh(ij) = h_coh(ij) + eff(ij)*theta(ip)*eta(is)* &
                                                phi(ij, ia, ip, is)/m_coh(ij)
                        a_coh(ij) = a_coh(ij) + a(ia)*phi(ij, ia, ip, is)/m_coh(ij)
                        v_coh(ij) = v_coh(ij) + V(ij, ia, ip, is)* &
                                                phi(ij, ia, ip, is)/m_coh(ij)
                    enddo
                enddo
            enddo
        enddo
    
        ...
    
    end subroutine

    In an OLG set-up, the story is slightly different. There, we need to compute macroeconomic aggregates, which are normalized to the youngest cohort alive of the respective period. In this case, it could actually be more convenient to account directly for the survival probabilities (and population growth) in get_distribution().

    But even then, you could set up the distribution as in chapter 10 and obtain the aggregated quantities by a weighted sum over the cohort averages. The weights would be the size of the respective cohorts relative to the size of the youngest cohort alive in the period. Again, this would only work in a set-up where mortality (and population growth) are not endogenous.

    • This reply was modified 1 year, 8 months ago by Maurice Hofmann.
    #1831

    Umesh Ghimire
    User

    Thanks Maurice!

Viewing 3 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic.