/* EQ-5D U.S. PREFERENCE-WEIGHTED INDEX */ /* Author: James W. Shaw */ /* Date: May 20, 2004 */ /* Program was written with Stata/SE 8.0 but is compatible with earlier versions of the application. */ /* The scoring algorithm presented below was taken from: Shaw JW, Johnson JA, Coons SJ. U.S. Valuation of the EQ-5D Health States: Development and Testing of the D1 Valuation Model. Medical Care. Submitted 2004. */ /* This program computes the U.S. preference-weighted index score using self-reported EQ-5D data. It is presumed that the data set includes the following five variables: Dimension Variable Name Range -------------------------------------------------- Mobility MO 1-3 Self-care SC 1-3 Usual activities UA 1-3 Pain/discomfort PD 1-3 Anxiety/depression AD 1-3 -------------------------------------------------- where a 1 indicates no problems, a 2 indicates moderate problems, and a 3 indicates severe problems. The variables containing responses for the five dimensions must be named as above (in capital letters). Missing values should be left blank (i.e., a '.' should not be substituted for a missing value). The index score will not be generated when responses are missing for 1 or more of the five dimensions. */ /* Bryan Tysinger April 2015 - EQ-5D data are only in MEPS from 2001-2003 - Ages 18+ - Predicting D1 model (from 2004 "U.S. Valuation of the EQ-5D Health States"), as before - Predicting MM-OC model (from 2010 "A Median Model for Predicting United States Population-Based EQ-5D Health State Preferences") */ /* Init some stuff */ clear clear mata set more off set mem 2500m set seed 5243212 set maxvar 10000 cap log close /* Load and prep the data. MEPS 2001-2003 */ quietly include "../../../fem_env.do" foreach y in 01 02 03 { fdause "$meps_dir/csd20`y'.ssp" keep dupersid panel`y' age`y'x ad*42 marry`y'x iadlhp53 adlhlp53 rthlth53 mnhlth53 coglim53 bmindx53 perwt`y'f gen yr = 20`y' ren panel`y' panel ren age`y'x age ren perwt`y'f perwt ren marry`y'x marry drop if age < 18 tempfile meps`y' save `meps`y'' } clear foreach y in 01 02 03 { append using `meps`y'' } rename admobi42 MO rename adself42 SC rename adacti42 UA rename adpayn42 PD rename addepr42 AD /* Generate Dummy Variables for Levels 2 and 3 of Five Dimensions */ gen m1 =0 gen m2 =0 gen s1 =0 gen s2 =0 gen u1 =0 gen u2 =0 gen p1 =0 gen p2 =0 gen a1 =0 gen a2 =0 replace m1 = 1 if MO == 2 replace m2 = 1 if MO == 3 replace s1 = 1 if SC == 2 replace s2 = 1 if SC == 3 replace u1 = 1 if UA == 2 replace u2 = 1 if UA == 3 replace p1 = 1 if PD == 2 replace p2 = 1 if PD == 3 replace a1 = 1 if AD == 2 replace a2 = 1 if AD == 3 /* Generate Interaction Terms (I2, I2-squared, I3, I3-squared) */ gen m0 = 1 if m1 == 0 & m2 == 0 gen s0 = 1 if s1 == 0 & s2 == 0 gen u0 = 1 if u1 == 0 & u2 == 0 gen p0 = 1 if p1 == 0 & p2 == 0 gen a0 = 1 if a1 == 0 & a2 == 0 egen i2 = neqany(m1 s1 u1 p1 a1), values(1) replace i2 = i2 - 1 replace i2 = 0 if i2<0 gen i22 = i2^2 egen i3 = neqany(m2 s2 u2 p2 a2), values(1) replace i3 = i3 - 1 replace i3 = 0 if i3<0 gen i32 = i3^2 /* Generate D1 Term */ egen i1 = neqany(m0 s0 u0 p0 a0), values(1) gen d1 = 4 - i1 replace d1 = 0 if d1<0 /* Generate Raw Index Score for D1 model */ gen pred = .146016*m1 + .557685*m2 + .1753425*s1 + .4711896*s2 + .1397295*u1 + .3742594*u2 + .1728907*p1 + .5371011*p2 + .156223*a1 + .4501876*a2 + -.1395949*d1 + .0106868*i22 + -.1215579*i3 + -.0147963*i32 gen eq5d = 1 - pred replace eq5d = . if MO == . | SC == . | UA == . | PD == . | AD == . /* Generate Index Score for MM-OC model */ gen pred_median = 0.042*m1 + 0.490*m2 + 0.057*s1 + 0.356*s2 + 0.056*u1 + 0.136*u2 + 0.042*p1 + 0.466*p2 + 0.061*a1 + 0.357*a2 gen eq5d_median = 1 - pred_median replace eq5d_median = . if MO == . | SC == . | UA == . | PD == . | AD == . /* Drop Variables Generated by Program */ drop m1-pred /* Do some recoding for David's regressions on EQ5D for FEM (HRS) */ recode age (51/54=1) (55/59=2) (60/64=3) (65/69=4) (70/74=5) (nonmiss=6) if age >= 51, gen(agecat) recode adlhlp53 (1=1) (2=0) (nonmiss=.), gen(adlhelp) recode iadlhp53 (1=1) (2=0) (nonmiss=.), gen(iadlhelp) gen srh = rthlth53 tab srh, m recode srh (1=1) (2=2) (3=3) (4=4) (5=5) (-9=.) (-8=.) (-7=.) (-1=.) label var srh "Self-reported health 1-excellent 5-poor" forvalues i = 1/5 { gen srh`i' = srh==`i' if !missing(srh) } forvalues i = 2/5 { gen srh`i'_l75 = srh`i' replace srh`i'_l75 = 0 if agecat == 6 } label data "MEPS 18+ 2001-2003 with two EQ5d measures" save "$outdata/MEPS_EQ5D", replace /* Calculate the age bucket-specific mean srh values */ collapse srh [weight=round(perwt)], by(agecat) gen mean_srh_meps_agecat = srh drop srh /* Save to file */ save "$outdata/meps_mean_srh_agecat.dta", replace exit, STATA