二分類logistic回歸,更新幾個常見問題的解決方法
醫咖會之前推送過二分類logistic回歸的SPSS教程,不過有些問題未詳細闡述,例如,如何驗證:連續自變數與因變數的logit轉換值之間存在線性關係;自變數之間無多重共線性等。經常有夥伴問到這些問題,為此,我們對二分類logistic回歸的教程做了更新,希望能對大家有所幫助。
一、問題與數據
某研究者想了解年齡、體重、性別和最大攝氧量(VO2max)預測患心臟病的能力,招募了100例研究對象完成最大攝氧量試驗,登記年齡(age)、體重(weight)和性別(gender),並評估研究對象目前是否患有心臟病(heart_disease)。
二、對問題的分析
使用二分類Logistic模型前,需判斷是否滿足以下7項假設。
假設1:因變數(結局)是二分類變數。
假設2:有至少1個自變數,自變數可以是連續變數,也可以是分類變數。
假設3:每條觀測間相互獨立。分類變數(包括因變數和自變數)的分類必須全面且每一個分類間互斥。
假設4:最小樣本量要求為自變數數目的15倍,但一些研究者認為樣本量應達到自變數數目的50倍。
假設5:連續的自變數與因變數的logit轉換值之間存在線性關係。
假設6:自變數之間無多重共線性。
假設7:沒有明顯的離群點、槓桿點和強影響點。
假設1-4取決於研究設計和數據類型,本研究數據滿足假設1-4。那麼應該如何檢驗假設5-7,並進行Logistics回歸呢?
三、SPSS操作
檢驗假設5:連續的自變數與因變數的logit轉換值之間存在線性關係
連續的自變數與因變數的logit轉換值之間是否存在線性關係,可以通過多種方法檢驗。這裡主要介紹Box-Tidwell方法,即將連續自變數與其自然對數值的交互項納入回歸方程。
本研究中,連續的自變數包括年齡(age)、體重(weight)、最大攝氧量(VO2max)。使用Box-Tidwell方法時,需要先計算age、weight和VO2max的自然對數值,並命名為ln_age、ln_weight、ln_VO2max。
(1) 計算連續自變數的自然對數值
以age為例,計算age的自然對數值ln_age的SPSS操作如下。
在主界面點擊 TransformCompute Variable,出現Compute Variable對話框中。在Target Variable框中輸入即將生成自然對數值的變數名稱(如輸入ln_age表示age的自然對數值)。
選擇Function group菜單下的Arithmetic,選擇Functions and special variables菜單下的Ln,雙擊Ln將該公式選入Numeric Expression框中,最後雙擊age將該變數選入「LN()」公式中。點擊OK生成新變數ln_age(即age的自然對數值)。
此時新變數會同時出現在Variable View和Data View窗口中。在Data View窗口中,新生成的ln_age變數如下圖。
重複以上過程,將本研究中的所有連續自變數的自然對數值全部生成。在Data View中,新生成的ln_age,ln_weight,ln_VO2max變數如下圖。
(2) Box-Tidwell法
Box-Tidwell法檢驗連續的自變數與因變數的logit轉換值之間是否存在線性關係的SPSS操作如下。
在主界面中點擊 AnalyzeRegressionBinary Logistic。在Logistic Regression對話框中將變數heart_disease選入Dependent框中,將變數age、weight、gender和VO2max選入Covariates框中。Methods選項選擇默認值,即Enter。如果目前未選擇Enter,應修改為Enter。
點擊Categorical,在Logistic Regression:Define Categorical Variables對話框中,將gender選入Categorical Covariates框中。在Change Contrast區域,將Reference Category從Last改為First後,點擊ChangeContinue。
對於二分類變數(如本研究的gender),也可以不通過Categorical選項指定參照,SPSS將默認以賦值較低的變數為參照。
Categorical選項可將多分類變數(包括有序多分類和無序多分類)變換成啞變數,指定某一分類為參照。比如,某研究中COPD是多分類變數(分為無COPD病史、輕/中度、中度),如果指定「無COPD病史」的研究對象為參照組,可以分別比較「輕/中度」和「重度」組相對於參照組發生結局的風險。
Contrast右側的下拉菜單中(該下拉菜單內的選項是幾種與參照比較的方式),Indicator方式最常用,其比較方法為:第一類或最後一類為參照類,每一類與參照類比較。在Reference Category的右側選擇First,表示本研究以女性為對照組(賦值為0)。
回到Logistic Regression對話框後,可見gender已顯示為gender(Cat)。分類變數後顯示「(Cat)」說明已正確定義分類變數。
設置好分類自變數後,開始生成交互項。以age和ln_age為例,同時選中age和ln_age(使用Ctrl鍵+滑鼠點擊),點擊>a*b>鍵,將ln_age*age交互項選入Covariates框中。
重複以上過程,將所有交互項都選入Covariates框中,點擊OK。
(3) 假設5的檢驗結果
查看Variables in the Equation表格中,有交互作用的行及行內「Sig」值,本研究中為age by ln_age、ln_weight by weight和VO2max by ln_VO2max」所在的行及行內「Sig」值。
如果交互作用有統計學意義(P
本研究中,共有8項納入模型分析,包括三個連續自變數age、weight、VO2max,分類自變數gender,三個交互作用項age*ln_age、ln_weight*weight、VO2max*ln_VO2max和截距項(Constant)。
因此本研究中,建議選擇顯著性水平應為α=0.00625(即0.05 ÷ 8)。根據該顯著性水平,本研究所有交互項的P值均高於0.00625,因此所有連續自變數與因變數logit轉換值之間存在線性關係。
假設5檢驗完之後,有兩種情況: 所有連續自變數與因變數的logit轉換值間存在線性關係,則直接進行下一步; 如果一個及以上連續自變數與因變數的logit轉換值間不存在線性關係,建議將該變數轉換為有序分類變數。
(關於Box-Tidwell法,我們主要參考了外文的一些資料,小咖手上有兩個PDF,有需要的夥伴,請在下方留言。)
檢驗假設6:自變數之間無多重共線性
與線性回歸一樣,Logistic回歸模型也需要檢驗自變數之間是否存在多重共線性。自變數之間的簡單相關或多重相關都會產生多重共線性。
容忍度(Tolerance)或方差膨脹因子(VIF)可以用來診斷自變數之間的多重共線性。遺憾的是,SPSS的Binary Logistic模塊並不能提供容忍度或方差膨脹因子,但是我們可以通過線性回歸來獲得。
由於我們關心的是自變數之間的關係,因此容忍度或方差膨脹因子與模型中因變數的函數形式無關。也就是說,我們可以將Logistic回歸的因變數(二分類變數)、自變數(二分類、多分類或連續變數)直接帶入線性回歸模型,從而獲得容忍度或方差膨脹因子。
在主界面點擊AnalyzeRegressionLinear,將heart_disease選入Dependent,將age、weight、gender和VO2max選入Independent(s)。
點擊Statistics,出現Linear Regression:Statistics對話框,點擊Collinearity diagnosticsContinueOK。
結果如下圖:
如果容忍度(Tolerance)小於0.1或方差膨脹因子(VIF)大於10,則表示有共線性存在。本例中,容忍度均遠大於0.1,方差膨脹因子均小於10,所以不存在多重共線性。如果數據存在多重共線性,則需要用複雜的方法進行處理,其中最簡單的方法是剔除引起共線性的因素之一,剔除哪一個因素可以基於理論依據。
檢驗假設7:沒有明顯的離群點、槓桿點和強影響點
該假設的SPSS操作可見後面的「Logistic 回歸」部分,此處僅展示如何解讀結果。結果中Casewise List表格顯示學生化殘差大於2倍標準差的觀測。學生化殘差大於2.5倍標準差的觀測需要研究者進一步觀察決定這些觀測是否是離群點,如有必要甚至可以從分析中剔除這些觀測。
本例中,第70個觀測(Case Number)的學生化殘差為3.349,符合上述判斷離群點的標準。
需要注意的是:
如果所有觀測的學生化殘差小於2倍標準差,SPSS不會輸出Casewise List表格。如果已經剔除離群點,則第一次分析得到的Casewise Diagnostics表格不會再顯示。
觀測數(Case Number)指SPSS系統內自動編碼(Data View窗口中最左側藍色一列中的編碼),而非研究者賦值的編碼。
研究者需要查看該觀測為離群點的原因,決定是否刪除該觀測並報告。本研究考慮不刪除該觀測,並在結果中報告「納入分析的觀測中有一項觀測的學生化殘差為3.349」。
Logistic 回歸
在主界面點擊AnalyzeRegressionBinary Logistic,在Logistic Regression對話框中,將heart_disease選入Dependent,將age、weight、gender和VO2max選入Covariates。並按照前述操作,通過Categorical將gender變換為啞變數。
注意:如果是按本文中指導的步驟依次進行的分析,此時Logistic Regression對話框下為因變數heart_disease,Covariates框中為4個自變數age、weight、gender(Cat)、VO2max和3個交互項ln_age*age、ln_weight*weight、ln_VO2max* VO2max。
此時僅需要將交互項ln_age*age、ln_weight*weight、ln_VO2max* VO2max從Covariates框中刪除即可。
對於自變數篩選的方法(Method對話框),SPSS提供了7種選擇,使用各種方法的結果略有不同,讀者可相互印證。各種方法之間的差別在於變數篩選方法不同,其中Forward: LR法(基於最大似然估計的向前逐步回歸法)的結果相對可靠,但最終模型的選擇還需要獲得專業理論的支持。本文以Enter法為例進行展示(其它方法得到的結果,解釋方法一樣)。
點擊Options,在Logistic Regression:Options對話框中,選中Classification plots,Hosmer-Lemeshow goodness-of-fit,Casewise listing of residuals和CI for exp(B)這4個選項。在Display區域,選中At last step選項。點擊ContinueOK。
四、結果解釋
1. 檢查變數和數據
首先檢查是否存在缺失觀測,納入分析的觀測數是否和資料庫中觀測數一致。Case Processing Summary表格如下圖。
確認因變數的編碼是否正確。Dependent Variable Encoding表格如下圖。
觀察分類自變數是否存在某一類觀測數過少的情況,如果某項分類較少,可能不利於二項Logistic回歸分析。本研究中,定義的分類自變數只有gender,因此Categorical Variables Codings表格只給出了gender的信息。
2. 基本分析
此部分結果的標題為「Block 0:Beginning Block」,指的是所有自變數不納入模型、只包括常數項時的結果。此部分可以跳過。
3. Logistic回歸
此部分結果的標題為「Block 1:Method=Enter」(Enter指前述SPSS操作部分所述的自變數篩選方法)。
(1) 模型整體評價
Omnibus Tests of Model Coefficients是模型係數的綜合檢驗。其中Model一行輸出了Logistic回歸模型中所有參數是否均為0的似然比檢驗結果。P
Hosmer and Lemeshow Test是檢驗模型的擬合優度。當P值不小於檢驗水準時(即P>0.05),認為當前數據中的信息已經被充分提取,模型擬合優度較高。
Model Summary表格中,提供了因變數的變異能夠被擬合的模型解釋的比例。該表格包含Cox & Snell R Square和Nagelkerke R Square,這兩種R2有時被稱為偽R2,在Logistic回歸中意義不大(與線性回歸中的不同),可以不予關注。
(2) 模型預測能力
擬合Logistic回歸模型後,對於每一個自變數組合,均可以得到結局事件(本例中為患心臟病)發生的概率。如果事件發生的概率大於或等於0.5,Logistic回歸判斷為事件發生(患心臟病);如果可能性小於0.5,則判斷為事件未發生(未患心臟病)。因此,與真實情況相比,就可以評價Logistic回歸模型的預測效果。
Logistic回歸模型能夠將71.0%的觀測正確分類(Overall Percentage一行),該指標常被稱作percentage accuracy in classification(正確分類百分比),即診斷試驗中的一致率。
預測為「是」的觀測數占實際為「是」的觀測數的比例即靈敏度。本研究中,45.7%患有心臟病的研究對象被模型預測患有心臟病。預測為「否」的觀測數占實際為「否」的觀測數的比例即特異度。本研究中,84.6%未患心臟病的研究對象被模型預測未患心臟病。
同理,還可以計算得到陽性預測值(61.5%)和陰性預測值(74.3%)。
(3) 方程中的自變數
由於本次統計過程中篩選變數的方式是Enter法,因此所有自變數均進入了模型,Variables in the Equation表格中也列出了所有自變數及其參數。其中Sig.一列表示相應變數在模型中的P值,Exp (B)和95% CI for EXP (B)表示相應變數的OR值和其95%可信區間。
結果顯示,age(P=0.003),gender(P=0.021)和VO2max(P=0.039)有統計學意義,但weight(P=0.799)沒有統計學意義。
對於分類變數,OR值的含義為:相對於賦值較低的研究對象(gender賦值為「0」的為女性),賦值較高的研究對象(男性)患心臟病的風險是多少(7.026倍)。對於連續變數,OR值的含義為:自變數每增加一個單位(年齡每增加1歲),發生結局的風險增加的倍數(1.089倍)。
五、撰寫結論
本研究採用二分類Logistic回歸評估年齡、體重、性別和最大攝氧量對研究對象患心臟病的影響。使用Box-Tidwell方法檢驗連續自變數與因變數logit轉換值間是否為線性。線性檢驗模型時共納入8項,Bonferroni校正後顯著性水平為0.00625。線性檢驗結果得到所有連續自變數與因變數logit轉換值間存在線性關係。一個觀測的學生化殘差為標準差的3.349倍,但保留在分析中。
最終,得到的Logistic模型具有統計學意義,χ2=27.402,P
模型納入的五個自變數中,年齡、性別和最大攝氧量有統計學意義。男性患心臟病的風險是女性的7.026倍。年齡每增加1歲,患心臟病的風險增加8.9%。最大攝氧量每增加一個單位,患心臟病的風險降低9.4%。
TAG:醫咖會 |