options ls=78 ps=56 nocenter; /* EQ-5D U.S. PREFERENCE-WEIGHTED INDEX */ /* Author: James W. Shaw */ /* Date: May 20, 2004 */ /* Program was written with SAS Release 8.02 for Windows. */ /* 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. In the data step, the user should specify the location (LIBNAME) and name of the data set to be analyzed (DATANAME). It is recommended that the index values be saved to a new data set (NEWDATANAME) in the desired library. */ /* SAS Data Step */ data LIBNAME.DATANAME ; set LIBNAME.NEWDATANAME ; /* Generate Dummy Variables for Levels 2 and 3 of Five Dimensions */ m1 =0 ; m2 =0 ; s1 =0 ; s2 =0 ; u1 =0 ; u2 =0 ; p1 =0 ; p2 =0 ; a1 =0 ; a2 =0 ; if MO = 2 then m1 = 1 ; if MO = 3 then m2 = 1 ; if SC = 2 then s1 = 1 ; if SC = 3 then s2 = 1 ; if UA = 2 then u1 = 1 ; if UA = 3 then u2 = 1 ; if PD = 2 then p1 = 1 ; if PD = 3 then p2 = 1 ; if AD = 2 then a1 = 1 ; if AD = 3 then a2 = 1 ; /* Generate Interaction Terms (I2, I2-squared, I3, I3-squared) */ m0 = 0 ; s0 = 0 ; u0 = 0 ; p0 = 0 ; a0 = 0 ; if m1 = 0 and m2 = 0 then m0 = 1 ; if s1 = 0 and s2 = 0 then s0 = 1 ; if u1 = 0 and u2 = 0 then u0 = 1 ; if p1 = 0 and p2 = 0 then p0 = 1 ; if a1 = 0 and a2 = 0 then a0 = 1 ; i2 = m1 + s1 + u1 + p1 + a1 ; i2 = i2 - 1 ; if i2<0 then i2 = 0 ; i22 = i2*i2 ; i3 = m2 + s2 + u2 + p2 + a2 ; i3 = i3 - 1 ; if i3<0 then i3 = 0 ; i32 = i3*i3 ; /* Generate D1 Term */ i1 = m0 + s0 + u0 + p0 + a0 ; d1 = 4 - i1 ; if d1<0 then d1 = 0 ; /* Generate Raw Index Score */ 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 ; EQ_index = 1 - pred ; if (MO = .) or (SC = .) or (UA = .) or (PD = .) or (AD = .) then EQ_index = . ; /* Drop Variables Generated by Program */ drop m1 m2 s1 s2 u1 u2 p1 p2 a1 a2 m0 s0 u0 p0 a0 i2 i22 i3 i32 d1 pred nvector ; run ;