Poisson 与负二项回归 Poisson and Negative Binomial Regression (Poisson / NB)
用对数暴露时间作为 offset 建模事件次数,估计发生率比,并根据预设策略处理过度离散。
统计原理
设受试者 在观察时间 内发生 次事件。带 offset 的 Poisson 回归写作:
因此 是 Drug A / Placebo 的发生率比(IRR);IRR<1 表示单位人时内 Drug A 事件率较低。offset=logexpo 的系数固定为 1,它校正的是不同随访长度,不是普通协变量。
Poisson 假定条件方差等于均值。负二项模型保留相同的 log-rate 结构,但允许
其中 描述额外变异。模型选择、离散参数处理和敏感性分析应在 SAP 预先规定,不能看到显著性后在 Poisson 与负二项之间挑结果。二者都要求事件计数定义和人时口径可比;同一受试者的复发事件如果相关,还需按 SAP 使用稳健方差、GEE、frailty 或其他复发事件方法。
Poisson 假设均值约等于方差;方差明显更大时,负二项模型用离散参数吸收额外变异。
什么时候用
终点是规定观察窗内的事件次数,受试者随访长度不同,需要比较单位暴露时间的事件发生率时使用。常见例子包括急性加重次数、住院次数或特定不良事件发生次数。
SAP 里长这样:
The number of exacerbations will be analyzed using a negative binomial regression model with treatment as a factor and the logarithm of time at risk as an offset. The treatment effect will be expressed as the rate ratio (Drug A / placebo) with a two-sided 95% confidence interval.
看到 event count / incidence rate / exposure offset / overdispersion / negative binomial,即可定位到本页。若 SAP 只比较两组汇总事件数且强调 small counts / exact CI,应转到“精确发生率比”。
适用条件速查卡
| 项 | 条件 |
|---|---|
| 终点 | 非负整数次数;事件定义、重复事件合并规则和观察窗已冻结 |
| 暴露时间 | 每人 EXPOSURE_YR>0,单位全程一致;进入模型前取自然对数 |
| Poisson 假设 | 给定协变量后均值与方差相近,独立增量近似合理 |
| 负二项适用 | 方差明显大于均值且 SAP 预设 NB2 型离散结构 |
| 估计方向 | 本页 IRR=Drug A / Placebo;小于 1 有利于减少事件 |
| 零事件 | EVENTS=0 可保留;EXPOSURE_YR=0 不能取 log,必须按分析规则处理 |
| 输入范围 | 目标 PARAMCD、分析集和 ANL01FL='Y' 已限定;每人一条汇总计数记录 |
核心 SAS 代码
data adce_main;
set adce;
where paramcd='EXAC' and anl01fl='Y';
if exposure_yr>0;
logexpo=log(exposure_yr);
run;
proc genmod data=adce_main;
class trt01p(ref='Placebo') / param=ref;
model events=trt01p / dist=poisson link=log offset=logexpo type3;
estimate 'Rate ratio: Drug A / Placebo' trt01p 1 / exp;
run;
proc genmod data=adce_main;
class trt01p(ref='Placebo') / param=ref;
model events=trt01p / dist=negbin link=log offset=logexpo type3;
estimate 'Rate ratio: Drug A / Placebo' trt01p 1 / exp;
run;
EVENTS是次数而非“是否发生”;把二分类标记放入计数模型会回答另一个问题。logexpo必须是自然对数。直接把原始暴露时间写成协变量既不固定系数为 1,也不再是标准发生率模型。estimate ... / exp把治疗系数及其置信限指数化为 Drug A / Placebo IRR 及置信区间;必须连同标签核对方向。- 两个模型同时展示仅用于理解和按预设方案执行;主结果以 SAP 指定模型为准。
变量解释表
| 变量 | 含义 | 典型来源 |
|---|---|---|
| USUBJID | 受试者唯一标识 | ADSL.USUBJID |
| TRT01P | 计划治疗组;本页比较 Drug A / Placebo | ADSL.TRT01P |
| PARAMCD | 计数参数代码;示例为 EXAC | 计数型 ADaM 数据集 |
| EVENTS | 观察窗内符合定义的事件次数 | 事件域汇总派生 |
| EXPOSURE_YR | 风险暴露人年,必须大于 0 | 起止日及停药/死亡规则派生 |
| LOGEXPO | log(EXPOSURE_YR),作为固定系数为 1 的 offset | 分析程序派生 |
| ANL01FL | 主分析记录标记 | ADaM 规则派生 |
输出对照
| SAS 输出 | 关键字段 | Shell 行/解释 |
|---|---|---|
| 描述性汇总 | sum(EVENTS), sum(EXPOSURE_YR) | Events / total exposure / crude rate |
Estimates | MeanEstimate 或指数化 Estimate、Lower/Upper CL | Adjusted rate ratio (Drug A / Placebo), 95% CI |
ParameterEstimates | TRT01P 的 Estimate、StdErr、p 值 | log(IRR) 与模型检验;不要把系数原值当 IRR |
ModelFit | Deviance、Pearson、AIC | 拟合诊断;不是疗效结论 |
| NB 离散参数 | Scale/Dispersion estimate | 过度离散程度,通常进入统计 QC 而非主 shell |
正式表格应明确显示发生率单位(如每人年)、比较方向和主模型名称。若 shell 同时列粗发生率与模型校正率比,两者的分母口径必须一致。
示例数据与程序
- example.csv — 48 例原创模拟计数记录,含不同人年暴露和零事件受试者
- example.sas — 导入、范围检查、Poisson/NB2 拟合及 IRR 输出的完整程序
常见坑
先锁定事件与人时口径
- offset 写错:必须写自然对数暴露时间;把
EXPOSURE_YR本身放进 model 右侧会改变估计目标。 - 忽略零或负暴露:零暴露无法取 log;不能偷偷加极小常数,应按 SAP/数据规范追溯处理。
- 看结果换分布:Poisson、缩放 Poisson、负二项和零膨胀模型的选择应预设,并报告任何敏感性分析。
- 把过度离散等同于 NB 必然正确:离群受试者、漏掉协变量、事件相关性和大量结构性零都可能造成额外变异。
- 误读方向:IRR=0.70 是 Drug A 单位人时事件率为 Placebo 的 70%,不是绝对减少 30 个百分点。
- 重复事件独立性被破坏:简单计数模型未自动解决同一受试者内事件相关;方差方法须服从 SAP。
相关方法
- 精确发生率比 对两个独立 Poisson 事件数条件于总事件数,给出发生率比的 Clopper-Pearson 型精确区间和条件精确检验。
- Cox 比例风险回归 用半参数比例风险模型估计治疗组风险比及置信区间,并可按随机分层因素分层或校正协变量。