*! version 6.0.0 12Dec2000 (STB-61: dm92) capture program drop phenotyp program define phenotyp version 6 qui { gettoken hr 0 : 0, parse(" ,") if (`hr'<0 ) { di in red "negative numbers invalid" exit 498 } syntax [, Type(string) Alpha(real 4.21) Lambda(real 9.95e-10) Maxage(real 100) Gamma(real 15) Sex(string)] if "`type'"~="" { parse "`type'", parse (" ") gen str1 inher = substr("`1'",1,1) } else { gen str1 inher = "d" } if inher~="d" & inher~="r" { di in red "inheritance type invalid" } if "`sex'"~="" { parse "`sex'", parse (" ") gen str1 gender = substr("`1'",1,1) } else { gen str1 gender = "b" } if gender~="b" & gender~="f" & gender~="m" { di in red "sex affect invalid" } sort famid id gen x=uniform() gen y=uniform() gen z=uniform() gen age_dth=int(`maxage'^(y^(1/`gamma'))) #delimit; gen age_dis=int((-log(1-x)/`lambda')^(1/`alpha')) if genotype=="AA" | inher=="r" & genotype=="Aa"; replace age_dis=int((-log(1-x)/`lambda'/`hr')^(1/`alpha')) if inher=="d" & genotype~="AA" | inher=="r" & genotype=="aa"; #delimit cr replace age_dis=. if gender=="m" & female==1 | gender=="f" & female==0 gen age_cen=min(age, age_dth, age_dis) gen byte disease=cond(age_cen>=age_dis, 1, 0) replace disease=0 if gender=="m" & female==1 | gender=="f" & female==0 drop x y z inher gender } end