/* This code derives the SF-12 Physical Component Summary (PCS) and the SF-12 Mental Component Summary (MCS). The SF-12 Physical Component Summary (PCS) converts valid answers to questions a_sf1 a_sf2a a_sf2b a_sf3a a_sf3b a_sf4a a_sf4b a_sf5 a_sf6a a_sf6b a_sf6c a_sf7 in to a single physical functioning score, resulting in a continuous scale with a range of 0 (low functioning) to 100 (high functioning). SF-12 Mental Component Summary (MCS) converts valid answers to questions a_sf1 a_sf2a a_sf2b a_sf3a a_sf3b a_sf4a a_sf4b a_sf5 a_sf6a a_sf6b a_sf6c a_sf7 in to a single mental functioning score, resulting in a continuous scale with a range of 0 (low functioning) to 100 (high functioning). For complete details on scoring methods see Ware, J.E., Kosinski, M., Turner-Bowker, D.M. and Gandek, B. (2001), How to Score Version 2 of the SF-12® Health Survey (With a Supplement Documenting Version 1). , Lincoln, RI, QualityMetric Incorporated. */ // 1. Replace 2 with the wave number you want global num 2 // 2. Replace b with the corresponding wave letter global wave b_ // 3. Write the folder path where you have stored the UKHLS data within the double quotes global myfolder "" // Syntax Starts use "$myfolder/ukhls_w${num}/${wave}indresp", clear cap drop ${wave}sf12pcs_dv ${wave}sf12mcs_dv lab drop ${wave}sf12pcs_dv lab drop ${wave}sf12mcs_dv rename ${wave}scflag_dv SC1 global waveno=${num}+18 if ${waveno}<=19 { rename *sf* *scsf* // not part of self-completion in bhps & wave 1 } gen iemb=(${wave}scsf2a==-10 | ${wave}scsf2a==-11) // needed to recode -9 to -8 for content not in iemb for var ${wave}scsf1 ${wave}scsf2a ${wave}scsf2b ${wave}scsf3a ${wave}scsf3b ${wave}scsf4a ${wave}scsf4b ${wave}scsf5 ${wave}scsf6a /// ${wave}scsf6b ${wave}scsf6c ${wave}scsf7: replace X=. if X<0 egen miss=rmiss(${wave}scsf1 ${wave}scsf2a ${wave}scsf2b ${wave}scsf3a ${wave}scsf3b ${wave}scsf4a ${wave}scsf4b ${wave}scsf5 ${wave}scsf6a /// ${wave}scsf6b ${wave}scsf6c ${wave}scsf7) /*SF_-12 Scoring*/ *Reverse scoring on 4 items* gen ${wave}scsf5r=6-${wave}scsf5 gen ${wave}scsf1r=${wave}scsf1 recode ${wave}scsf1r 1=5.0 2=4.4 3=3.4 4=2.0 5=1.0 gen ${wave}scsf6ar=6-${wave}scsf6a gen ${wave}scsf6br=6-${wave}scsf6b *Compute raw scale scores* gen sf_pf_r = ${wave}scsf2a+${wave}scsf2b gen sf_rp_r = ${wave}scsf3a+${wave}scsf3b gen sf_bp_r = ${wave}scsf5r gen sf_gh_r = ${wave}scsf1r gen sf_vt_r = ${wave}scsf6br gen sf_sf_r = ${wave}scsf7 gen sf_re_r = ${wave}scsf4a+${wave}scsf4b gen sf_mh_r = ${wave}scsf6ar+${wave}scsf6c *Transform scale scores* gen sf_pf_t = (sf_pf_r-2)*100/4 gen sf_rp_t = (sf_rp_r-2)*100/8 gen sf_bp_t = (sf_bp_r-1)*100/4 gen sf_gh_t = (sf_gh_r-1)*100/4 gen sf_vt_t = (sf_vt_r-1)*100/4 gen sf_sf_t = (sf_sf_r-1)*100/4 gen sf_re_t = (sf_re_r-2)*100/8 gen sf_mh_t = (sf_mh_r-2)*100/8 *Standardise scale scores to US population* gen sf_pf_z = (sf_pf_t-81.181222)/29.10558 gen sf_rp_z = (sf_rp_t-80.52856)/27.13526 gen sf_bp_z = (sf_bp_t-81.74015)/24.53019 gen sf_gh_z = (sf_gh_t-72.19795)/23.19041 gen sf_vt_z = (sf_vt_t-55.59090)/24.84380 gen sf_sf_z = (sf_sf_t-83.73973)/24.75775 gen sf_re_z = (sf_re_t-86.41051)/22.35543 gen sf_mh_z = (sf_mh_t-70.18217)/20.50597 *Norm-based transformation of standard form scale scores* gen ${wave}scsf12pf_dv = 50 + (sf_pf_z*10) gen ${wave}scsf12rp_dv = 50 + (sf_rp_z*10) gen ${wave}scsf12bp_dv = 50 + (sf_bp_z*10) gen ${wave}scsf12gh_dv = 50 + (sf_gh_z*10) gen ${wave}scsf12vt_dv = 50 + (sf_vt_z*10) gen ${wave}scsf12sf_dv = 50 + (sf_sf_z*10) gen ${wave}scsf12re_dv = 50 + (sf_re_z*10) gen ${wave}scsf12mh_dv = 50 + (sf_mh_z*10) *** Aggregate standard form scale scores into summary scores *** gen sf_pcs_z = (sf_pf_z*.42402) + (sf_rp_z*.35119) + (sf_bp_z*.31754) + (sf_gh_z*.24954) + (sf_vt_z*.02877) /// + (sf_sf_z*-.00753) + (sf_re_z*-.19206) + (sf_mh_z*-.22069) gen sf_mcs_z = (sf_pf_z*-.22999) + (sf_rp_z*-.12329) + (sf_bp_z*-.09731) + (sf_gh_z*-.01571) + (sf_vt_z*.23534) /// + (sf_sf_z*.26876) + (sf_re_z*.43407) + (sf_mh_z*.48581) *** Transform standard form summary scale into norm based summary scales *** gen double ${wave}sf12pcs_dv = round(50 + (sf_pcs_z*10),.01) // some persons have negative mental component score after normalisation. Recode to 0. replace ${wave}sf12pcs_dv= 0 if ${wave}sf12pcs_dv<0 recode ${wave}sf12pcs_dv (.=-7) if ${wave}ivfio==2 recode ${wave}sf12pcs_dv (.=-9) if miss>0 & miss~=. if ${waveno}>=20 & ${waveno}!=25 { recode ${wave}sf12pcs_dv (-9=-8) if SC1~=1 } if ${waveno}==25 { recode ${wave}sf12pcs_dv (-9=-8) if SC1~=1 | iemb==1 } lab var ${wave}sf12pcs_dv "SF-12 Physical Component Summary (PCS)" lab def ${wave}sf12pcs_dv -9 "missing" -7"Proxy respondent" -8"inapplicable" lab val ${wave}sf12pcs_dv ${wave}sf12pcs_dv gen double ${wave}sf12mcs_dv = round(50 + (sf_mcs_z*10),.01) // some persons have negative mental component score after normalisation. Recode to 0. replace ${wave}sf12mcs_dv= 0 if ${wave}sf12mcs_dv<0 recode ${wave}sf12mcs_dv (.=-7) if ${wave}ivfio==2 recode ${wave}sf12mcs_dv (.=-9) if miss>0 & miss~=. if ${waveno}>=20 & ${waveno}!=25 { recode ${wave}sf12mcs_dv (-9=-8) if SC1~=1 } if ${waveno}==25 { recode ${wave}sf12mcs_dv (-9=-8) if SC1~=1 | iemb==1 } lab var ${wave}sf12mcs_dv "SF-12 Mental Component Summary (PCS)" lab def ${wave}sf12mcs_dv -9 "missing" -7"Proxy respondent" -8"inapplicable" lab val ${wave}sf12mcs_dv ${wave}sf12mcs_dv sum ${wave}sf12pcs_dv ${wave}sf12mcs_dv drop ${wave}scsf1r ${wave}scsf5r ${wave}scsf6ar ${wave}scsf6br sf_pcs_z sf_mcs_z sf_pf_z sf_rp_z sf_bp_z sf_gh_z sf_vt_z /// sf_sf_z sf_re_z sf_mh_z sf_pf_t sf_rp_t sf_bp_t sf_gh_t sf_vt_t sf_sf_t sf_re_t sf_mh_t sf_pf_r sf_rp_r /// sf_bp_r sf_gh_r sf_vt_r sf_sf_r sf_re_r sf_mh_r ${wave}scsf12pf_dv ${wave}scsf12rp_dv ${wave}scsf12bp_dv /// ${wave}scsf12gh_dv ${wave}scsf12vt_dv ${wave}scsf12sf_dv ${wave}scsf12re_dv ${wave}scsf12mh_dv miss iemb keep pidp ${wave}sf12pcs_dv ${wave}sf12mcs_dv log close exit