1
臺北醫學大學生物統計研究中心 eNews 第 31 期
R 軟體資料分析應用:相對風險、勝算比與邏輯斯迴歸分析
林怡諄 副統計分析師
本期 eNews 與各位討論如何使用 R 進行相對風險、勝算比與邏輯斯迴歸分
析。相對風險(Relative Risk)與勝算比(Odds Ratio)是流行病學與醫療領域之中經 常使用的風險測量方式,透過列聯表的方式,通常計算暴露於某種情況下,罹患 特定疾病的風險;而透過邏輯斯迴歸分析,我們能夠估計風險因子與特定疾病間
的風險關係。以下我們就逐一進行介紹並說明R 程式步驟。
一、相對風險(Relative Risk)與勝算比(Odds Ratio)
(一) 相對風險(Relative Risk) 相對風險用於前瞻性研究(Prospective Study),觀察目前暴露某種影響因子的 情況下,追蹤未來罹患特定疾病的風險。我們可透過簡單的 2 × 2 列聯表來呈現 上述風險情況,並計算暴露於(未暴露於)風險因子的疾病發生率(Incident Rate), 進一步推算其相對風險。 舉例而言,我們現在欲討論美國4 個城市居民暴露於高血壓(HYPERTENSION) 罹患心血管疾病(CVD)的風險,下表為示範資料格式,資料變數包含居民編碼(ID)、 性別(GENDER)、年齡分組(AGE)、種族(RACE)、居住城市(CITY)、心血管疾病 (CVD)、高血壓(HYPERTENSION)。
ID GENDER AGE RACE CITY CVD HYPERTENSION 1 male 41-50 White Boston no no 2 female 41-50 Black Detroit no no 3 male 41-50 Black Boston no no 4 male <=40 Black Newyork no no 5 female 41-50 Black Newyork no yes 6 male 41-50 Black Detroit no no 7 male >=60 White LA yes yes
2
8 female 41-50 Black Boston no no 9 female 41-50 Black Boston no no 10 female 51-60 Black Newyork no no
… … … …
960 female 51-60 Black Newyork no no 961 male <=40 Black Boston no no 962 male 41-50 Black Detroit no no 963 male 51-60 Black Newyork no no 964 male 41-50 Black Detroit no no 965 male 41-50 Black Newyork no no 966 female <=40 Black Newyork yes yes
首先,我們先編制2 × 2 列聯表來呈現高血壓與心血管疾病的關係,透過統 計上表找出「是否高血壓」以及「是否罹患CVD」的次數,編表如下所示: CVD HYPERTENSION YES NO YES 40 (a) 81 (b) NO 11 (c) 834 (d) 51 (N1) 915 (N2) 再者,暴露於高血壓的CVD 發生率,為 𝑎 𝑎+𝑏 = 40 40+81= 33.06%,而未暴露於高血 壓的CVD 發生率為 𝑐 𝑐+𝑑 = 11 11+834= 1.30%,進一步計算相對風險(Relative Risk)為 𝑎 𝑎+𝑏 𝑐 𝑐+𝑑 = 33.06% 1.30% = 25.39。 (二) 勝算比(Odds Ratio) 勝算比可用於前瞻性研究與回溯性研究,勝算比的定義是指兩個機率相除所 得到的比值,在此,沿用上面的範例資料求算勝算比,罹患CVD 組有暴露在高 血 壓(HYPERTENSION) 的 機 率 為 a/c , 而 未 罹 患 CVD 組 有 暴 露 在 高 血 壓 (HYPERTENSION)的機率為 b/d,在此,我們討論「"罹患 CVD 組"相對於"未罹 患CVD 組",暴露於高血壓的機率比值」,即為勝算比。 因此,上述範例之勝算比(OR),如下所示:
3 OR =[(𝑎/𝑁1)/(𝑐/𝑁1)] [(𝑏/𝑁2)/(𝑑/𝑁2)]= 𝑎/𝑐 𝑏/𝑑 = 𝑎𝑑 𝑏𝑐 = 40 × 834 81 × 11 = 37.44 此一勝算比的解釋與相對風險不同,在此,勝算比是指「罹患CVD 組」有 高血壓的勝算比是「未罹患 CVD 組」的 37.44 倍,是機率比值。我們可以從勝 算比得知高血壓與心血管疾病具有高度相關性,換言之,暴露於高血壓者較易罹 患心血管疾病,但是勝算比的數值並非多少倍的風險或是機率概念。 (三) 相對風險與勝算比之 R 程式語法 1. 完整程式列表
4 2. 程式與結果說明 [第一部分] 建立基本列聯表 <語法> 使用table 指令,將資料檔的 HYPERTENSION 與 CVD 等兩個變數資 料,建立一個基本的列聯表。 <結果> [第二部分] 建立完整列聯表 <語法>
重新建構列聯表,將「HYPERTENSION = yes」與「CVD = yes」放在表
格首欄與首列。首先,擷取 TAB1 表格資訊,分別建立 a,b,c,d 四個數值
變數,而EXP 變數為列名稱為(EXPOSES, NON-EXPOSED),OUTC 為欄
名稱為(DISEASE, NON-DISEASE),並建立 TAB2 的 2 by 2 矩陣資料,再
透過dimnames 將正確欄名稱與列名稱放入列聯表。
5 [第三部分] 計算基本的 RR 與 OR <語法> 根據相對風險與勝算比公式,可以計算出 Relative_Risk 變數,為相對風 險值;而Odds_Risk 變數,為勝算比值。 <結果> [第四部分] 使用 epiR PACKAGE,計算 RR 與 OR ,並計算 95%信賴區間 <語法> 我們使用R PACKAGE--「epiR」,建構高血壓與新血管疾病的列聯表,並 且求算RR 與 OR,與其信賴區間。
首先,使用install.package 指令,安裝「epiR」package,再使用 library 指
令呼叫「epiR」package。
再者,我們使用 epi.2by2 指令,將 TAB2 所內含的高血壓與新血管疾病
之次數資料,建構列聯表與其RR 以及 OR 數值。其中可透過 method 調
整列聯表格式,epi.2by2 指令提供四種方式「cohort.count」、「case.control」、 「cross.sectional」、「outcome = as.columns」,這裡為前瞻式研究,故選擇 「cohort.count」。此外,也可以透過 conf.level 的設定來調整信賴區間的 顯著水準。
6 <結果> 由以上程式分析結果,相對風險為第一個紅框所示,在結果表標註為Inc risk ratio 即為相對風險值,與上述直接計算值相同,RR 為 25.39,這裡提 供了信賴區間,為(13.40, 48.14)。而勝算比為第二個紅框所示,標註為 Odds ratio,亦與直接計算值相同,為 37.44,其信賴區間為(18.50, 75.79)。 二、邏輯斯迴歸分析 (Logistic Regression) 若是我們所關心的解釋變數為二元類別變數,延續上面範例,「罹患心血管 疾病與否」這個變數即為二元類別變數,而年齡、性別、是否高血壓、種族、居 住城市等其他變數,則為可能的風險影響因子。在流行病學與醫學領域的模型分 析方法,我們常用邏輯斯迴歸來討論心血管疾病與其他風險因子的關係。 為何不使用一般線性模型來估計心血管疾病與其他風險因子的關係,主要是 因為線性模型在估計解釋變數為二元類別情況(Y= 0/1)時,估計完畢後進行預測 時,在解釋變數的某些特定數值之下,可能會使得解釋變數的平均數不在(0,1)區 間。而邏輯斯迴歸可以避免此一情況產生,使得預測值介於0 與 1 之間,使得其 估計結果較為準確。 假設 Y 為二元類別變數,代表罹患心血管疾病與否,而其他風險變數設為 X,如年齡、性別、高血壓…等,則罹患心血管疾病的條件機率為
7 𝜋𝐶𝑉𝐷 = P(Y = 1|X) = 𝑒𝑓(𝑥) 1+𝑒𝑓(𝑥),其中 𝑓(𝑥) = 𝛽0+ 𝛽1𝑥1+ ⋯ + 𝛽𝑘𝑥𝑘 而沒有罹患心血管疾病的條件機率為 𝜋𝑛𝑜𝑛𝐶𝑉𝐷 = 1 − P(Y = 1|X) = 1 1+𝑒𝑓(𝑥) 根據勝算比的定義為兩個機率的比值,如下所示 𝜋𝐶𝑉𝐷 𝜋𝑛𝑜𝑛𝐶𝑉𝐷 = 𝑒𝑓(𝑥) 1 + 𝑒𝑓(𝑥) 1 1 + 𝑒𝑓(𝑥) = 𝑒𝑓(𝑥)= e𝛽0+𝛽1𝑥1+⋯+𝛽𝑘𝑥𝑘 將上式取對數後,可得以下方程式 log ( 𝜋𝐶𝑉𝐷 𝜋𝑛𝑜𝑛𝐶𝑉𝐷 ) = log ( P(Y = 1|X) 1 − P(Y = 1|X)) = 𝛽0+ 𝛽1𝑥1+ ⋯ + 𝛽𝑘𝑥𝑘 我們可藉由最大概似估計法進行係數估計,得到以上的係數值(𝛽0 , 𝛽1 ,…, 𝛽𝑘)。然而,以上為係數估計值,而非我們所常見的勝算比,因此,將係數估計值 取對數後,即為勝算比。 (三) 邏輯斯迴歸之 R 程式語法 1. 完整程式列表
8 2. 程式與結果說明 [第一部分] 邏輯斯模型之估計 <語法> 首先,我們使用glm 指令來進行 logistic regression 估計,解釋變數為 CVD, 被解釋變數為 HYPERTENSION+AGE+RACE+CITY,並且設定分配為 binomial (family=”binomial”)。 再者,使用summary 指令,將估計結果彙整顯示。 <結果> 紅框內為估計係數的結果,由於HYPERTENSION 與 RACE 為二元變數,
在此,分別取HYPERTENSION = no 與 RACE =Black 作為參考組,故結
果 只 有 顯 示 HYPERTENSION = yes (HYPERTENSIONyes) 與 RACE =White (RACE White),係數分別為 3.5443 以及 0.1404,觀看 P 值(Pr(<|Z|)), HYPERTENSIONyes 的 P 值為 2e-16 < 0.05,其係數顯著。
9
而AGE 與 CITY 亦為類別變數,且均為 4 組,在此,R 程式選擇 AGE<=40
作為參考組,CITY=Boston 為參考組,分別對應其餘 3 組。觀看結果,LA
相對於Boston 為 CVD 的罹患風險顯著較高。
[第二部分] 邏輯斯模型之勝算比與信賴區間
<語法>
透過 coef 與 confint 指令獲得邏輯斯迴歸係數與信賴區間,並且使用 exp
指令將迴歸係數與信賴區間取指數(exponential),再使用 cbind 指令將勝算 比與其信賴區間合併顯示。 <結果> 以上 R 執行結果,OR 為勝算比,2.5%為信賴區間下界,97.5%為信賴區 間上界,整體為 95% 信賴區間。紅框為暴露於高血壓相對於未有高血壓 者罹患心血管疾病的勝算比(OR)為 34.6166,其信賴區間為(16.6162-78.1759),表示其勝算比顯著高於 1。此一勝算比有經過其他風險因子調整 過,是為考量其他風險因子情況之下,所獲得之勝算比,與之前單純計算 高血壓與心血管疾病的列聯表而得的勝算比有所差異。 以上為本期生統eNEWs 的內容,介紹如何使用 R 計算相對風險與勝算比, 並使用邏輯斯迴歸分析,得到考量其他因子的調整勝算比,希望本期eNEWs 能 夠提供大家對於R 分析操作之參考。