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 (NHFS-4 data).
I have used KR file and used the following codes in STATA
gen hpage= (v008-b3)/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 NFHS-4 report is 49.7 (http://rchiips.org/NFHS/NFHS-4Reports/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 |
Trevor-DHS
Messages: 805 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 five-year 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 5-year 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[_n-1] 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[_n-1] if a1 > 12
* Neonatal mortality rate
gen nmr = 1000*(1-prodsurv) if a2 == 1
* Postneonatal mortality rate (calculated later)
gen pnmr = .
* Infant mortality rate
gen imr = 1000*(1-prodsurv) if a2 == 12
* Child mortality rate
gen cmr = 1000*(1-prodsurv2) if a2 == 60
* Under-five mortality rate
gen u5mr = 1000*(1-prodsurv) 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 U5-mortality 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 |
|
|
Trevor-DHS 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 five-year 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 5-year 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[_n-1] 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[_n-1] if a1 > 12
* Neonatal mortality rate
gen nmr = 1000*(1-prodsurv) if a2 == 1
* Postneonatal mortality rate (calculated later)
gen pnmr = .
* Infant mortality rate
gen imr = 1000*(1-prodsurv) if a2 == 12
* Child mortality rate
gen cmr = 1000*(1-prodsurv2) if a2 == 60
* Under-five mortality rate
gen u5mr = 1000*(1-prodsurv) 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)
|
|
|
Re: UNDER FIVE MORTALITY [message #28313 is a reply to message #15068] |
Tue, 12 December 2023 12:31 |
Abid_F
Messages: 5 Registered: October 2023
|
Member |
|
|
Even with this code, I am not getting CMR and U5MR for NFHS-1 & NFHS-2. The same problem with syncmrates command. NFHS-3 onwards, I find no problem. Please help.
|
|
|