lecture
website icon
勝算比
勝算比 2x2交叉表 2x2xK交叉表 泊松回歸 羅吉斯回歸 多項羅吉斯回歸 累積羅吉斯回歸 Bradley-Terry模型 配對模型
×
website icon 資料管理 統計分析 相關資源 巨人肩膀 語法索引 關於作者

簡介

本部分介紹比例檢定、相對風險與勝算比。使用到的指令包含:

Facebook Icon Twitter Icon LinkedIn Icon LINE Icon

比例檢定、相對風險、勝算比是進行類別資料分析時重要的概念,尤其在流行病學與醫療領域中,是最常使用的風險測量方法。主要是因為在醫療領域中,最常接觸到的就是二元的類別變數,例如確診與否、接種與否、發病與否等等。除了卡方分析之外,單純比較這些變數的百分比,可得到一個風險測量的數字,有助於初步評估風險大小。相對風險與勝算比就是一個最常用的技巧。

這些技巧主要來自於交叉表的計算。一個簡單的\(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倍的結論。