这里想要求人年发病率及其95% CI,IRR及其95% CI,VE及其95% CI。
数据准备
trtp:组别;agegr1:年龄层;nvar:是否发生;lgpesyr1:人年数的对数结果。
data final;
set inset;
if effcat='水痘临床病例' then nvar=1;
else nvar=0;
run;
这里需要将事件发生记为1,不发生记为0,我刚开始是事件发生记为1,不发生记为2,最终日志会报如下问题
查阅资料未果,只在sashelp中找到下面这段话,所以进行了调整。
ods output estimates=estimates lsmeans=lsmeans;
proc genmod data=final;
class trtp(ref='对照组') agegr1/PARAM=GLM;/*trtp:组别,agegr1:年龄层*/
model nvar(event='1') = trtp agegr1/offset=lgpesyr1 dist=poisson link=log;/*offset:偏移量,lgpesyr1放的是人年数的对数结果*/
exact '试验组 vs 对照组' trtp / CLTYPE=EXACT estimate= PARM; /*取反对数后获得的是IRR,VE=1-IRR ,人年发病率是lsmeans数据集中的取幂的结果,IRR是estimates中exp(试验组 vs 对照组)中的结果,VE需要自行计算*/
estimate '试验组 vs 对照组' trtp 1 -1/exp;
lsmeans trtp/cl exp;
run;
最后可以自行检查,发生的例数/总的人年数,看看是否等于人年发病率;如果出现不等的情况,可能是因为:数据不完整,某受试者发生了事件,但是人年数却为空,把这种数据剔除掉就会相等了。