/* ex3_2.do Example 3.2 programs required binscrn3.ado (v 1.1.0 or later) binscrn2.ado (v 1.1.0 or later) data required: est1.dta Exercise Stress test and Chest pain history data from the CASS study paired data last update: 01 September 2005 */ version 9 set more off cap semt_profile cap log close cap pro drop doit program define doit log using ${semt_log}ex3_2, replace di "{txt} **** Example 3.2 **** di di "{txt} Comparing accuracy with paired data" di qui use ${semt_data}est1,clear di "{txt} *** a) paired analysis *** di binscrn3 y2 y1 d di di "{txt} ===============================================" di di di "{txt} *** b) unpaired analysis *** di /* expand data to long format: 2 records per subject; 1 test result for each record */ quietly { preserve qui gen int subj = _n expand = 2 sort subj by subj: gen byte test = _n by subj: gen y = y2 if _n==1 by subj: replace y = y1 if _n==2 } la def testlbl 1 "`:var label y2'" 2 "`:var label y1'" la val test testlbl la var y "test result" la val y negposlb binscrn2 y d test di di "{txt} ===============================================" di di di "{txt} *** c) association parameters *** di restore /* restore original dataset (wide format; single record per subject) */ tempname Md Mdb a_d a_db qui ta y1 y2 if d==1, matcell(`Md') sca `a_d' = (`r(N)'*(`=`Md'[2,2]'))/(((`=`Md'[1,2]')+(`=`Md'[2,2]'))*((`=`Md'[2,1]')+(`=`Md'[2,2]'))) qui ta y1 y2 if d==0, matcell(`Mdb') sca `a_db' = (`r(N)'*(`=`Mdb'[2,2]'))/(((`=`Mdb'[1,2]')+(`=`Mdb'[2,2]'))*((`=`Mdb'[2,1]')+(`=`Mdb'[2,2]'))) di "{txt} A_d = " as res %5.2f `a_d' di "{txt} A_db = " as res %5.2f `a_db' di qui log close end doit