# 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?
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.