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

Poisson 与负二项回归 Poisson and Negative Binomial Regression (Poisson / NB)

用对数暴露时间作为 offset 建模事件次数,估计发生率比,并根据预设策略处理过度离散。

统计原理

设受试者 ii 在观察时间 Ti>0T_i>0 内发生 YiY_i 次事件。带 offset 的 Poisson 回归写作:

YiPoisson(μi),log(μi)=log(Ti)+β0+β1I(Drug A).Y_i\sim\mathrm{Poisson}(\mu_i),\qquad \log(\mu_i)=\log(T_i)+\beta_0+\beta_1 I(\mathrm{Drug\ A}).

因此 exp(β1)\exp(\beta_1)Drug A / Placebo 的发生率比(IRR);IRR<1 表示单位人时内 Drug A 事件率较低。offset=logexpo 的系数固定为 1,它校正的是不同随访长度,不是普通协变量。

Poisson 假定条件方差等于均值。负二项模型保留相同的 log-rate 结构,但允许

Var(YiXi)=μi+κμi2,\operatorname{Var}(Y_i\mid X_i)=\mu_i+\kappa\mu_i^2,

其中 κ>0\kappa>0 描述额外变异。模型选择、离散参数处理和敏感性分析应在 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 / PlaceboADSL.TRT01P
PARAMCD计数参数代码;示例为 EXAC计数型 ADaM 数据集
EVENTS观察窗内符合定义的事件次数事件域汇总派生
EXPOSURE_YR风险暴露人年,必须大于 0起止日及停药/死亡规则派生
LOGEXPOlog(EXPOSURE_YR),作为固定系数为 1 的 offset分析程序派生
ANL01FL主分析记录标记ADaM 规则派生

输出对照

SAS 输出关键字段Shell 行/解释
描述性汇总sum(EVENTS), sum(EXPOSURE_YR)Events / total exposure / crude rate
EstimatesMeanEstimate 或指数化 Estimate、Lower/Upper CLAdjusted rate ratio (Drug A / Placebo), 95% CI
ParameterEstimatesTRT01P 的 Estimate、StdErr、p 值log(IRR) 与模型检验;不要把系数原值当 IRR
ModelFitDeviance、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 比例风险回归 用半参数比例风险模型估计治疗组风险比及置信区间,并可按随机分层因素分层或校正协变量。