相对风险计算器
结果
相对危险度 RR
- 比值比 OR
- 1.7143
相对风险计算器比较的是一个结局在两组里各自发生了多少次。把每组的病例数和合计人数填进去,它给出风险比——暴露组的风险除以对照组的风险。等于 1 表示两组的发病风险一样,大于 1 表示暴露组更高,小于 1 表示更低。页面同时也给出比值比,因为很多研究报告的其实是它,而这两个数不是一回事。结局罕见时两者几乎相同,结局常见时就会分开:在结局频发的队列研究里,比值比可以比风险比大出一半,把一个当成另一个来读,是夸大结论的一条标准路径。两个数都来自同样那四个计数,而计数就摆在屏幕上,每一步都能手算核对。
公式
RR = (a / n₁) ÷ (c / n₂) OR = (a · d) / (b · c)
- a
- 暴露组里的病例数——既暴露于该因素、又发生了该结局的那些人。它既是第一个风险的分子,也是暴露组对比值比的贡献,所以同一组计数同时喂出两个答案
- n₁
- 暴露组的合计人数,病例加上非病例。风险是这个计数除以这个合计,所以同样三十个病例,在一百人里和在一万人里意思完全不同——风险比比较的是率,不是计数,而两组的规模正是让它们变得可比的东西
- c
- 非暴露组(对照组)里的病例数。有了 a 与 c,两个风险就能直接写出来,比值不过是它们的商。这个数为零时页面拒绝计算,而这次拒答是有意的:对照组一个病例都没有,风险就是零,除以它是无定义,而不是无穷大
- n₂
- 非暴露组的合计人数。两组的规模不必相等,实际上常常不等——队列研究随访的非暴露者可能远多于暴露者,而公式不需要任何调整就能处理,因为每个风险都是在各自组内算的
- b, d
- 两组各自的非病例数,由页面推出来而不是问你要。它们只出现在比值比里,其中 b = n₁ − a、d = n₂ − c。把它们推出来正是让四个输入无法自相矛盾的原因:四个自由格子可以描述出一张「病例数多于总人数」的表
手上是两组向前随访得到的计数、想要它们风险的比时用它——这就是队列研究专门用来估计的那个效应量。两个输出回答的是略有不同的问题,而选哪个通常由研究设计决定,不由偏好决定。风险比是两者中更好解释的那个:2 就是「暴露组的风险是两倍」,这句话不需要再解释。比值比则是病例对照研究能给出的那个,因为在那类研究里病例的比例是由研究者定下的,风险根本估不出来——只有比值比可以还原,而它同时也是 logistic 回归报出来的东西。结局罕见时两者足够接近,把比值比当风险比读不会有太大损害,而这正是那条常用简化的依据。结局常见时它们就分开了,而且方向始终一致:比值比离 1 更远,于是有害的暴露显得更有害、保护性的暴露显得更保护。页面从同一张表里把两个都算出来,就是为了让这道缝能被看见,而不是被假设掉。读的时候请把设计放在心上:关联不是因果,而这四个数里没有任何东西能区分「因果上的原因」与「只是恰好同行的一个标记」。
算例
默认情形:暴露组 100 人中 30 例,对照组 100 人中 20 例
- 暴露组的风险:30 / 100 = 0.30,也就是 30%
- 对照组的风险:20 / 100 = 0.20,也就是 20%
- 风险比:0.30 / 0.20 = 1.5——暴露组的风险是它的一倍半
- 非病例数由页面推出:b = 70、d = 80,于是比值比是 (30 × 80) / (70 × 20) = 2400 / 1400 = 1.7143
在一个如此常见的结局上,两个答案相差 14%,而把两个都看到正是页面把两个都算出来的理由。风险比说的是风险高 50%;比值比说的是赔率高 71%。两个都没错——它们是不同的量——但一份报告若把 1.71 说成「风险增加 71%」,就是把两者串了线,而这是读医学与社会科学结论时最常见的错误之一。另外注意两组规模相等并非必需,这里取相等只是为了让百分比好看。
关联更强时两个度量的差距被拉开
- 暴露组的风险:45 / 150 = 0.30
- 对照组的风险:15 / 150 = 0.10
- 风险比:0.30 / 0.10 = 3,三倍风险
- 比值比:(45 × 135) / (105 × 15) = 6075 / 1575 = 3.8571
风险比到了 3,比值比已经到 3.86,绝对差距从上一例的 0.21 拉到了接近一整个单位。这个模式是系统性的而不是偶然的:比值比总是离 1 更远,而且距离随关联强度和结局频次一起增大。这就是「结局罕见」那条经验法则值得记住的原因——它不是一个小技术附注,而是「赔率上升 286%」与「风险上升 200%」之间的差别。
一个与更低风险相关联的暴露
- 暴露组的风险:10 / 100 = 0.10
- 对照组的风险:25 / 100 = 0.25
- 风险比:0.10 / 0.25 = 0.4——风险下降 60%
- 比值比:(10 × 75) / (90 × 25) = 750 / 2250 = 0.3333,赔率下降 67%
小于 1 的方向也是同一套:比值比离 1 更远,于是暴露显得比实际更保护。无论用哪套说法,把「下降」讲清楚都值得花力气。风险比 0.4 的意思是风险下降了 60%,不是降到了 60%——随着比离 1 越来越远,这两种读法差得越来越快,而把它们混为一谈的报告,可以让一个不大的效应听起来很惊人,也可以反过来。
结局罕见,两个度量几乎重合
- 暴露组的风险:2000 / 100000 = 0.02,也就是 2%
- 对照组的风险:1000 / 100000 = 0.01,也就是 1%
- 风险比:0.02 / 0.01 = 2
- 比值比:(2000 × 99000) / (98000 × 1000) = 198000000 / 98000000 = 2.0204——与风险比相差不到 1%
「结局罕见」这条近似在这里是一个看得见的算术事实,而不是一条要背下来的规则。在 2% 的风险下,非病例压倒性地多于病例,拿非病例数作除数与拿组总人数作除数几乎是一回事,比值比于是塌到了风险比上。这两组的规模同时也是队列研究现实的形状——随访十万人、观察到两千个事件——而前面几个例子用的是小而整的数,为的是让百分比好读。
局限
页面返回一个比值,并且不对「暴露是否导致了结局」作任何主张。风险比 3 说的是暴露组的风险是三倍;它没说暴露制造了这份风险,而这四个计数也分不出因果与一个恰好同行的标记——经典情形是某个同时与暴露和结局都相关的变量。它还假定两组随访的时间一样长,或者计数已经换算到同一时期。发病是累积的,所以随访两年的组,病例数大约是其他条件相同但只随访一年的组的两倍,而输入里没有任何东西会透露这一点。零格子的那次拒答是有意的限制而不是疏漏:往每个格子里加一个小常数会让答案取决于一个凭空的半个人,页面选择停下来,好让使用者看见数据太薄。病例对照数据是最后一条边界。在那类设计里,研究者自己决定收集多少个病例,所以每组里病例所占的比例是抽样的产物,用那些计数算出来的风险比没有意义——比值比之所以能存活,是因为它是对称的,而这也正是病例对照研究报告比值比、而不报告风险比的原因。
常见问题
- 相对风险和比值比有什么区别?
- 相对风险是两个概率之比,比值比是两个赔率之比,而结局越常见,两者分得越开。风险是 30% 与 20% 时,风险比是 1.5 而比值比是 1.7143;风险是 2% 与 1% 时,两者分别是 2 与 2.0204。比值比总是离 1 更远,所以有害的暴露显得更有害,保护性的暴露显得更保护。结局罕见时差别可以忽略,这就是「把比值比当风险比读」那条著名的简化之所以成立的依据。那条简化对千分之一的疾病是安全的,对三个人里就有一个的结局是不安全的。
- 为什么对照组没有病例时页面拒绝计算?
- 因为那一组的风险是零,而风险比要除以它。有些软件的处理办法是往每个格子里加一个小数——Haldane–Anscombe 修正——但那会让答案取决于一个凭空造出来的半个人,而且在计数很小时结果动得很厉害,而计数小恰恰是这个问题会出现的时候。页面改为报错,好让底下的问题露出来:对照组的病例数为零时,数据没法从上方给出效应的界,任何有限的数都会是修正本身带来的产物而不是一个发现。唯一的真正补救是继续收集数据。
- 病例对照研究的数据能用这一页吗?
- 比值比可以,相对风险不行。在病例对照研究里,收多少个病例、多少个对照是研究者决定的,所以每组里病例所占的比例由抽样设计设定,而不是观测到的。这让两个风险作为估计量都失去意义——但比值比不受影响,因为它在病例与对照之间是对称的:把表的行与列对调,它不变。这正是病例对照研究报告比值比的原因,也是为什么用它们的计数算出来的风险比,尽管算术跑得通,却不能被解释。
- 相对风险正好等于 1 说明什么?
- 说明在这份样本里两组的风险一样,暴露与结局没有表现出关联。它不说明总体上没有关联——一份样本完全可能算出正好等于 1 的比(或者任何别的值),而真实的风险比并不等于它。围绕这个比值的置信区间就是为这件事准备的,也是只报点估计的研究不完整的原因。页面有意停在点估计与它那个同伴度量上:区间需要一个对数风险比的标准误,那是在同样的四个计数上再做一步计算,而不是换一种读法。
- 相对风险是 3,是不是说明我的风险变成三倍?
- 它说明这份研究里暴露组的风险是对照组的三倍。这个倍数是否意味着你自己的风险有很大变化,取决于基线风险,而比值本身不携带它。如果非暴露的风险是十万分之一,三倍之后是十万分之三,仍然很小;如果非暴露的风险是百分之一,三倍就是一个值得行动的差别。这就是相对风险与绝对风险的分野,也是为什么一项研究可以报出一个听起来惊人的比值,而对应的结局依然罕见。看到比值时,永远把两个底层风险一并要过来。
- 为什么四个输入是病例数与合计人数,而不是四个格子?
- 因为四个自由格子可以描述出一张不可能的表。如果页面分别问四个计数,那就没有任何东西能阻止使用者填出「同一组里 100 人中有 30 个病例、又有 70 个非病例」——一张各部分互相矛盾的表,它会毫无怨言地算下去,给出一个没有意义的数。问每组的病例数与合计人数,就固定了另外两个格子,于是比值比用到的非病例数永远与风险比用到的风险一致。代价是少一个输入框,换来的是「一张自相矛盾的表」在结构上无法被表达出来,而不只是「不太可能被填出来」。
参考资料
- GB/T 3358.1-2009《统计学词汇及符号 第1部分:一般统计术语与用于概率的术语》(推荐性国家标准,现行:2009-10-15 发布 / 2010-02-01 实施,采标;该站注明因涉及国际版权不提供在线阅读,全文需另寻) — 国家市场监督管理总局 国家标准全文公开系统
- 3.1 Terminology — Introductory Statistics 2e(英文原版;把概率当作长期频率,这正是每组风险的含义,也是两个风险之比得以成立的前提) — OpenStax(莱斯大学)
- 1.3.6.1. What is a Probability Distribution — e-Handbook of Statistical Methods(英文原版;计数除以组总人数就是一个被估出来的概率,以及这个估计自带的抽样波动) — 美国国家标准与技术研究院(NIST)