|
|
|
Re: Inconsistencies between recode number of deaths and birth history [message #25834 is a reply to message #25827] |
Fri, 16 December 2022 08:19 |
Bridgette-DHS
Messages: 3199 Registered: February 2013
|
Senior Member |
|
|
Following is a response from Senior DHS staff member, Tom Pullum:
Apologies for checking the wrong survey! I have revised that Stata program to list the inconsistent cases and loop through the IR files from the five India surveys. I will paste it below. It's pretty general and could be used on any DHS surveys. I use a prefix "v" for subtotals coming from v202-v207 and a prefix "b" for subtotals coming from the b4_* and b5_* variables. The number of children "living with the mother" could be checked against the number with b9_* equal to 0.
There are no inconsistent cases in the NFHS-2, -3, and -5 surveys. There is one inconsistent case in NFHS-1, and it is easily found, because it is the only case with v201=. . In NFHS-4, I find 128 cases with 2 inconsistencies and 21 cases with 4 inconsistencies. I suspect that the inconsistencies occur in pairs, for example with a difference of +1 for sons alive and -1 for sons dead. I did not take the time to check that.
Such inconsistencies should not occur. If you need to give priority to one over the other, the b variables should be more reliable. In the interview, there is probing during the collection of the birth histories. The totals and subtotals in v201-v207 should be forced to agree with the b variables. Thank you for identifying this issue with the NFHS-4.
* this program checks v202-v207 against the birth histories
**************************************************************************************
program define check_subtotals
keep v024 v001 v002 v003 v20* b4_* b5_*
rename *_0* *_*
gen vsons_alive=v202+v204
gen vdtrs_alive=v203+v205
gen vsons_died=v206
gen vdtrs_died=v207
gen bsons_alive=0
gen bdtrs_alive=0
gen bsons_died=0
gen bdtrs_died=0
* Compare the maximum observed value of v201 with the maximum allowed value of the birth history index.
summarize v201
scalar sbstop=0
forvalues li=15/25 {
if sbstop==0 {
capture confirm numeric variable b4_`li', exact
if _rc>0 {
scalar sbstop=1
scalar sbmax=`li'-1
}
}
}
scalar list sbmax
local lbmax=sbmax
quietly forvalues li=1/`lbmax' {
scalar si=`li'
replace bsons_alive=bsons_alive+1 if b4_`li'==1 & b5_`li'==1
replace bdtrs_alive=bdtrs_alive+1 if b4_`li'==2 & b5_`li'==1
replace bsons_died=bsons_died+1 if b4_`li'==1 & b5_`li'==0
replace bdtrs_died=bdtrs_died+1 if b4_`li'==2 & b5_`li'==0
}
*tab vsons_alive bsons_alive
*tab vdtrs_alive bdtrs_alive
*tab vsons_died bsons_died
*tab vdtrs_died bdtrs_died
gen d1=vsons_alive-bsons_alive
gen d2=vdtrs_alive-bdtrs_alive
gen d3=vsons_died -bsons_died
gen d4=vdtrs_died -bdtrs_died
tab1 d1 d2 d3 d4
gen D=0
label variable D "case has D inconsistencies"
replace D=D+1 if d1~=0
replace D=D+1 if d2~=0
replace D=D+1 if d3~=0
replace D=D+1 if d4~=0
sort v024 v001 v002 v003
end
**************************************************************************************
**************************************************************************************
**************************************************************************************
**************************************************************************************
**************************************************************************************
* Execution begins here
local lpvs "23 42 52 74 7D"
foreach lpv of local lpvs {
scalar spv="`lpv'"
use "...\IAIR`lpv'FL.dta", clear
quietly check_subtotals
scalar list spv
tab D if D>0
list v024 v001 v002 v003 v201 *alive *died if D>0, table clean abbrev(11)
}
|
|
|