Support #1476

Calculating Equivalised Income Deciles AHC

Added by Henry Parkes almost 3 years ago. Updated almost 3 years ago.

Start date:
% Done:



Dear USOC User Team,
I've written some code which seeks to work out people's equivalised household income decile after housing costs, and am then looking at the tenure amongst the deciles.

In my analysis - around 60% of the top decile seem to own their property own outright - compared to just 38% in HBAI (using Stat Xplore) - I know they won't perfectly align but this feels like quite a big difference. This has made me doubt my approach to assigning deciles

Please see the code below in STATA, doing the calculations to work out the HH decile (adapting from the code in the USOC moodle tutorial), which I then match on to indresp using the household identifier.

use "E:\ippr\datasets\UKHLS\stata13_se\ukhls_w10/j_hhresp.dta", clear

//Create equivalisation factors for after housing costs: 0.58 for first adult and 0.42 for subsequent adults. 0.4 for children 14+ and 0.2 for children <14
gen j_adults = j_npensioner + j_nwage_dv
gen j_14pluschildren = j_nkids_dv - j_nchoecd_dv

//j_adults: number of adults. j_14pluschildren: number of children 14+. j_nchoecd_dv: number of children 0-13

gen j_ahc_equivalisation = 0.58 + ((j_adults - 1)*0.42) + (0.4 * j_14pluschildren) + (0.2 * j_nchoecd_dv)
replace j_ahc_equivalisation = . if j_adults == 0 //Get rid of cases where household contains no adults...

//Generate equivalised household income variables
gen j_ehhnetinc1_ahc = (j_fihhmnnet1_dv - j_houscost1_dv)/j_ahc_equivalisation
lab var j_ehhnetinc1_ahc "equivalised net HH income after housing costs"

rename j_nchoecd_dv j_under14
rename j_14pluschildren j_over14

//Create equivalised income decile variables:
_pctile j_ehhnetinc1_ahc [aw = j_hhdenub_xw], nquantiles(100)
return list

global j_p10 = r(r10)
global j_p20 = r(r20)
global j_p30 = r(r30)
global j_p40 = r(r40)
global j_p50 = r(r50)
global j_p60 = r(r60)
global j_p70 = r(r70)
global j_p80 = r(r80)
global j_p90 = r(r90)

gen j_decile = .
replace j_decile = 1 if j_ehhnetinc1_ahc < j_p10 & j_ehhnetinc1_ahc<.
replace j_decile = 2 if j_ehhnetinc1_ahc >= j_p10 & j_ehhnetinc1_ahc < j_p20 & j_ehhnetinc1_ahc<.
replace j_decile = 3 if j_ehhnetinc1_ahc >= j_p20 & j_ehhnetinc1_ahc < j_p30 & j_ehhnetinc1_ahc<.
replace j_decile = 4 if j_ehhnetinc1_ahc >= j_p30 & j_ehhnetinc1_ahc < j_p40 & j_ehhnetinc1_ahc<.
replace j_decile = 5 if j_ehhnetinc1_ahc >= j_p40 & j_ehhnetinc1_ahc < j_p50 & j_ehhnetinc1_ahc<.
replace j_decile = 6 if j_ehhnetinc1_ahc >= j_p50 & j_ehhnetinc1_ahc < j_p60 & j_ehhnetinc1_ahc<.
replace j_decile = 7 if j_ehhnetinc1_ahc >= j_p60 & j_ehhnetinc1_ahc < j_p70 & j_ehhnetinc1_ahc<.
replace j_decile = 8 if j_ehhnetinc1_ahc >= j_p70 & j_ehhnetinc1_ahc < j_p80 & j_ehhnetinc1_ahc<.
replace j_decile = 9 if j_ehhnetinc1_ahc >= j_p80 & j_ehhnetinc1_ahc < j_p90 & j_ehhnetinc1_ahc<.
replace j_decile = 10 if j_ehhnetinc1_ahc >= j_p90 & j_ehhnetinc1_ahc<.

lab var j_decile "equivalised income decile (AHC)"

keep j_pov_ahc j_hhdenub_xw j_hidp j_fihhmnnet1_dv j_houscost1_dv j_decile j_tenure_dv
save j_pov_ahc, replace

Thanks for any help/advice you can offer!


Updated by Alita Nandi almost 3 years ago

  • Status changed from New to In Progress
  • Assignee changed from Henry Parkes to Gundi Knies
  • % Done changed from 0 to 10
  • Private changed from Yes to No

Many thanks for your enquiry. The Understanding Society team is looking into it and we will get back to you as soon as we can.

We aim to respond to simple queries within 48 hours and more complex issues within 7 working days. While we will aim to keep to this response times due to the current coronavirus (COVID-19) related situation it may take us longer to respond.

Best wishes,
Understanding Society User Support Team


Updated by Gundi Knies almost 3 years ago

  • Assignee changed from Gundi Knies to Henry Parkes
  • % Done changed from 10 to 80

Hi Henry,

it is not possible to say why the results look different across the two studies; you'd have to compare the exact definitions, time frames etc. of each piece of information you are using.

From glancing at your derived equivalent factor, it would seem more straightforward to derive the number of people in the household who are aged 0-13, 14-17 and 18 or older using the INDALL data file and the age_dv variable and then simply setting to missing the cases where there is no adult in the household (in your case, the definition of adult seems to be slightly different from the UKHLS definition: i.e., aged 18+ where the study uses aged 16+).

use indall
bys hidp: egen n_u_14=sum(inrange(age_dv,0,13))
bys hidp: egen n_14_17=sum(inrange(age_dv,14,17))
bys hidp: egen n_o_17=sum(inrange(age_dv,18,120))
gen ef=.
replace ef=0.58 + ((n_o_17 - 1)*0.42) + (n_u_14 * 0.2) + (n_14_17 * 0.4) if n_o_17>=1
bys hidp: keep if _n==1

As to computing the income after housing costs, again, you'd have to compare the specific definitions used in the two studies. The income user guide provides more detail on the definitions used in the UKHLS.

E.g., the UKHLS income measure includes negative incomes (this may not be the case in the other study you are using) and it may be wise to not apply the equivalence factor to households with negative incomes as this would imply that a household with many children that is loosing money occupies are more favourable welfare position than a single person household that is loosing the same amount of money.

Hope this helps,

On behalf of Understanding Society User support


Updated by Henry Parkes almost 3 years ago

Thanks very much for your helpful reply.

Reviewing the documentation I see that to be consistent with HBAI after housing costs measure, you need to deduct council tax, which is only available with the Special License Data.

I guess to get round this in the short-term I will need to just focus on the BHC measures using j_fihhmnnet1_dv

Kind regards,


Updated by Alita Nandi almost 3 years ago

  • Status changed from In Progress to Resolved
  • % Done changed from 80 to 100

Updated by Alita Nandi almost 3 years ago

  • Assignee deleted (Henry Parkes)

Also available in: Atom PDF