You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Stata中计算多分类年龄组变量的发病密度比(IRR)?

在Stata中计算多分类暴露的发病密度比(IRR)

你遇到的报错是因为你使用的菜单工具仅支持二分类暴露变量,针对多分类的agegroups,可以用以下几种方法实现需求:

方法一:泊松回归(推荐,自带统计检验与置信区间)

  1. 先设置生存数据结构,指定症状出现时间和结局变量:

    stset symptom_time, failure(symptom_occurred)
    

    其中symptom_time是你的症状出现时间变量,symptom_occurred是结局指示变量(1=出现症状,0=删失/未出现)。

  2. 运行泊松回归,指定多分类暴露变量并输出IRR:

    poisson symptom_occurred i.agegroups, offset(ln(_t)) irr
    
    • i.agegroups会自动将多分类变量拆分为虚拟变量,默认第一个水平(18-29)作为参照组;
    • offset(ln(_t))将人时的对数作为偏移量,保证模型估计的是发病密度比;
    • irr选项直接输出发病率比(IRR)而非回归系数。

    如果数据存在过度离散(可通过泊松回归后的拟合检验判断),替换为负二项回归:

    nbreg symptom_occurred i.agegroups, offset(ln(_t)) irr
    

方法二:使用stir命令(专门用于计算发病密度比)

  1. 先安装用户编写的stir命令:
    ssc install stir
    
  2. 直接运行命令,指定参照组:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:50:22