在先前的三篇文章已經有介紹存活分析(Survival analysis)的使用時機、如何繪製存活曲線圖(Kaplan-Meier curve),以及如何比較「組別」之間的存活曲線是否有顯著差異(Log-rank test),但當「自變項是連續變項」或「當自變項超過2個以上」的時候怎麼辦?在存活分析眾多方法之中,有一個最廣為應用的迴歸模型:即為Cox proportional hazard model。
要認識Cox proportional hazard model,就必須把它的統計式(也可說為迴歸方程式)列出來,下圖統計式所謂的「HR」就是「Hazard Ratio」,表示在某個時間點之下會發生event的風險比,因此HR(x)就是表示在給定X值的情況之下會發生event的風險比,所謂的X值指的就是自變項(Independent variable/Covariate)的數值,例如年齡50歲就是一個X。不過我們可以從最右側的公式發現,其實它跟Linear regression的迴歸方程式很相近,只是左邊的所要求的數值有差別。
由於目前還不是我們所要的迴歸方程式,因此我們繼續轉換公式,經過一系列的轉換,我們可發現現在迴歸方程式已經很好解釋了,最後一行的公式的等號左邊的log裡頭的東西代表「在某個時間點之下給定X值的event風險比」,等號右邊的log的東西表示「在某個時間點之下,當所有predictors為0時的危險比」,不過就跟所有的迴歸模式一樣,這就是截距項(Intercept),一般我們是不解釋截距項的,重點是右邊的迴歸方程式就跟Linear / Logistic regression一樣。 (我想要上統計課)
那麼迴歸係數數值如何解釋呢,假使說X1是連續變項(年齡),那麼年齡增加1歲時則危險比會變成Exp(β1)單位,因此也可以說增加1歲則危險比會增加Exp(β1)-1倍,不過需注意,如果年齡增加10歲那麼危險比會如何變化呢?這邊很容易會有同學搞錯,假設迴歸係數β=0.35,那麼Exp(0.35)=1.42,也就是說當年齡增加1歲時則風險比為原本的1.42倍(或者是說當年齡增加1歲時風險比增加了1.42-1=0.42倍),不過年齡增加10歲時的風險比可不是直接將10*1.42=14.2喔!而是Exp(10*β1),也就是Exp(10*0.35)=33.1倍,而這個數字會剛好等於原本的Exp(0.35)的10次方!
也就是說在Cox model裡,增加1歲時的危險比為Exp(β1),但增加n歲時的危險比是Exp(β1)n!這種風險比呈現加乘(multiplicative)性的效應,是跟Logit model一樣的。
以X2為例,X2=1代表男性,X2=0代表女性,此時的Exp(β1)就代表男性相對於女性的風險比,若HR顯著超過1則表示男性的風險比較高!
太好了,目前為止已經介紹了四篇關於Survival analysis的介紹文章,但其實要告訴大家,Survival analysis本身有很多的統計模式,像我們這一篇介紹的是最基礎的Cox model, 因此各位如果有興趣針對Survival analysis作研讀,在此推薦三本比較容易入門書(根據難易度排列,從簡單到難)
Singer, J. D., & Willett, J. B. (2003). Applied longitudinal data analysis: Modeling change and event occurrence New York, USA: Oxford University Press.
Kleinbaum, D. G., & Klein, M. (1996). Survival analysis: A self-learning text (2nd ed.). New York: Springer.
Hosmer, D. W., & Lemeshow, S. (1999). Applied survival analysis: Regression modeling of time to event data. NY, USA: John Wiley & Sons, Inc.

此則為私密回應
Cox不是資料採礦的1種,全名是Cox proportional hazard model
谢谢分享......
不客氣!!
在先前的三篇文章已經有介紹存活分析( ...《詳全文》
請問,當兩個X有交互作用時,cox語法怎麼寫,是多寫一個x1*x2嗎? 還有甚麼要特別注意的呢,關於cox交互作用,(交互作用是利用two-way ANOVA跑出來的) 謝謝!!
您好: 沒有錯,直接在語法新增X1*X2即可,不過如果X1或X2是連續變項,請記得作 "mean centering" 的動作,可參考以下兩篇文章: http://tw.myblog.yahoo.com/da_sanlin/article?mid=2216&prev=2272&l=f&fid=28 http://tw.myblog.yahoo.com/jw!92LDo22WESgxsO1gnU8j1yA-/article?mid=2272
謝謝!那再請問,cox的goodness of fit是要做Schoenfeld residual 還是畫K-M plot看有沒有交叉還是畫log-negative-log plot,這部份真的好難耶...(都是類別)
您好: 您的問題可能是問 "Proportional hazard" 的假設? 一般來說Cox的Proportional hazard的假設有三種檢驗方式, 第一種是 Estimated –ln(–ln) survivor curves (只能作類別變項), 第二種是 Goodness-of-fit (GOF) tests (每一個predictor都有一個P值) 第三種是 Time-dependent covariates 參考文獻 Kleinbaum DG, Klein M. Survival analysis: A self-Learning Text. 2nd ed. New York: Springer; 2005.
想請問一下,所以這個 Cox proportional Hazards Model 最主要是在測試 右邊回歸式裡面的那個dummy variable 到底哪一個對於引發事件的機率比較大囉 ? 如果是這樣的話,那麼右手邊的dummy variable 是不是只能放一個呢 ?
您好:右邊的dummy variable的個數並沒有受限制,這個就跟一般的迴歸式並無不同之處。
如果我想看憂鬱在不同性別間的死亡風險,想請問在語法中加入'憂鬱*性別'一項,以及分別在男女性族群跑一次COX,兩種做法有何不同?謝謝
您好: 加入'憂鬱*性別'的交互作用項,主要可以檢驗憂鬱的效果在男女之間是否"顯著地不同";若男與女分開作分析,是可以個別知道男性與女性的結果,但無法檢驗男女之間是否"顯著地不同"。
感謝你
想請問這種的p-value怎麼算?
您好:用統計軟體算。
您好,我有一些關於PH假設檢定以及後續處理方法的問題,我把它們列在下面: 1) 在multivariable cox model中是不是每個變項都要符合PH假設呢?如果是的話是要用univariable model先將每個變數測試一遍還是在multivariable model裡全部一起測呢? 1) 我發現不同的檢測發法會得出互相矛盾的結果,例如檢測年齡是否符合PH假設的時候,先把他分成幾個類別再用KM curves去檢定,跟直接檢定年齡與時間的time-depenent covariate的結果是矛盾的,這種情況下要怎麼辦? 2) 假設我的資料顯示年齡,癌症stage跟婚姻狀況不符合PH假設,但就醫學的角度覺得必須放在模型裡,這時候要怎麼處理呢?在部落格讀到可以加一個time-dependent variable,不過這些變數的性質其實都不是time-dependent, 這樣解釋是合理的嗎?另外我能想到的辦法是做一個stratified cox model,不過當一個模型裡面含有兩個不符合PH假設的變數的時候要怎麼解釋呢? 謝謝!