------------------------------------------------------------------------------------------------- log: C:\MyDocs\MPH\Text\SecondEdition\WebDoFiles\8.9.Framingham.log log type: text opened on: 3 Jan 2008, 17:34:54 . * 8.9.Framingham.log . * . * Convert Framingham survival data setset to person-year data for . * Poisson regression analysis. . * . set memory 20m Current memory allocation current memory usage settable value description (1M = 1024k) -------------------------------------------------------------------- set maxvar 5000 max. variables allowed 1.909M set memory 20M max. data space 20.000M set matsize 400 max. RHS vars in models 1.254M ----------- 23.163M . use C:\WDDtext\2.20.Framingham.dta, clear . * . * Convert bmi, scl and dbp into categorical variables that subdivide . * the data set into quartiles for each of these variables. . * . centile bmi dbp scl, centile(25,50,75) -- Binom. Interp. -- Variable | Obs Percentile Centile [95% Conf. Interval] -------------+------------------------------------------------------------- bmi | 4690 25 22.8 22.7 23 | 50 25.2 25.1 25.36161 | 75 28 27.9 28.1 dbp | 4699 25 74 74 74 | 50 80 80 82 | 75 90 90 90 scl | 4666 25 197 196 199 | 50 225 222 225 | 75 255 252 256 . generate bmi_gr = recode(bmi, 22.8, 25.2, 28, 29) (9 missing values generated) . generate dbp_gr = recode(dbp, 74,80,90,91) . generate scl_gr = recode(scl, 197, 225, 255, 256) (33 missing values generated) . * . * Calculate years of follow-up for each patient. . * Round to nearest year for censored patients. . * Round up to next year when patients exit with CHD. . * . generate years = int(followup/365.25) + 1 if chdfate (3226 missing values generated) . replace years = round(followup/365.25, 1) if !chdfate (3226 real changes made) . table sex dbp_gr, contents(sum years) row col -------------------------------------------------- | dbp_gr Sex | 74 80 90 91 Total ----------+--------------------------------------- Men | 10663 10405 12795 8825 42688 Women | 21176 14680 15348 10569 61773 | Total | 31839 25085 28143 19394 104461 -------------------------------------------------- . table sex dbp_gr, contents(sum chdfate) row col --------------------------------------------- | dbp_gr Sex | 74 80 90 91 Total ----------+---------------------------------- Men | 161 194 222 246 823 Women | 128 136 182 204 650 | Total | 289 330 404 450 1473 --------------------------------------------- . generate age_in = age . generate exit = age + years . summarize age_in exit Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- age_in | 4699 46.04107 8.504363 30 68 exit | 4699 68.27155 10.09031 36 94 . * . * Transform data set so that there is one record per patient-year of . * follow-up. Define age_now to be the patient's age in each record. . * . stset exit, id(id) enter(time age_in) failure(chdfate) id: id failure event: chdfate != 0 & chdfate < . obs. time interval: (exit[_n-1], exit] enter on or after: time age_in exit on or before: failure ------------------------------------------------------------------------------ 4699 total obs. 0 exclusions ------------------------------------------------------------------------------ 4699 obs. remaining, representing 4699 subjects 1473 failures in single failure-per-subject data 104461 total analysis time at risk, at risk from t = 0 earliest observed entry t = 30 last observed exit t = 94 . stsplit age_now, at(30(1)94) (99762 observations (episodes) created) . list id age_in years exit age_now chdfate in 278/282 +---------------------------------------------------+ | id age_in years exit age_now chdfate | |---------------------------------------------------| 278. | 4075 59 3 62 61 CHD | 279. | 4182 41 3 42 41 . | 280. | 4182 41 3 43 42 . | 281. | 4182 41 3 44 43 Censored | 282. | 1730 46 3 47 46 . | +---------------------------------------------------+ . generate age_gr = recode(age_now, 45,50,55,60,65,70,75,80,81) . label define age 45 "<= 45" 50 "45-50" 55 "50-55" 60 "55-60" 65 /// > "60-65" 70 "65-70" 75 "70-75" 80 "75-80" 81 "> 80" . label values age_gr age . sort sex bmi_gr scl_gr dbp_gr age_gr . * . * Combine records with identical values of . * sex bmi_gr scl_gr dbp_gr and age_gr. . * . collapse (count) pt_yrs=age_in (sum) chd_cnt=chdfate, by (sex bmi_gr scl_gr dbp_gr age_gr) . list sex bmi_gr scl_gr dbp_gr age_gr pt_yrs chd_cnt in 310/315 +------------------------------------------------------------+ | sex bmi_gr scl_gr dbp_gr age_gr pt_yrs chd_cnt | |------------------------------------------------------------| 310. | Men 28 197 90 45-50 124 0 | 311. | Men 28 197 90 50-55 150 1 | 312. | Men 28 197 90 55-60 158 2 | 313. | Men 28 197 90 60-65 161 4 | 314. | Men 28 197 90 65-70 100 2 | |------------------------------------------------------------| 315. | Men 28 197 90 70-75 55 1 | +------------------------------------------------------------+ . table sex dbp_gr, contents(sum pt_yrs) row col -------------------------------------------------- | dbp_gr Sex | 74 80 90 91 Total ----------+--------------------------------------- Men | 10663 10405 12795 8825 42688 Women | 21176 14680 15348 10569 61773 | Total | 31839 25085 28143 19394 104461 -------------------------------------------------- . table sex dbp_gr, contents(sum chd_cnt) row col --------------------------------------------- | dbp_gr Sex | 74 80 90 91 Total ----------+---------------------------------- Men | 161 194 222 246 823 Women | 128 136 182 204 650 | Total | 289 330 404 450 1473 --------------------------------------------- . generate male = sex == 1 if !missing(sex) . display _N 1267 . save 8.12.Framingham.dta, replace (note: file 8.12.Framingham.dta not found) file 8.12.Framingham.dta saved . log close log: C:\MyDocs\MPH\Text\SecondEdition\WebDoFiles\8.9.Framingham.log log type: text closed on: 3 Jan 2008, 17:34:57 -----------------------------------------------------------------------------------------------