比较发病率

机器算法验证 r 泊松分布 流行病学 发病率比
2022-03-15 05:41:30

我想比较两组之间的发病率(一组没有疾病,一组有)。

我打算计算发病率比(IRR),即B组发病率/A组发病率,然后检验这个比率是否等于1,最后计算IRR的95% CI区间。

我在一本书(Rosner's Fundamentals of Biostatistics )中找到了一种计算 95% CI 的方法

exp[log(IRR)±1.96(1/a1)+(1/a2)]

在哪里a1a2是事件的数量。但是这种近似值仅适用于足够大的样本量,我认为我拥有的事件数量很小(也许对于总体比较来说还可以。)

所以我认为我应该使用另一种方法。

我使用 R 和exactci包,发现我可以使用poisson.test(). 但是这个函数有 3 种方法来定义两侧的 p 值:central、minlike 和 blaker。

所以我的问题是:

  1. 使用比较泊松率的检验比较两个发病率比率是否正确?

  2. 在使用来自 exactci 包的 R 中的 poisson.test 函数时,哪种方法最好?

exactci小插图

中心:是上面以 1 为界的单边 p 值最小值的 2 倍。“中心”这个名称的动机是相关的反演置信区间是中心区间,即它们保证真实参数小于α/2小于(大于)100(1-)的下(上)尾的概率α)% 置信区间。这被 Hirji (2006) 称为 TST(小尾法的两倍)。

minlike:是可能性小于或等于观察到的可能性的结果的概率之和。这被 Hirji (2006) 称为 PB(基于概率)方法。

blaker:将观察到的较小尾部的概率与不超过观察到的尾部概率的相反尾部的最小概率相结合。“blaker”这个名字是由 Blaker (2000) 提出的,它全面研究了相关的置信区间方法。这被 Hirji (2006) 称为 CT(组合尾)方法。

我的数据是:

Group A: 
Age group 1: 3 cases    in 10459 person yrs.   Incidence rate: 0.29 
Age group 2: 7 cases    in 2279 person yrs.    Incidence rate: 3.07
Age group 3: 4 cases    in 1990 person yrs.    Incidence rate: 2.01
Age group 4: 9 cases    in 1618 person yrs.    Incidence rate: 5.56
Age group 5: 11 cases   in 1357 person yrs.    Incidence rate: 8.11
Age group 6: 11 cases   in 1090 person yrs.    Incidence rate: 10.09
Age group 7: 9 cases    in 819 person yrs.     Incidence rate: 10.99
  Total:    54 cases in 19612 person yrs.      Incidence rate: 2.75

Group B: 
Age group 1: 3 cases    in 3088 person yrs.   Incidence rate: 0.97 
Age group 2: 1 cases    in 707 person yrs.    Incidence rate: 1.41
Age group 3: 2 cases    in 630 person yrs.    Incidence rate: 3.17
Age group 4: 6 cases    in 441 person yrs.    Incidence rate: 13.59
Age group 5: 10 cases   in 365 person yrs.    Incidence rate: 27.4
Age group 6: 6 cases   in 249 person yrs.    Incidence rate: 24.06
Age group 7: 0 cases    in 116 person yrs.     Incidence rate: 0
  Total:    28 cases in 5597 person yrs.      Incidence rate: 5.0
3个回答

几个想法:

首先,您建议的比较 - A 和 B 之间的事故率 - 目前不以任何协变量为条件。这意味着 A 组的事件数为 54,B 组的事件数为 28。这对于通常基于大样本的置信区间方法来说已经绰绰有余了。

其次,即使您打算调整年龄的影响,而不是计算每个组的比率,使用回归方法可能会更好。通常,如果您按变量的多个级别进行分层,则与回归方程相比会变得相当麻烦,回归方程会在控制年龄的同时为您提供 A 和 B 的比率。我相信标准方法仍然适用于您的样本量,但如果您担心它,您可以使用glmperm 之类的方法。

数据中每组的发病率只是独立伯努利 (0/1) 变量总和的平均值 - 每个患者都有自己的变量,其值为 0 或 1,您将它们相加并取平均值,即是发病率。

I 大样本(并且您的样本很大),均值将呈正态分布,因此您可以使用简单的 z 检验来测试两个比率是否不同。

在 R 中,看看 prop.test:http ://stat.ethz.ch/R-manual/R-patched/library/stats/html/prop.test.html

如果您想充分利用数据,请尝试查看 A 组和 B 组之间的发病率分布是否不同。为此,独立性检验可能会奏效,例如 G 的卡方-测试:http : //udel.edu/~mcdonald/statchiind.html

确保样本足够大的唯一方法(或者正如 Charlie Geyer 所说的那样 - 你实际上处于非对称状态)是进行大量的蒙特卡洛模拟,或者如 EpiGard 建议的那样使用 glmperm 之类的东西。

至于哪种方法在精确中是最好的,这里没有最好的——或者正如费舍尔过去所说的那样

最适合什么?

Michael Fay在这里提供了一些澄清