1. 程式人生 > >迴歸模型中的啞變數

迴歸模型中的啞變數

在構建迴歸模型時,如果自變數X為連續性變數,迴歸係數β可以解釋為:在其他自變數不變的條件下,X每改變一個單位,所引起的因變數Y的平均變化量;如果自變數X為二分類變數,例如是否飲酒(1=是,0=否),則迴歸係數β可以解釋為:其他自變數不變的條件下,X=1(飲酒者)與X=0(不飲酒者)相比,所引起的因變數Y的平均變化量。

但是,當自變數X為多分類變數時,例如職業、學歷、血型、疾病嚴重程度等等,此時僅用一個迴歸係數來解釋多分類變數之間的變化關係,及其對因變數的影響,就顯得太不理想。

此時,我們通常會將原始的多分類變數轉化為啞變數,每個啞變數只代表某兩個級別或若干個級別間的差異,通過構建迴歸模型,每一個啞變數都能得出一個估計的迴歸係數,從而使得迴歸的結果更易於解釋,更具有實際意義。

啞變數

啞變數(Dummy Variable),又稱為虛擬變數、虛設變數或名義變數,從名稱上看就知道,它是人為虛設的變數,通常取值為0或1,來反映某個變數的不同屬性。對於有n個分類屬性的自變數,通常需要選取1個分類作為參照,因此可以產生n-1個啞變數。

將啞變數引入迴歸模型,雖然使模型變得較為複雜,但可以更直觀地反映出該自變數的不同屬性對於因變數的影響,提高了模型的精度和準確度。

舉一個例子,如職業因素,假設分為學生、農民、工人、公務員、其他共5個分類,其中以“其他職業”作為參照,此時需要設定4啞變數X1-X4,如下所示:

X1=1,學生;X1=0,非學生;

X2=1,農民;X2=0,非農民;

X3=1,工人;X3=0,非工人;

X4=1,公務員;X4=0,非公務員;

那麼對於每一種職業分類,其賦值就可以轉化為以下形式:

什麼情況下需要設定啞變數

1. 對於無序多分類變數,引入模型時需要轉化為啞變數

舉一個例子,如血型,一般分為A、B、O、AB四個型別,為無序多分類變數,通常情況下在錄入資料的時候,為了使資料量化,我們常會將其賦值為1、2、3、4。

從數字的角度來看,賦值為1、2、3、4後,它們是具有從小到大一定的順序關係的,而實際上,四種血型之間並沒有這種大小關係存在,它們之間應該是相互平等獨立的關係。如果按照1、2、3、4賦值並帶入到迴歸模型中是不合理的,此時我們就需要將其轉化為啞變數。

2. 對於有序多分類變數,引入模型時需要酌情考慮

例如疾病的嚴重程度,一般分為輕、中、重度,可認為是有序多分類變數,通常情況下我們也常會將其賦值為1、2、3(等距)或1、2、4(等比)等形式,通過由小到大的數字關係,來體現疾病嚴重程度之間一定的等級關係。

但需要注意的是,一旦賦值為上述等距或等比的數值形式,這在某種程度上是認為疾病的嚴重程度也呈現類似的等距或等比的關係。而事實上由於疾病在臨床上的複雜性,不同的嚴重程度之間並非是嚴格的等距或等比關係,因此再賦值為上述形式就顯得不太合理,此時可以將其轉化為啞變數進行量化。

3. 對於連續性變數,進行變數轉化時可以考慮設定為啞變數

對於連續性變數,很多人認為可以直接將其帶入到迴歸模型中即可,但有時我們還需要結合實際的臨床意義,對連續性變數作適當的轉換。例如年齡,以連續性變數帶入模型時,其解釋為年齡每增加一歲時對於因變數的影響。但往往年齡增加一歲,其效應是很微弱的,並沒有太大的實際意義。

此時,我們可以將年齡這個連續性變數進行離散化,按照10歲一個年齡段進行劃分,如0-10、11-20、21-30、31-40等等,將每一組賦值為1、2、3、4,此時構建模型的迴歸係數就可以解釋為年齡每增加10歲時對因變數的影響。

以上賦值方式是基於一個前提,即年齡與因變數之間存在著一定的線性關係。但有時候可能會出現以下情況,例如在年齡段較低和較高的人群中,某種疾病的死亡率較高,而在中青年人群中,死亡率卻相對較低,年齡和死亡結局之間呈現一個U字型的關係,此時再將年齡段賦值為1、2、3、4就顯得不太合理了。

因此,當我們無法確定自變數和因變數之間的變化關係,將連續性自變數離散化時,可以考慮進行啞變數轉換。

還有一種情況,例如將BMI按照臨床診斷標準分為體重過低、正常體重、超重、肥胖等幾種分類時,由於不同分類之間劃分的切點是不等距的,此時賦值為1、2、3就不太符合實際情況,也可以考慮將其轉化為啞變數。

如何選擇啞變數的參照組

在上面的內容中我們提到,對於有n個分類的自變數,需要產生n-1個啞變數,當所有n-1個啞變數取值都為0的時候,這就是該變數的第n類屬性,即我們將這類屬性作為參照。

例如上面提到的以職業因素為例,共分為學生、農民、工人、公務員、其他共5個分類,設定了4啞變數,其中職業因素中“其它”這個屬性,每個啞變數的賦值均為0,此時我們就將“其它”這個屬性作為參照,在最後進行模型解釋時,所有類別啞變數的迴歸係數,均表示該啞變數與參照相比之後對因變數的影響。

在設定啞變數時,應該選擇哪一類作為參照呢?

1. 一般情況下,可以選擇有特定意義的,或者有一定順序水平的類別作為參照

例如,婚姻狀態分為未婚、已婚、離異、喪偶等情況,可以將“未婚”作為參照;或者如學歷,分為小學、中學、大學、研究生等類別,存在著一定的順序,可以將“小學”作為參照,以便於迴歸係數更容易解釋。

2. 可以選擇臨床正常水平作為參照

例如,BMI按照臨床診斷標準分為體重過低、正常體重、超重、肥胖等類別,此時可以選擇“正常體重”作為參照,其他分類都與正常體重進行比較,更具有臨床實際意義。

3. 還可以將研究者所關注的重點類別作為參照

例如血型,分為A、B、O、AB四個型別,研究者更關注O型血的人,因此可以將O型作為參照,來分析其他血型與O型相比後對於結局產生影響的差異。

下面我們將結合SPSS軟體,向大家介紹在迴歸模型中何如實現啞變數的設定,並對引入啞變數後的模型結果進行解讀

Logistic /Cox迴歸

在SPSS中,Logistic迴歸和Cox迴歸設定啞變數的方式是一致的,因此本文以Logistic迴歸為例進行說明。

一、研究例項

某研究人員擬探討不同種族人群中某疾病發病風險有無差異,收集了4種不同種族人群的相關資料資料(1=Black美國黑人,2=White美國白人,3=Indian美國印第安人,4=Asian亞裔美國人)。

根據資料型別判斷,種族為無序多分類資料,需要將種族轉化為啞變數後,進行Logistic迴歸。

二、SPSS操作

1. Analyze → Regression → Binary Logistic,進入到Logistic迴歸模組

2. 將Event選入Dependent框中,將Gender、Age、Race選入Covariates框中

3. 點選Categorical進入定義分類變數的對話方塊,將需要轉化的變數Race選入Categorical Covariates框中,點選Contrast旁的下拉框選擇Indicator,Reference Category設定為First,即設定第一個分類為參照。

在本次研究中,Race=1為黑人,即我們選擇黑人作為參照。最後再點選Change確認更改為Race(Indicator(first))。

在選擇啞變數編碼方式時,Contrast下拉選項一共提供了7種編碼方式:

(1) Indicator(指示對比):用於指定某一分類為參照,指定的參照取決於Reference Category中選擇Last還是First,即只能以該變數的第一類或者最後一類作為參照。Indicator為預設方法,也是我們最常用的設定參照類的方法

(2) Simple(簡單對比): Simple和Indicator兩個方法雖然引數編碼不同,但其實質是一樣的,均為各分類分別與參照進行相比。

(3) Difference(差異對比):即該分類變數的某個分類,與前面所有分類的平均值進行比較,此法與Helmert法相反,因此也叫做反Helmert法。此選項常用於有序分類變數。

(4) Helmert(赫爾默特對比):即該分類變數的某個分類,與其後面所有分類的平均值進行比較,同樣也適用於有序分類變數。

(5) Repeated(重複對比):即該分類變數的各個分類,均與前面相鄰的一個分類進行比較,此時前一分類為參照。

(6) Polynomial(多項式對比):它假設各個分類間隔是等距的,只能用於數值型的變數。(注意:如果此時原始變數為字元型,例如A、B、C、D,在SPSS中使用該方法時它會提示Polynomial contrasts may not be specified for string variables。而對於其他6種方法是允許原始變數是字元型,SPSS可以將其自動轉化為0或1形式的啞變數。)

(7) Deviation(偏差對比):即除參照外,其餘每一個分類都與總體水平相比,此時每個分類的迴歸係數都是相對於總體水平而言的改變數。

4. 點選Continue回到主對話方塊,再點選OK完成操作。

三、結果解讀

1. 結果顯示, SPSS將 Race自動轉化為3個啞變數,分別為Race(1) (2) (3),代表白人、印第安人和亞裔人,參照為黑人。在α=0.05的檢驗水準下,Race(1) (2) (3) 迴歸係數檢驗P值均<0.05,提示白人、印第安人和亞裔種族某疾病的發生風險均與黑人種族之間存在統計學差異。

2. 白人、印第安人和亞裔相對於黑人種族,其OR值和95% CI分別為0.247(0.102, 0.598)、0.181(0.070, 0.466)、0.132(0.049, 0.357),提示白人、印第安人和亞裔人中該疾病的發生風險均顯著低於黑人種族。

多重線性迴歸

針對多重線性迴歸,SPSS並沒有直接的選項來幫助我們設定啞變數,我們需要通過重新編碼的方式,手動將其轉換為啞變數。

一、研究例項

仍然以上面的研究例項進行介紹,某研究人員擬探討不同種族人群中BMI有無差異,收集了4種不同種族人群的相關資料資料(1=Black美國黑人,2=White美國白人,3=Indian美國印第安人,4=Asian亞裔美國人)。

根據資料型別判斷,種族為無序多分類資料,需要將種族轉化為啞變數後,進行多重線性迴歸。

二、SPSS操作

1. Transform → Recode into Different Variables

將需要轉換為啞變數的Race因素選入Numeric Variable->Output Variable框中,在Name框中輸入轉變的第一個啞變數名字Race1,並點選Change進行命名

2. 點選Old and New Values進入重新編碼的對話方塊

在Old Value中的Value框中填寫1,在New Value中的Value框中填寫1,並點選Add新增,得到1->1。

然後選擇Old Value中的All other values,在New Value中的Value框中填寫0,並點選Add新增,得到ELSE->0

上述步驟表示將原有變數Race中第1分類,在啞變數Race1中賦值為1,將其他所有分類在啞變數Race1中賦值為0。

按照同樣的方法,我們可以生成Race2和Race3,共3個啞變數。如果覺得生成3個啞變數很麻煩,我們可以進入程式編輯頁面,編寫一條簡單的程式進行重新編碼賦值,如下圖所示。

賦值完成後,我們就可以在資料檢視介面看到新生成的3個啞變數。啞變數生成好後,我們就可以開始進行多重線性迴歸了。

3. Analyze → Regression → Linear

將BMI選入Dependent框中,將Race1、Race2、Race3、Gender和Age一同選入Independent(s)框中,Method選擇Enter法,點選OK完成操作。

三、結果解讀

1. 我們通過重新編碼將Race轉化為3個啞變數,分別為Race1、2、3,代表黑人、白人和印第安人,此時參照為亞裔人。在α=0.05的檢驗水準下,Race1、2、3迴歸係數檢驗P值均<0.05,提示黑人、白人和印第安人的BMI均與亞裔人之間存在統計學差異。

2. 黑人、白人和印第安人與亞裔人相比,其β值和95% CI分別為1.543(0.163, 2.923)、2.331(0.996, 3.665)、1.585(0.208, 2.963),提示黑人、白人和印第安人的BMI要顯著高於亞裔人。

設定啞變數時的注意事項

1. 原則上啞變數在模型中應同進同出,也就是說在一個模型中,如果同一個分類變數的不同啞變數,出現了有些啞變數有統計學顯著性,有些無統計學顯著性的情況下,為了保證所有啞變數代表含義的正確性,應當在模型中納入所有的啞變數。

因此,我們在引入啞變數進入模型時,需選擇Enter強制進入法,以保證所有啞變數都能保留在最後的模型中。

2. 上一期內容中我們介紹瞭如何選擇參照,但需要注意的是,被選為參照的那一類分組,應該保證有一定的樣本量。如果參照組樣本量太少,則將會導致其他分類與參照相比時,引數估計的標準誤較大,可信區間較大,精度降低,會出現估計引數極大或極小的現象。