如何在Stata中计算多分类年龄组变量的发病密度比(IRR)?
在Stata中计算多分类暴露的发病密度比(IRR)
你遇到的报错是因为你使用的菜单工具仅支持二分类暴露变量,针对多分类的agegroups,可以用以下几种方法实现需求:
方法一:泊松回归(推荐,自带统计检验与置信区间)
先设置生存数据结构,指定症状出现时间和结局变量:
stset symptom_time, failure(symptom_occurred)其中
symptom_time是你的症状出现时间变量,symptom_occurred是结局指示变量(1=出现症状,0=删失/未出现)。运行泊松回归,指定多分类暴露变量并输出IRR:
poisson symptom_occurred i.agegroups, offset(ln(_t)) irri.agegroups会自动将多分类变量拆分为虚拟变量,默认第一个水平(18-29)作为参照组;offset(ln(_t))将人时的对数作为偏移量,保证模型估计的是发病密度比;irr选项直接输出发病率比(IRR)而非回归系数。
如果数据存在过度离散(可通过泊松回归后的拟合检验判断),替换为负二项回归:
nbreg symptom_occurred i.agegroups, offset(ln(_t)) irr
方法二:使用stir命令(专门用于计算发病密度比)
- 先安装用户编写的
stir命令:ssc install stir - 直接运行命令,指定参照组:
若stir agegroups, ref(18-29)agegroups是数值编码(比如1=18-29,2=30-39等),则用ref(1)指定参照组。该命令会直接输出各组相对于参照组的IRR及置信区间。
方法三:手动计算(无统计检验,仅快速查看)
先用stsum命令分组统计事件数和人时:
stsum, by(agegroups)
提取各组的事件数(Events)和人时(Person-time),计算每组发病密度(事件数/人时),再用其他组的发病密度除以18-29组的发病密度,得到IRR。
内容的提问来源于stack exchange,提问作者Becky
相关产品推荐
相关产品推荐

