跳到主要内容
临床统计方法速查站
方法分类

精确发生率比 Exact Rate Ratio for Two Poisson Rates (Exact IRR)

对两个独立 Poisson 事件数条件于总事件数,给出发生率比的 Clopper-Pearson 型精确区间和条件精确检验。

统计原理

设两组独立事件数为 XAPoisson(λATA)X_A\sim\mathrm{Poisson}(\lambda_A T_A)XPPoisson(λPTP)X_P\sim\mathrm{Poisson}(\lambda_P T_P)。点估计方向固定为:

RR^=XA/TAXP/TP=Drug A ratePlacebo rate.\widehat{RR}=\frac{X_A/T_A}{X_P/T_P}=\frac{\text{Drug A rate}}{\text{Placebo rate}}.

条件于总事件数 N=XA+XPN=X_A+X_P 后,

XANBinomial(N,p),p=RRTARRTA+TP.X_A\mid N\sim\mathrm{Binomial}\left(N,p\right),\qquad p=\frac{RR\,T_A}{RR\,T_A+T_P}.

先对 pp 构造 Clopper-Pearson 中心精确区间,再按

RR=p1pTPTARR=\frac{p}{1-p}\frac{T_P}{T_A}

转换成发生率比区间。检验 H0:RR=1H_0:RR=1 时,二项概率为 p0=TA/(TA+TP)p_0=T_A/(T_A+T_P)。离散分布导致“精确”区间通常偏保守;它表示覆盖率不低于名义水平,而不是区间一定更窄。

事件数结合观察时间形成发生率

精确率比推断以事件计数和人时为基础,尤其适合事件稀少时。

什么时候用

只有两个独立组、事件很少、可获得每组总人时,并且 SAP 明确要求 exact rate ratio / conditional exact Poisson 时使用。它适合罕见安全事件或小样本发生率比较的汇总分析。

SAP 里长这样:

The incidence rate ratio (Drug A / placebo) and its two-sided 95% exact conditional confidence interval, conditional on the total number of events, will be reported. Exposure will be expressed in patient-years.

若需受试者级协变量校正、分层、复发事件相关性或大量受试者计数,优先使用预设的 Poisson/负二项/复发事件模型,而不是把所有信息压成两行。

适用条件速查卡

条件
输入每组事件总数 XgX_g 和正的总暴露时间 TgT_g
随机模型两组事件数相互独立,且各自服从 Poisson 分布
率的含义组内目标观察窗具有可解释的平均恒定发生强度
估计方向Drug A / Placebo;小于 1 表示 Drug A 事件率较低
精确方法条件于总事件数的中心 Clopper-Pearson 区间;须与 SAP 的“exact”定义一致
极端计数分子组 0 事件时下限为 0;分母组 0 事件时点估计/上限可能为无穷
不适用同一受试者多次事件存在强相关、暴露重叠、需协变量调整或事件定义不一致

核心 SAS 代码

data exact_rate_ratio;
  alpha=0.05;
  x_a=6;  t_a=42.5;
  x_p=15; t_p=40.0;
  n=x_a+x_p;
  rate_a=x_a/t_a;
  rate_p=x_p/t_p;
  if rate_p>0 then rate_ratio=rate_a/rate_p;
  else if rate_a>0 then rate_ratio=constant('BIG'); /* shell 显示为 NE/∞ */
  else call missing(rate_ratio);                    /* 两组均 0 事件 */

  if x_a=0 then p_lower=0;
  else p_lower=quantile('BETA',alpha/2,x_a,n-x_a+1);
  if x_a=n then p_upper=1;
  else p_upper=quantile('BETA',1-alpha/2,x_a+1,n-x_a);

  if p_lower=0 then rr_lower=0;
  else rr_lower=(p_lower/(1-p_lower))*(t_p/t_a);
  if p_upper=1 then rr_upper=constant('BIG');
  else rr_upper=(p_upper/(1-p_upper))*(t_p/t_a);

  p0=t_a/(t_a+t_p);
  p_exact=min(1,2*min(cdf('BINOMIAL',x_a,p0,n),
                      1-cdf('BINOMIAL',x_a-1,p0,n)));
run;

页面代码和完整下载程序都对 XA=0X_A=0XA=NX_A=N 单独设置边界,避免 0/0 或除以零;数值哨兵 constant('BIG') 在正式 shell 中应显示为 NE。这里的双侧 p 值是两倍较小条件尾概率并截断到 1;若 SAP 指定概率排序、mid-p 或无条件精确法,不能混用。

变量解释表

变量含义典型来源
TRT01P汇总组别ADSL.TRT01P
EVENTS组内符合定义的事件总数AE/事件域按 SAP 汇总
EXPOSURE_PY组内总暴露人年受试者风险时间求和
RATE_A / RATE_P事件数除以人年程序派生
RATE_RATIODrug A rate / Placebo rate程序派生
RR_LOWER / RR_UPPER条件精确 95% CI二项精确区间变换
P_EXACTH0:RR=1H_0:RR=1 的中心双侧条件精确 p 值条件二项分布

输出对照

程序字段Shell 行解释
X_A, T_A, RATE_ADrug A events / exposure / raterate 的单位必须注明每人年或每 100 人年
X_P, T_P, RATE_PPlacebo events / exposure / rate与 Drug A 使用同一事件和人时规则
RATE_RATIOIncidence rate ratioDrug A / Placebo;不要倒抄
RR_LOWER, RR_UPPERExact 95% CI可能明显不对称或出现无穷上限
P_EXACTExact conditional p-value仅在 SAP 指定同一双侧定义时填入

精确发生率比是相对效应。若 shell 还要求绝对发生率差,需单独选择适当区间方法,不能由 RR 区间简单相减得到。

示例数据与程序

  • example.csv — 两组原创模拟汇总事件数和人年
  • example.sas — 读入数据、构造条件精确 CI 与双侧检验的 Base SAS 完整程序

常见坑

精确方法也必须写清版本

  • 把事件比例当发生率:分母是人时而不是人数;“发生过至少一次”的受试者比例属于二分类问题。
  • 方向和暴露换算不一致:事件率单位可整体缩放,但两组人时必须使用同一单位,RR 标签必须是 Drug A / Placebo。
  • 笼统写 exact:中心条件法、概率排序法、mid-p 和无条件法可给不同结果;SAP、程序和报告必须同名同口径。
  • 忽略零事件边界:0 事件不等于真实率为 0,仍应给单侧信息;无穷上限应按 shell 显示为 NE/∞,不能填 0。
  • 汇总后假装完成协变量校正:两行数据不再包含中心、分层或受试者异质性,不能替代预设回归模型。
  • 把保守区间解读为数据质量差:小计数下区间宽主要反映信息量有限和离散性。

相关方法