Home » Topics » Mortality » UNDER FIVE MORTALITY
UNDER FIVE MORTALITY [message #14265] 
Thu, 15 March 2018 01:05 
rajesh.dahima91@gmail.com
Messages: 9 Registered: March 2018

Member 


Hello Members,
I am trying to calculate Under five mortality and Infant Mortality for India (NHFS4 data).
I have used KR file and used the following codes in STATA
gen hpage= (v008b3)/12
gen timeyears=.
replace timeyears=hpage
replace timeyears=b7/12 if b5==0
gen dead= (b5==0)
ltable timeyears dead if hpage<=5, int(.5)
the underfive mortality rate calculated for India using this method is 53.1 whereas the value in NFHS4 report is 49.7 (http://rchiips.org/NFHS/NFHS4Reports/India.pdf).
Kindly tell me where am i going wrong.
Any help in this regard would be appreciated.
Thanks
RAJESH
INDIA





Re: UNDER FIVE MORTALITY [message #14634 is a reply to message #14633] 
Wed, 25 April 2018 07:52 
rajesh.dahima91@gmail.com
Messages: 9 Registered: March 2018

Member 


No i am not able to apply weights for lifetable.
ltable timeyears dead
Beg. Std.
Interval Total Deaths Lost Survival Error [95% Conf. Int.]
 
0 1 259627 10702 48295 0.9546 0.0004 0.9537 0.9554
1 2 200630 641 49284 0.9511 0.0004 0.9502 0.9519
2 3 150705 271 49084 0.9490 0.0005 0.9481 0.9499
3 4 101350 200 51497 0.9465 0.0005 0.9455 0.9475
4 5 49653 70 49583 0.9439 0.0006 0.9427 0.9450
 
. ltable timeyears dead [fw=weight]
may not use noninteger frequency weights
r(401);
Under five 56.1 (i.e 1  0.9439)which does not match with the National report.
RAJESH
INDIA










Re: UNDER FIVE MORTALITY [message #15068 is a reply to message #15067] 
Tue, 29 May 2018 19:20 
TrevorDHS
Messages: 783 Registered: January 2013

Senior Member 


Here is a fairly simplistic piece of code that follows the approach given in the Guide to DHS Statistics, and produces estimates for five fiveyear periods.
It doesn't produce standard errors or confidence intervals, but allows you to see how the calculations are done:
* Example of early childhood mortality rates calculations
* Trevor Croft, March 9, 2018
* Change directory to the data directory
cd "C:\Users\xxxx\Data"
* Open DHS dataset  births recode file
use v005 v008 b3 b5 b7 using "IABR71FL.DTA", clear
* Create variables for time period limits  need to use variables as these change from case to case
gen t1 = .
gen t2 = .
* Initialize local variable lists used later
local vlist
local vlist2
* Loop through 5year time periods
forvalues period = 0/4 {
* Calculate upper limit of time period
replace t2 = v008  60*`period'
* Calculate lower limit of time period
replace t1 = t2  60
* List age group lower limits
local agegroups 0 1 3 6 12 24 36 48 60
* Turn thse into tokens to use for the upper limits of the age groups
tokenize `agegroups'
* Loop through the age groups
foreach age of numlist `agegroups' {
* Ignore the 60+ age group  this was just to set the upper limit for the last age group  see a2
if (`age' < 60) {
* Create local for lower limit of age group  use locals as these are constants
local a1 = `age'
* Create local for upper limit of age group = the lower limit of the next age group
local a2 = `2'
* Cohort A numerator
gen numA`age'_`period' = ((`a1' <= b7 & b7 < `a2') & (t1  `a2' <= b3 & b3 < t1  `a1'))
* Cohort B numerator
gen numB`age'_`period' = ((`a1' <= b7 & b7 < `a2') & (t1  `a1' <= b3 & b3 < t2  `a2'))
* Cohort C numerator
gen numC`age'_`period' = ((`a1' <= b7 & b7 < `a2') & (t2  `a2' <= b3 & b3 < t2  `a1'))
* Cohort A denominator
gen denA`age'_`period' = ( (b5 == 1  `a1' <= b7) & (t1  `a2' <= b3 & b3 < t1  `a1'))
* Cohort B denominator
gen denB`age'_`period' = ( (b5 == 1  `a1' <= b7) & (t1  `a1' <= b3 & b3 < t2  `a2'))
* Cohort C denominator
gen denC`age'_`period' = ( (b5 == 1  `a1' <= b7) & (t2  `a2' <= b3 & b3 < t2  `a1'))
* Count half for deaths for cohort C, except for the last period where all deaths are counted
local f = 0.5
if (`period' == 0) {
local f = 1
}
* Sum numerators from cohorts A, B and C for this case
gen num`age'_`period' = 0.5*numA`age'_`period' + numB`age'_`period' + numC`age'_`period'*`f'
* Sum denominators from chorts A, B and C for this case
gen den`age'_`period' = 0.5*denA`age'_`period' + denB`age'_`period' + denC`age'_`period'*0.5
* Generate list of numerator and denominator variables for period and age for collapse command below
local vlist `vlist' num`age'_`period' den`age'_`period'
* Similarly generate list of numerator and denominator variables for period only for reshape command below
if (`period' == 0) {
local vlist2 `vlist2' num`age'_ den`age'_
}
}
* Shift the token list to the next age group
mac shift
}
}
* Sum all numerators and denominators  weighted sum
collapse (sum) `vlist' [pw=v005/1000000]
* Add a variable to act as ID for the reshape
gen x = 0
* Reshape long by age group
reshape long `vlist2', i(x) j(period)
* Drop the underscore (_) on the end of variable names
rename *_ *
* Reshape now for periods
reshape long num den, i(period) j(a1)
* Drop the x variable as we no longer need it
drop x
* Generate the upper bounds of the age groups
gen a2 = a1[_n+1]
replace a2 = 60 if a1 == 48
* Calculate the age group mortality probabilities
gen death = num / den
* Calculate the age group survival probabilities
gen surv = 1  death
* Generate product of survival probabilities:
gen prodsurv = surv if a1 == 0
replace prodsurv = surv * prodsurv[_n1] if a1 > 0
* Generate product of survival probabilities for child mortality rate, starting at 12 months
gen prodsurv2 = surv if a1 == 12
replace prodsurv2 = surv * prodsurv2[_n1] if a1 > 12
* Neonatal mortality rate
gen nmr = 1000*(1prodsurv) if a2 == 1
* Postneonatal mortality rate (calculated later)
gen pnmr = .
* Infant mortality rate
gen imr = 1000*(1prodsurv) if a2 == 12
* Child mortality rate
gen cmr = 1000*(1prodsurv2) if a2 == 60
* Underfive mortality rate
gen u5mr = 1000*(1prodsurv) if a2 == 60
* Capture just the rates
collapse (min) nmr pnmr imr cmr u5mr, by(period)
* Postneonatal mortality rate = IMR  NMR
replace pnmr = imr  nmr
* Now see the results
list And the results basically match the syncmrates program
++
 period nmr pnmr imr cmr u5mr 

1.  0 29.46365 11.2654 40.72905 9.390652 49.73727 
2.  1 31.49295 12.24667 43.73962 11.31612 54.56078 
3.  2 33.03296 13.47327 46.50623 12.88736 58.79426 
4.  3 36.41945 15.01405 51.4335 16.21401 66.81353 
5.  4 40.38089 18.37582 58.75671 19.31465 76.93649 
++






Re: UNDER FIVE MORTALITY [message #15247 is a reply to message #15068] 
Tue, 19 June 2018 11:33 
krishn28_ssh
Messages: 5 Registered: June 2018 Location: India

Member 


Dear Trevor,
Thank you for details stata code, but i don't to remove other variable, because i want to analysis all U5mortality indicator with caste of the household head and religions.
pls guide me how should i go ahead?
krishna
krishna







Re: UNDER FIVE MORTALITY [message #22820 is a reply to message #15068] 
Sun, 16 May 2021 07:09 
Hassen
Messages: 121 Registered: April 2018 Location: Ethiopia,Africa

Senior Member 


TrevorDHS wrote on Wed, 30 May 2018 02:20Here is a fairly simplistic piece of code that follows the approach given in the Guide to DHS Statistics, and produces estimates for five fiveyear periods.
It doesn't produce standard errors or confidence intervals, but allows you to see how the calculations are done:
* Example of early childhood mortality rates calculations
* Trevor Croft, March 9, 2018
* Change directory to the data directory
cd "C:\Users\xxxx\Data"
* Open DHS dataset  births recode file
use v005 v008 b3 b5 b7 using "IABR71FL.DTA", clear
* Create variables for time period limits  need to use variables as these change from case to case
gen t1 = .
gen t2 = .
* Initialize local variable lists used later
local vlist
local vlist2
* Loop through 5year time periods
forvalues period = 0/4 {
* Calculate upper limit of time period
replace t2 = v008  60*`period'
* Calculate lower limit of time period
replace t1 = t2  60
* List age group lower limits
local agegroups 0 1 3 6 12 24 36 48 60
* Turn thse into tokens to use for the upper limits of the age groups
tokenize `agegroups'
* Loop through the age groups
foreach age of numlist `agegroups' {
* Ignore the 60+ age group  this was just to set the upper limit for the last age group  see a2
if (`age' < 60) {
* Create local for lower limit of age group  use locals as these are constants
local a1 = `age'
* Create local for upper limit of age group = the lower limit of the next age group
local a2 = `2'
* Cohort A numerator
gen numA`age'_`period' = ((`a1' <= b7 & b7 < `a2') & (t1  `a2' <= b3 & b3 < t1  `a1'))
* Cohort B numerator
gen numB`age'_`period' = ((`a1' <= b7 & b7 < `a2') & (t1  `a1' <= b3 & b3 < t2  `a2'))
* Cohort C numerator
gen numC`age'_`period' = ((`a1' <= b7 & b7 < `a2') & (t2  `a2' <= b3 & b3 < t2  `a1'))
* Cohort A denominator
gen denA`age'_`period' = ( (b5 == 1  `a1' <= b7) & (t1  `a2' <= b3 & b3 < t1  `a1'))
* Cohort B denominator
gen denB`age'_`period' = ( (b5 == 1  `a1' <= b7) & (t1  `a1' <= b3 & b3 < t2  `a2'))
* Cohort C denominator
gen denC`age'_`period' = ( (b5 == 1  `a1' <= b7) & (t2  `a2' <= b3 & b3 < t2  `a1'))
* Count half for deaths for cohort C, except for the last period where all deaths are counted
local f = 0.5
if (`period' == 0) {
local f = 1
}
* Sum numerators from cohorts A, B and C for this case
gen num`age'_`period' = 0.5*numA`age'_`period' + numB`age'_`period' + numC`age'_`period'*`f'
* Sum denominators from chorts A, B and C for this case
gen den`age'_`period' = 0.5*denA`age'_`period' + denB`age'_`period' + denC`age'_`period'*0.5
* Generate list of numerator and denominator variables for period and age for collapse command below
local vlist `vlist' num`age'_`period' den`age'_`period'
* Similarly generate list of numerator and denominator variables for period only for reshape command below
if (`period' == 0) {
local vlist2 `vlist2' num`age'_ den`age'_
}
}
* Shift the token list to the next age group
mac shift
}
}
* Sum all numerators and denominators  weighted sum
collapse (sum) `vlist' [pw=v005/1000000]
* Add a variable to act as ID for the reshape
gen x = 0
* Reshape long by age group
reshape long `vlist2', i(x) j(period)
* Drop the underscore (_) on the end of variable names
rename *_ *
* Reshape now for periods
reshape long num den, i(period) j(a1)
* Drop the x variable as we no longer need it
drop x
* Generate the upper bounds of the age groups
gen a2 = a1[_n+1]
replace a2 = 60 if a1 == 48
* Calculate the age group mortality probabilities
gen death = num / den
* Calculate the age group survival probabilities
gen surv = 1  death
* Generate product of survival probabilities:
gen prodsurv = surv if a1 == 0
replace prodsurv = surv * prodsurv[_n1] if a1 > 0
* Generate product of survival probabilities for child mortality rate, starting at 12 months
gen prodsurv2 = surv if a1 == 12
replace prodsurv2 = surv * prodsurv2[_n1] if a1 > 12
* Neonatal mortality rate
gen nmr = 1000*(1prodsurv) if a2 == 1
* Postneonatal mortality rate (calculated later)
gen pnmr = .
* Infant mortality rate
gen imr = 1000*(1prodsurv) if a2 == 12
* Child mortality rate
gen cmr = 1000*(1prodsurv2) if a2 == 60
* Underfive mortality rate
gen u5mr = 1000*(1prodsurv) if a2 == 60
* Capture just the rates
collapse (min) nmr pnmr imr cmr u5mr, by(period)
* Postneonatal mortality rate = IMR  NMR
replace pnmr = imr  nmr
* Now see the results
list And the results basically match the syncmrates program
++
 period nmr pnmr imr cmr u5mr 

1.  0 29.46365 11.2654 40.72905 9.390652 49.73727 
2.  1 31.49295 12.24667 43.73962 11.31612 54.56078 
3.  2 33.03296 13.47327 46.50623 12.88736 58.79426 
4.  3 36.41945 15.01405 51.4335 16.21401 66.81353 
5.  4 40.38089 18.37582 58.75671 19.31465 76.93649 
++
Hassen Ali(Chief Public Health Professional Specialist)



Goto Forum:
Current Time: Fri Dec 8 10:25:39 Coordinated Universal Time 2023
