精确发生率比 Exact Rate Ratio for Two Poisson Rates (Exact IRR)
对两个独立 Poisson 事件数条件于总事件数,给出发生率比的 Clopper-Pearson 型精确区间和条件精确检验。
统计原理
设两组独立事件数为 与 。点估计方向固定为:
条件于总事件数 后,
先对 构造 Clopper-Pearson 中心精确区间,再按
转换成发生率比区间。检验 时,二项概率为 。离散分布导致“精确”区间通常偏保守;它表示覆盖率不低于名义水平,而不是区间一定更窄。
精确率比推断以事件计数和人时为基础,尤其适合事件稀少时。
什么时候用
只有两个独立组、事件很少、可获得每组总人时,并且 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/负二项/复发事件模型,而不是把所有信息压成两行。
适用条件速查卡
| 项 | 条件 |
|---|---|
| 输入 | 每组事件总数 和正的总暴露时间 |
| 随机模型 | 两组事件数相互独立,且各自服从 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;
页面代码和完整下载程序都对 或 单独设置边界,避免 0/0 或除以零;数值哨兵 constant('BIG') 在正式 shell 中应显示为 NE 或 ∞。这里的双侧 p 值是两倍较小条件尾概率并截断到 1;若 SAP 指定概率排序、mid-p 或无条件精确法,不能混用。
变量解释表
| 变量 | 含义 | 典型来源 |
|---|---|---|
| TRT01P | 汇总组别 | ADSL.TRT01P |
| EVENTS | 组内符合定义的事件总数 | AE/事件域按 SAP 汇总 |
| EXPOSURE_PY | 组内总暴露人年 | 受试者风险时间求和 |
| RATE_A / RATE_P | 事件数除以人年 | 程序派生 |
| RATE_RATIO | Drug A rate / Placebo rate | 程序派生 |
| RR_LOWER / RR_UPPER | 条件精确 95% CI | 二项精确区间变换 |
| P_EXACT | 的中心双侧条件精确 p 值 | 条件二项分布 |
输出对照
| 程序字段 | Shell 行 | 解释 |
|---|---|---|
X_A, T_A, RATE_A | Drug A events / exposure / rate | rate 的单位必须注明每人年或每 100 人年 |
X_P, T_P, RATE_P | Placebo events / exposure / rate | 与 Drug A 使用同一事件和人时规则 |
RATE_RATIO | Incidence rate ratio | Drug A / Placebo;不要倒抄 |
RR_LOWER, RR_UPPER | Exact 95% CI | 可能明显不对称或出现无穷上限 |
P_EXACT | Exact 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。
- 汇总后假装完成协变量校正:两行数据不再包含中心、分层或受试者异质性,不能替代预设回归模型。
- 把保守区间解读为数据质量差:小计数下区间宽主要反映信息量有限和离散性。
相关方法
- Poisson 与负二项回归 用对数暴露时间作为 offset 建模事件次数,估计发生率比,并根据预设策略处理过度离散。
- 卡方检验 / Fisher 精确检验 比较两个独立治疗组的二分类结局比例,并按期望频数选择 Pearson 卡方或 Fisher 精确检验。