比例檢定、相對風險、勝算比是進行類別資料分析時重要的概念,尤其在流行病學與醫療領域中,是最常使用的風險測量方法。主要是因為在醫療領域中,最常接觸到的就是二元的類別變數,例如確診與否、接種與否、發病與否等等。除了卡方分析之外,單純比較這些變數的百分比,可得到一個風險測量的數字,有助於初步評估風險大小。相對風險與勝算比就是一個最常用的技巧。
這些技巧主要來自於交叉表的計算。一個簡單的\(2\times2\)交叉表長得像下面這樣。
陽性 | 陰性 | 小計 | |
已接種 | \(a\) | \(b\) | \(R_{1}=a+b\) |
未接種 | \(c\) | \(d\) | \(R_{2}=c+d\) |
小計 | \(C_{1}=a+c\) | \(C_{2}=b+d\) | \(T\) |
根據發表在BMJ上的論文Effectiveness of the Pfizer-BioNTech and Oxford-AstraZeneca vaccines on covid-19 related symptoms, hospital admissions, and mortality in older adults in England: test negative case-control study,我們直接將內文Table 1的稍作修改套用到\(2\times2\)交叉表:
陽性 | 陰性 | 小計 | |
已接種 | \(a=32832\) | \(b=106037\) | \(R_{1}=138869\) |
未接種 | \(c=11758\) | \(d=6303\) | \(R_{2}=18061\) |
小計 | \(C_{1}=44590\) | \(C_{2}=112340\) | \(T=156930\) |
相對風險
相對風險(relative risk),有些人稱為風險比(risk ratio),指的都是相同的概念,也就是兩個組別發生某事件的比值。通常要衡量的風險放在分子,對照組放在分母。在流行病學中指的是暴露群體與未暴露群體發生某事件的比值,計算公式為:
\[RR=\dfrac{\cfrac{a}{a+b}}{\cfrac{c}{c+d}}\]
從公式上很容易理解當RR=1的時候,表示兩組之間的風險沒有差異;當RR>1的時候,也就是分子比分母大,表示暴露組發生某事件的風險大於對照組。反之,則表示暴露組發生某事件的風險小於對照組。以上面\(2 \times 2\)交叉表為例,我們可以比較已接種與未接種疫苗發生PCR陽性的風險,來衡量疫苗接種的防疫效果。
PCR陽性但已接種的風險=
\(\dfrac{32832}{138869}\)=23.6%
PCR陽性但未接種的風險=
\(\dfrac{11758}{18061}\)=65.1%
所以\(RR=\dfrac{23.6\%}{65.1\%}\)=36.3%
相對風險小於1,在概念上可以理解為打過疫苗發生染疫的風險較低。
epitools套件中的riskratio()一樣可以計算相對風險,不過要注意的是riskratio()預設的計算公式是:\(\frac{\cfrac{d}{c+d}}{\cfrac{b}{a+b}}\),所以要透過rev="both"參數,把表格的列與欄交換位置。
> vaccine<-matrix(c(32832,106037,11758,6303), ncol=2, byrow=TRUE, dimnames=list(c("Vaccinated","Unvaccinated"), c("Positive", "Negative")))
> riskratio(vaccine, rev="both")
$data
Negative Positive Total
Unvaccinated 6303 11758 18061
Vaccinated 106037 32832 138869
Total 112340 44590 156930
$measure
NA
risk ratio with 95% C.I. estimate lower upper
Unvaccinated 1.000000 NA NA
Vaccinated 0.363162 0.3580199 0.3683779
$p.value
NA
two-sided midp.exact fisher.exact chi.square
Unvaccinated NA NA NA
Vaccinated 0 0 0
$correction
[1] FALSE
attr(,"method")
[1] "Unconditional MLE & normal approximation (Wald) CI"
我們也可以透過比例檢定,以prop.test()檢定實驗組與對照組的比例是否有顯著差異。
> vaccine
Positive Negative
Vaccinated 32832 106037
Unvaccinated 11758 6303
> margin.table(vaccine,1)
Vaccinated Unvaccinated
138869 18061
已接種至少一劑Oxford-AstraZeneca或Pfizer-BioNTech疫苗的人共有138869人,完全未接種的共有18061人。prop.test()比例檢定結果如下:
> jab<-c(138869,18061)
> case<-c(32832,11758)
> prop.test(case, jab)
2-sample test for equality of proportions with continuity correction
data: case out of jab
X-squared = 13504, df = 1, p-value < 2.2e-16
alternative hypothesis: two.sided
95 percent confidence interval:
-0.4219249 -0.4072586
sample estimates
prop 1 prop 2
0.2364243 0.6510160
從比例檢定的輸出報表也可以看到,確診者當中打過疫苗的風險有23.6%,確診者中沒打過疫苗的風險有65.1%,兩者的差異達到統計顯著。
勝算比
勝算比(odds ratio)是另一種衡量實驗組與對照組的方法,它的概念比相對風險複雜一些,但也不是很難理解。所謂勝算(odds)指的是「發生的機率」,也就是贏的機率;反之則是輸的機率。所以勝算比就是發生機率(贏的機率)與未發生機率(輸的機率)的比值。至於何謂發生(贏),則可以由研究者自行定義。一般來說勝算比的公式如下:
\[OR=\frac{事件發生的機率}{事件未發生的機率}\]
\[OR=\dfrac{\cfrac{b}{R_{1}}}{\cfrac{a}{R_{1}}} \div \dfrac{\cfrac{d}{R_{2}}}{\cfrac{c}{R_{2}}}=\dfrac{b}{a} \div \dfrac{d}{c} = \dfrac{bc}{ad}\]
經過化簡後,勝算比其實等於\(2 \times 2\)交叉表中,細格交叉相乘的比值。所以勝算比又被稱為交叉乘積比(cross-product ratio)。勝算比的概念很容易計算疫苗的效果,例如想知道已接種疫苗與未接種疫苗對於會不會染疫的勝算,從上述\(2 \times 2\)交叉表,可以計算兩者的勝算以及勝算比:
在所有已接種的人當中,未染疫的勝算=\(\dfrac{\cfrac{106037}{138869}}{\cfrac{32832}{138869}}\)=3.230
在所有未接種的人當中,未染疫的勝算=\(\dfrac{\cfrac{6303}{18061}}{\cfrac{11758}{18061}}\)=0.536
所以\(OR=\frac{3.230}{0.536}=6.026\),已接種疫苗的人未染疫的勝算,是沒有接種疫苗的人的6倍。我們一樣也可以利用epitools套件中的oddsratio()來計算:
> library(epitools)
> oddsratio(vaccine)
$data
Positive Negative Total
Vaccinated 32832 106037 138869
Unvaccinated 11758 6303 18061
Total 44590 112340 156930
$measure
NA
odds ratio with 95% C.I. estimate lower uppe
Vaccinated 1.0000000 NA NA
Unvaccinated 0.1659935 0.1605612 0.1715463
$p.value
NA
two-sided midp.exact fisher.exact chi.square
Vaccinated NA NA NA
Unvaccinated 0 0 0
$correction
[1] FALSE
attr(,"method")
[1] "Unconditional MLE & normal approximation (Wald) CI"
oddsratio()是以接種疫苗染疫當作基準點,把\(\frac{1}{0.1659}\)就可以獲得6倍的結論。