1.虛擬變量
定義:虛擬變量(Dummy Variable) 也叫啞變量,它算不上一種變量類型,確切地說,是將多分類變量轉換為二分類變量的一種形式。如果數據為定類數據,比如專業、性別等,其數字僅代表類別,數字大小並沒有意義,此時可以考慮引入啞變量,將不能夠定量處理的變量量化,再進行分析。
2.什么情況下需要設置虛擬變量
2.1對於無序多分類變量
舉一個例子,如血型,一般分為A、B、O、AB四個類型,為無序多分類變量,通常情況下在錄入數據的時候,為了使數據量化,我們常會將其賦值為1、2、3、4。
從數字的角度來看,賦值為1、2、3、4后,它們是具有從小到大一定的順序關系的,而實際上,四種血型之間並沒有這種大小關系存在,它們之間應該是相互平等獨立的關系。如果按照1、2、3、4賦值並帶入到回歸模型中是不合理的,此時我們就需要將其轉化為啞變量。
2.2對於有序多分類變量
例如疾病的嚴重程度,一般分為輕、中、重度,可認為是有序多分類變量,通常情況下我們也常會將其賦值為1、2、3(等距)或1、2、4(等比)等形式,通過由小到大的數字關系,來體現疾病嚴重程度之間一定的等級關系。
但需要注意的是,一旦賦值為上述等距或等比的數值形式,這在某種程度上是認為疾病的嚴重程度也呈現類似的等距或等比的關系。而事實上由於疾病在臨床上的復雜性,不同的嚴重程度之間並非是嚴格的等距或等比關系,因此再賦值為上述形式就顯得不太合理,此時可以將其轉化為啞變量進行量化。
2.3對於連續性變量
對於連續性變量,很多人認為可以直接將其帶入到回歸模型中即可,但有時我們還需要結合實際的臨床意義,對連續性變量作適當的轉換。例如年齡,以連續性變量帶入模型時,其解釋為年齡每增加一歲時對於因變量的影響。但往往年齡增加一歲,其效應是很微弱的,並沒有太大的實際意義。
此時,我們可以將年齡這個連續性變量進行離散化,按照10歲一個年齡段進行划分,如0-10、11-20、21-30、31-40等等,將每一組賦值為1、2、3、4,此時構建模型的回歸系數就可以解釋為年齡每增加10歲時對因變量的影響。
以上賦值方式是基於一個前提,即年齡與因變量之間存在着一定的線性關系。但有時候可能會出現以下情況,例如在年齡段較低和較高的人群中,某種疾病的死亡率較高,而在中青年人群中,死亡率卻相對較低,年齡和死亡結局之間呈現一個U字型的關系,此時再將年齡段賦值為1、2、3、4就顯得不太合理了。
因此,當我們無法確定自變量和因變量之間的變化關系,將連續性自變量離散化時,可以考慮進行啞變量轉換。
還有一種情況,例如將BMI按照臨床診斷標准分為體重過低、正常體重、超重、肥胖等幾種分類時,由於不同分類之間划分的切點是不等距的,此時賦值為1、2、3就不太符合實際情況,也可以考慮將其轉化為啞變量。
3.創建虛擬變量
pandas.get_dummies
get_dummies(data,prefix=None,prefix_sep="_",dummy_na=False,columns=None,drop_first=False)
① data 要處理的DataFrame
② prefix 列名的前綴,在多個列有相同的離散項時候使用
③ prefix_sep 前綴和離散值的分隔符,默認為下划線,默認即可
④ dummy_na 是否把NA值,作為一個離散值進行處理,默認為不處理
⑤ columns 要處理的列名,如果不指定該列,那么默認處理所有列
⑥ drop_first 是否從備選項中刪除第一個,建模的時候為避免共線性使用