The DHS Program User Forum
Discussions regarding The DHS Program data and results
Home » Topics » Reproductive Health » Out of pocket expenditure per delivery calculation
Out of pocket expenditure per delivery calculation [message #25852] Tue, 20 December 2022 02:16 Go to next message
Lily is currently offline  Lily
Messages: 6
Registered: December 2022
Member
I am facing problem in calculating the "out of pocket expenditure per delivery" in "NFHS 5 for India" using STATA. Values from report is not matching. Could I be helped with the codes.

[Updated on: Tue, 20 December 2022 06:47]

Report message to a moderator

Re: Out of pocket expenditure per delivery calculation [message #25866 is a reply to message #25852] Thu, 22 December 2022 16:56 Go to previous messageGo to next message
Janet-DHS is currently offline  Janet-DHS
Messages: 658
Registered: April 2022
Senior Member
Following is a response from DHS staff member Tom Pullum:

When users have a question about matching something in a DHS report, we need to know specifically which table they are trying to match. Which table in the NFHS-5 final report are you looking at?
Re: Out of pocket expenditure per delivery calculation [message #25868 is a reply to message #25866] Fri, 23 December 2022 01:55 Go to previous messageGo to next message
Lily is currently offline  Lily
Messages: 6
Registered: December 2022
Member
Sorry for not specifying the needful details. I was talking about the average delivery cost in public health facility which is provided in table 8.20 of NFHS-5 INDIA Report.
Re: Out of pocket expenditure per delivery calculation [message #25945 is a reply to message #25868] Fri, 13 January 2023 10:42 Go to previous messageGo to next message
Janet-DHS is currently offline  Janet-DHS
Messages: 658
Registered: April 2022
Senior Member
Following is a response from DHS staff member Tom Pullum:

Sorry for the delay with this response. Table 8.20 in the NFHS-5 report is a difficult table to match. I have prepared a Stata program that matches the n's and comes close to the means. I have found some typos in the data. There are probably more typos and other data quality issues. We cannot put any more time into this table.

* do e:\DHS\India\table_8pt20_do_KR_12Jan2023.txt

/*

Program to replicate Table 8.20 in the NFHS-5 report

The average out-of-pocket cost paid for delivery for the most recent live birth
among women age 15-49 who had a live birth in the 5 years preceding the survey
that was delivered in a health facility.

Out-of-pocket cost paid for the delivery includes the cost of transportation,
the hospital stay, tests, medicines, and other costs.

The components are these five variables: s451 and s452a, b, c, d.

This program works off the KR file rather than the IR file. Select one child per woman
and then the analysis is equivalent to using women as units.


Rule 1: Calculate the total as the sum of the 5 components if they are all <99998

Rule 2: If any of the components are 99998, and s454 is NOT 99998, use s454 as the total

Rule 3: If all the components are 99998 and s454 is 99998, ignore the case


Numbers in the table to match, bottom row

public 3,245 Rs
private 24,663 Rs
any 10,035 Rs
cases 157,552

Row for Jain (v130==6, only 272 weighted cases), can use for testing

public 7,601 Rs
private 32,133 Rs
any 26,955 Rs

*/


************************************************************ *************

program define make_data

use "C:\Users\26216\ICF\Analysis - Shared Resources\Data\DHSdata\IAKR7DFL.DTA", clear

* Save the variables needed
keep v0* v130 v201 b* m15* s116 s45*

gen mo_age=1
replace mo_age=2 if b3-v011>=20*12
replace mo_age=3 if b3-v011>=35*12
label variable mo_age "Mother's age at birth"
label define mo_age 1 "<20" 2 "20-34" 3 "35+"
label values mo_age mo_age
*tab mo_age

gen birth_order=bord
replace birth_order=2 if bord>=2
replace birth_order=3 if bord>=4
label variable birth_order "Birth order"
label define birth_order 1 "1" 2 "2-3" 3 "4+"
label values birth_order birth_order
*tab birth_order

gen religion=v130
replace religion=7 if v130>=7
label variable religion "Religion"
label define religion 1 "Hindu" 2 "Muslim" 3 "Christian" 4 "Sikh" 5 "Buddhist/Neo-Buddhist" 6 "Jain" 7 "Other"
label values religion religion
*tab religion

gen caste=s116
replace caste=4 if caste==.
label variable caste "Caste/tribe"
label define caste 1 "Scheduled caste" 2 "Scheduled tribe" 3 "Other backward class" 4 "Other" 8 "Don't know"
label values caste caste
*tab caste

* Construct recodes for facility type and cost for the births in the past 5 years
gen factype=1
replace factype=2 if m15>=20
replace factype=3 if m15>=30
replace factype=9 if m15>=40
replace factype=. if m15==.
label define factype 1 "Home" 2 "Public" 3 "Private" 9 "Other"
label values factype factype

gen factype2or3=0
replace factype2or3=1 if factype==2 | factype==3

* Change the five components to more convenient variable names
gen cost1=s451
gen cost2=s452a
gen cost3=s452b
gen cost4=s452c
gen cost5=s452d

tab factype bidx [iweight=v005/1000000],m

* Find the most recent birth with factype2or3 equal to 1

* Reduce to births with factype2or3=1
keep if factype2or3==1

* To match the n's in the table, select if bidx=1
* This is not necessarily following the title of the table. However, it matches the n's.

keep if bidx==1

save IAtemp.dta, replace

end

************************************************************ *************

program define make_frequencies

* This routine gives the n's

use IAtemp.dta, clear

tab1 factype mo_age birth_order v025 religion caste [iweight=v005/1000000]

* The distribution of birth_order does not match the table; don't know why

* I have not included the education covariate

end

************************************************************ *************

program define make_table

use IAtemp.dta, clear

* calculate the sum of the components
gen total=0
forvalues lc=1/5 {
replace total=total+cost`lc' if cost`lc'<99998
}
replace total=99998 if cost1==99998 | cost2==99998 | cost3==99998 | cost4==99998 | cost5==99998


* Rule: use s454 as a default if it is coded with a valid value
* Otherwise use the sum of the components IF no components are 99998
gen cost=s454 if factype2or3==1
replace cost=total if factype2or3==1 & (s454==. | s454==99998) & (total ~=. & total~=99998)

*********************************
* Optional: find and correct typos that should be 99998
* tab cost
replace cost=99998 if cost==99990
replace cost=99998 if cost==99988
replace cost=99998 if cost==99995
*********************************

* Drop if cost=99998
replace cost=. if cost==99998

gen pub_cost=.
replace pub_cost=cost if factype==2

gen priv_cost=.
replace priv_cost=cost if factype==3

gen pubpriv_cost=.
replace pubpriv_cost=cost if factype2or3==1

local lcovars mo_age birth_order v025 religion caste
foreach lc of local lcovars {
tabstat *_cost [fweight=v005], statistics(mean) by(`lc')
}

* Can save the data file

end

************************************************************ *************
************************************************************ *************
************************************************************ *************
************************************************************ *************
************************************************************ *************
* Execution begins here

* Specify a workspace
cd e:\DHS\DHS_data\scratch

* Do not need to rerun "make_data" after the data file has been constructed
make_data
make_frequencies
make_table
Re: Out of pocket expenditure per delivery calculation [message #26526 is a reply to message #25945] Wed, 29 March 2023 08:03 Go to previous messageGo to next message
Lily is currently offline  Lily
Messages: 6
Registered: December 2022
Member
Thanks for sharing the above codes.
I tried these codes but values don't match the reports though N=157552 matches, the mean OOPE through this codes are:
Public facility=3047.98
Private facility =24672.19
Any facility=9489.873
N= 157552
There was mention of typos and difficulty in matching the reports values. What is the possible way out. I need to match values for my study to proceed further in my study.I tried this codes in similar way for NFHS4 dataset as well.There also the values don't match. Looking forward for kind response as to how it can obtained. Thanks you.
Re: Out of pocket expenditure per delivery calculation [message #26546 is a reply to message #26526] Thu, 30 March 2023 15:52 Go to previous messageGo to next message
Janet-DHS is currently offline  Janet-DHS
Messages: 658
Registered: April 2022
Senior Member
Following is a response from DHS staff member Tom Pullum:

I am going to try again to get a better match. Will post progress on the forum.
Re: Out of pocket expenditure per delivery calculation [message #26568 is a reply to message #26546] Mon, 03 April 2023 02:17 Go to previous message
Lily is currently offline  Lily
Messages: 6
Registered: December 2022
Member
Thanks. I am looking forward to hearing from you.
Previous Topic: Reproductive health indicators
Next Topic: Knowledge of days when a woman is more likely to become pregnant?
Goto Forum:
  


Current Time: Thu Mar 28 12:05:55 Coordinated Universal Time 2024