发新话题
打印

邏輯迴歸分析(Logistic regression)

邏輯迴歸分析(Logistic regression)

迴歸的基本原理

迴歸分析是一個大家族,裡面包含很多不同的分析模式,最基本的模式是線性迴歸模式(linear regression),有時候又被稱為ordinary least square (OLS)模式。線性迴歸是假設應變數的各個數值是自變數所構成的某種直線函數值,再加上一個誤差值所得到的數值,比如下面的數學公式:


yi = β0 + β1x1i + β2x2i + β3x3i + ei



其中y (如體重)是應變數,x1(如身高), x2(如性別), x3(如年紀)是與y有關的自變數,e是誤差值。β0 + β1x1 + β2x2 + β3x3就是y與此三個自變數之間的直線函數。線性迴歸分析是要去找出應變數與自變數之間的直線函數是什麼。如果我們已經知道哪些自變數會影響應變數,剩下來的工作便是去估算β0~β3這四個係數的值,以知道y與這些自變數之間的關係函數。

線性迴歸在估算關係函數中的係數值時,所使用的原理叫做「最小平方和」least sum of square的原理,這也是為什麼線性迴歸被稱為ordinary least square的原因。假設我們要探討體重與身高之間的關係,想去了解身高(自變數x)會不會影響體重(應變數y),因此去測量10個人的身高與體重的數值,將這10個人的數值畫在身高與體重的座標軸圖形上,如同下面圖中的各個數據點。然後我們用線性迴歸分析,找出其迴歸線y(體重) = -83.091 + 0.9164x(身高)。如果我們從每一點畫一條垂直線去與接觸這條迴歸線,這段垂直線的距離就是這條迴歸線所預測的每一個人的體重與其測量體重之間的誤差(ei)的絕對值,由於這10個ei有正值(如e6,第6個人的數值點在迴歸線之上)也有負值(如e5,第5個人的數值點在迴歸線之下),直接相加會互相抵消;因此我們對每一個ei取平方值,然後去找出一條會使誤差值的平方值總和(e12+ e22+ e32+ e42+…e102)達到最小的迴歸線。因此,這條迴歸線不見得符合此10個人當中每一個人的身高與體重的情況,但卻是一條最能夠整體描述這十個人身高與體重關係的代表線。

受限應變數的問題

線性迴歸(以下稱OLS)是所有迴歸分析的入門與基礎。可是OLS有許多前提與假設,只有當這些前提與假設都存在時,OLS所估算的線性函數參數值才會準確。其中有一個條件是應變數必須是呈常態分布的連續變數(如某個小學二年級學生第一次月考的數學成績、某一個國家的國民體重、台灣國內所有護理之家的住民跌倒率等等),可是有很多時候我們研究或分析的應變數並非這種型態的變數,這時OLS便派不上用場。這些不符合OLS應變數條件要求的情況很多,計量經濟學通稱這些為「受限的應變數」(limited dependent variables, LDV),針對不同的LDV,統計學家與計量經濟學家大多已經發展出不同的模式去處理,上學期我修「計量經濟學的群組追蹤與非線性模式」這門課的一大半就是在介紹這些模式,讓人眼花撩亂,我更是被其中的矩陣運算弄得「霧煞煞」。

在研究上經常遇到的一種LDV情況,就是應變數是二元變數(binary variable),這類的變數的數值只有兩種可能,常見的例子比如市民罹患冠心病(coronary heart disease, CHD)的狀態(有罹患或者沒有罹患)、應屆畢業大學生應徵職務的結果(被錄取或者沒被錄取)、醫院開辦放射腫瘤科(有開辦或者沒有開辦)等等。以下用冠心病的相關資料做說明。

我有一組包括100個人的年紀與罹患CHD的資料,想去探討罹患CHD是否與年紀有相關性。如果用散布圖去畫出這100個人的年紀與CHD(1=有CHD,0=沒有CHD)的關係,會得到下面的圖形。
事實上這個圖不太能夠讓我們看出來年紀(age)與CHD之間有甚麼關係。可是如果我們將這100個人依照年齡分成八組,並去計算每一組裡面的人得到CHD的比例,便可以將這組資料整理成下面的表格。

年齡組別-----個數--------CHD=0-----CHD=1------得到CHD的比例
20-29---------10------------9------------1------------1/10=10%
30-34---------15-----------13------------2------------2/15=13%
35-39---------12------------9------------3-------------3/12=25%
40-44---------15-----------10------------5------------5/15=33%
45-49---------13------------7------------6-------------6/13=46%
50-54---------8-------------3------------5-------------5/8=63%
55-59---------17------------4------------13------------13/17=76%
60-69---------10------------2------------8-------------8/10=80%
合計---------100-----------57-----------43------------43/100=43%

根據上面的表格,我們可以畫出另外一個呈現這八組年齡層的人(取中間年齡為代表)與得到CHD比例的關係圖形。從這個圖形中,我們可以清楚地看出年紀與罹患CHD確實有關係,年紀越大的年齡層中的人得到CHD的比例就越高。

如果我們直接將這100個人的原始資料用OLS做迴歸分析,或者將表一中的各年齡層的中間年紀與得到CHD的比例用OLS分析,就會各別得到其迴歸線,也就是在圖二與圖三中加上線性迴歸線,分別呈現在下面的圖四與圖五裡面。

實際上這兩條迴歸線相當接近,而且都告訴我們:當年紀增加一歲,得到CHD的比例就會增加0.02(2%)。但是這兩條迴歸線都有一個相同的問題,當年紀超過70歲時,得到CHD的比例會大於100%;或者當年紀低於20歲時,得到CHD的比例會低於0%。當然我們知道得到CHD的比例不可能超過100%或低於0%。這向我們透露出一個訊息:顯然線性迴歸分析所提供給我們的分析結果有嚴重的問題。

處理二元應變數的模式—Logit模式與Probit模式

解決這個問題的方法有好幾個,最常用的有兩種,第一種是「邏輯迴歸分析」(logistic regression,或稱為logit model),另一種是probit model。這兩種方式都是透過非線性的函數去估算我們所感興趣的參數值,前者是使用logit函數,後者是使用常態分布的累積函數。這兩種非線性函數的共同點是它們的數值永遠界於0與1之間,因此我們所得到的迴歸預測值不會像線性迴歸所得到預測值有超過1或低於0的情況。其實這兩種函數值的分布情況很相似,不注意的話還看不出來它們的區別。圖六是logit函數值的分布圖,圖七是probit函數值的分布圖(使用標準常態分布的累積函數)。

Logistic迴歸的基本原理

如果用π(x)代表logit函數,其數學式為

π(x)=1/(1+exp(-x))

當x=0時,exp(-x)=exp(0)=1,因此π(0)=1/(1+1)=0.5
當x=∞(無限大)時,exp(-x)=exp(-∞)=0,因此π(∞)=1/(1+0)=1
當x=-∞(負無限大)時,exp(-x)=exp(∞)=∞,因此π(-∞)=1/(1+∞)=0

在剛剛探討年齡與CHD關係的例子中,OLS所用的線性函數是CHD=β0+β1*Age,logit model則是透過π(β0+β1*Age)來描述Age與CHD的關係,分析公式為:CHDi=π(β0+β1*Agei)+ei (i=1~100)。我們的目的是要去估算或找到β0與β1這兩個值,使π(β0+β1*Agei)的100個數值最接近資料中這100個CHDi的值。

非線性迴歸分析(如logistic regression)在估算或尋找參數值(β0與β1)時,所用的數學原理不再是「最小平方和」,而是「最大可能性」(maximum likelihood),意思是說所找到的這一組參數值,會使得所預測到的100個π(β0+β1*Agei)數值(因為有100個年齡的值)分別符合資料中100個CHDi值的整體可能性達到最大。有趣的是,線性迴歸的「最小平方和」恰好也符合非線性迴歸的「最大可能性」的原理,事實上「最小平方和」是「最大可能性」一種特殊情況。因此,線性關係中,使用「最小平方和」與「最大可能性」所估算的參數值會是一致的。不過「最大可能性」可以適用的不僅在線性關係,連非線性關係也可以運用,而「最小平方和」只適用於線性關係的分析。

OLS在運用「最小平方和」估算參數值時有公式可以直接去計算,但是非線性模式在運用「最大可能性」原理時,並非直接去計算參數值,而是由電腦一再嘗試重複運算(iteration),直到所找到的參數值達到最大可能性。所以一般電腦統計軟體在非線性迴歸模式的結果中都會呈現經過了幾次的重複運算,才找到這組最理想(最具代表性)的參數值。

當我們找到參數值(β0與β1)時,便可以去計算π(β0+β1*Agei)的值,所得到的這100個數值其實就是代表各個年齡的人得到CHD的可能性。因此,logit函數的好處就是將原本是有或無CHD(0,1)的結果轉變成每一個年齡得到CHD的發生機率。針對上面的100位民眾的年齡與CHD的資料,我用logit model去分析,得到的結果是β0=-5.310,β1=0.111,我將此組(β0, β1)帶入π(-5.310+0.111*Agei)去計算各個年齡的人預期得到CHD的可能性。顯示在下圖:

我們可以來比較用logit model所預估的各年紀的人得到CHD的可能性與前面用年紀分組所得到的結果,我將圖三與圖八裡面的數值點畫在同一個散布圖(圖九)上面,可以看到這兩種方式所得到的結果幾乎重疊在一起,表示用logit model所得到的結果與實際的情況相當吻合。

Logistic迴歸的好處

在面對二元應變數的情況,logit model可能是被運用得最廣的,特別是在生物統計、醫學與流行病學的研究方面,logit model有其優勢存在,因為logit model所得到的自變數的係數值透過簡單的換算,就可以得到生物醫學上常用到的一個指標值—「勝算比值」(odds ratio)。在logit model中,如果我們使用的自變數也是二元變數,更能夠凸顯在結果解讀上的方便。

我們在將上述100筆資料根據年齡分成兩組(如下表),第一組是年齡大於或等於40歲的人,另一組包含年齡小於40歲的人。我用一個新變數(group)來代表這兩組,第一組是group=1,第二組是group=0。第一組中有58.7%的人得到CHD,41.3%的人沒有得到CHD,其得到CHD的勝算(odds,也就是這一組的人得到CHD的機會與沒得到CHD的機會的相對值)=58.7%/41.3%=1.423。較年輕組中有16.2%的人得到CHD,83.8%的人沒有得到CHD,其得到CHD的勝算=16.2%/83.8% =0.194。如果我們將第一組的勝算除以的二組的勝算,便可以得到這兩組得到CHD的勝算比值(odds ratio)。此處所得到的結果告訴我們,年長組的人罹患CHD相較於沒有罹患CHD的情況,是年輕組的7.353倍。

----------------Group=1--------------Group=0
----------------Age>=40--------------Age<40>
chd="1----------58.7%-----------------16.2%"

chd="0----------41.3%-----------------83.8%"

Odds------------1.423------------------0.194

Odds ratio-------1.423/0.194=7.353

現在我們用logit model去分析CHD與這兩組的關係(將自變數由Age改成group),所得到的group的參數是1.995049。很有趣的是,當我們去取這個值的指數時,exp(1.995049)=7.35256,剛好是等於前面計算出來的odds ratio。

需要強調的是,odds ratio並不是指這兩組人罹患CHD的平均可能性的比值。這兩組人的罹患CHD的平均可能性分別是58.73%與16.22%,其比值是3.62。下面的圖是用logit model所估算的參數值去計算的這兩組人罹患CHD的可能性,分別是58.66%與16.25%,與直接從資料所計算得到的結果非常幾乎完全一樣。


Logistic迴歸分析結果的解讀

至於logistic regression結果的係數或勝算比值要如何解讀,這裡用一個簡例來說明:探討年齡與性別與冠心病發的關係,自變數分別是年齡(1-100,連續變數)與性別(男與女,二元變數,女=1,男=0)。如果年齡與性別的係數分別是0.1與-0.5,若直接從係數值來看,我們應該說冠心病發機率與年齡呈正相關,年紀愈大,冠心病發的機率愈大;冠心病發機率與女性的性別呈負相關,女性冠心病發機率要比男性來得小。

如果將係數轉換成勝算比值(odds ratio),年齡與性別的odds ratio分別為1.105與0.6065(odds ratio=exp(係數值))。解釋的方式是:年齡每增加1歲,冠心病發的勝算值(病發機率/未病發機率的比值)是未增加前的1.105倍(On average, one year increase in age results in 1.105 times the ratio of getting versus not getting CHD)。在二變數方面,會更容易解釋:女性冠心病發的勝算值(病發機率/未病發機率的比值)只有男性的0.6065倍(The ratio of getting versus not getting CHD for female is only 0.61 times the ratio for male)。

此外,我們也可以說男性冠心病發的勝算值為女性的1.648(1/.6065)倍。(exp(-0.5)=0.6065)。其實,如果我們將性別變數的男性改設定為1,女性為0,再跑一次logistic regression,所得到的係數會是0.5(從-0.5變成0.5),而odds ratio = exp(0.5) = 1.648,意義完全一樣,只是比較的基礎不同而已。

如果要解釋logit model中乘積項或互動項(interaction term)的係數或勝算比值的意義,就比較複雜了,不過大體上的相關性說明原則應該是跟前面所說的一樣。比如有一個乘積項是性別x抽菸與否(抽菸=1,未抽菸=0),如果此乘積項的係數是0.2 (正值,exp(0.2)=1.22),可以解讀為:女性抽菸後得到冠心病的勝算率為男性的1.22倍(the odds ratio or the probability of getting versus not getting CHD was higher (1.22 times) for female as compared to male in relation to smoking (or the difference between smoking and nonsmoking);此即意謂:與男性相較之下,抽菸對女性(性別:女=1,男=0)得到冠心病發的影響要比抽菸對男性的影響來得大;或是:女性從不抽菸變成抽菸所帶來冠心病發的風險,要比男性從不抽菸變成抽菸所帶來冠心病發的風險來的高;也就是:女性性別與抽菸互動之下,與冠心病發機率有正相關。(乘積項的勝算比率是女性抽菸得到冠心病的勝算比率/男性抽菸得到冠心病的勝算比率)

TOP

发新话题