一、背景
在某些場景下我們要判斷一個事件能存活多久,這時候我們就需要使用生存分析相關的方法。例如,一些實驗中小白鼠在某個時間段的生存概率;或者在日常的打車場景中,一個乘客呼叫了訂單,這個訂單在等待時間段中的存活概率。
二、風險函數、生存函數與刪失數據
假設一個乘客發了一個打車訂單,那么在不同時間點被乘客取消的概率密度函數則為風險函數(Hazard Function), 不取消的概率密度函數為生存函數(Survial Function)。 如這個訂單在某個時間點被司機應答了,那么這個訂單則退出了實驗觀察,那么我們稱之為刪失數據(Censored Data)。在生存分析中所有數據的時間口徑划分都是當時相對的時間段。
因此由上述概念可以了解到,在生存分析當中我們主要的目的是得到比較准確的風險函數與生存函數。現有一些常用的方法供我們選擇,Kaplan-Meier, Cox Regression等。
三、Kaplan-Meier
1、KM
對於單個變量的生存分析,我們可以采用 Kaplan-Meier,簡稱KM。KM的生存函數$S(t_{n})$與風險函數$h(t_{n})$分別為:
$$S(t_{n})=S(t_{n-1})*(1-\frac{d_{t_{n}}}{r_{{t_n}}})$$
$$h(t_{n})=\frac{d_{t_{n}}}{r_{{t_n}}}$$
- $d_{t_{n}}$為$t_{n-1}$到$t_{n}$時刻事件發生的數目,$r_{t_{n}}$為$t_{n-1}$時刻結束時事件存活數目
Example: 不同年齡段用戶的訂單生存時長與生存概率的關系(當前例子是年齡越大,對應的訂單生存時長就越長)
KM圖雖有時候肉眼可以很直觀看出不同變量和生存時長的關系,但是只能每次分析一個變量。KM曲線的假設檢驗方法有三種 log-rank, breslow, tarone, 這三種方法都為卡方檢驗,但是對於不同時間點的權重計算各為不同。
KM假設檢驗 (自由度為時間組數-1的卡方檢驗) |
各個時間點的權重 |
log-rank | 個時間點權重均為1 |
breslow | 各時間點存活個數 |
tarone | 各時間點存活個數的平方根 |
2、卡方檢驗
卡方檢驗就是檢驗兩個變量之間有沒有關系,例如在這篇文章里面寫的,打車用戶的年齡與他們的等待時長有沒有關系。卡方檢驗公式:
$$\chi ^{2}=\sum \frac{(observed-expected)^{2}}{expected}$$
然后再用求得的自由度,以及挑選的置信區間(一般為90%, 95%)來查表得到p值,然后通過卡方值與p值的比較得到我們是應該接受原假設還是拒絕原假設。
四、Cox Regression
1、Cox Regression的基本形式
Cox對風險函數的建模形式為:
$$h(t,X)=\lambda_{0}(t)exp(\beta X)$$
- $\lambda$是一個僅與時間相關的函數,其選擇具有充分的靈活性,一種可能的選擇是采用概率論中的Weibull分布,指數分布。
- $\beta$是模型的參數
2、參數的極大似然估計
極大似然估計的思想是讓已經發生事件的概率最大。假設有3個年齡段用戶A,B,C(分別為10歲,20歲,30歲)$X_{1}$, $X_{2}$,$X_{3}$, 然后在同一地點發出打車訂單,但是由於周圍沒有車輛,他們分別在10秒、20秒、30秒又各自取消了訂單。利用極大似然估計的思想,我們要在第10秒,第20秒,第30秒要分別令A,B,C取消訂單的概率最大,則目標為
- $\max\ h(10, A)\ \min\ h(10,B)+h(10,C)$
- $\max\ h(20, B)\ \min\ h(20,C)$
- $\max\ h(30, C)$
將目標放在一個式子中。並且防止分母為0,分母加入分子項用來平滑,得
-
$\max\ \frac{h(10,A)}{h(10,A)+h(10,B)+h(10,C)}$
-
$\max\ \frac{h(20,B)}{h(20,B)+h(20,C)}$
- $\max\ \frac{h(30,C)}{h(30,C)}$
將三個式子合起來得到最終目標
$$\max\ \frac{h(10,A)}{h(10,A)+h(10,B)+h(10,C)}*\frac{h(20,B)}{h(20,B)+h(20,C)} *\frac{h(30,C)}{h(30,C)}$$
將其轉化為似然函數為
$$L(\beta)=\frac{h(10,A)}{h(10,A)+h(10,B)+h(10,C)}*\frac{h(20,B)}{h(20,B)+h(20,C)} *\frac{h(30,C)}{h(30,C)}$$
消除基本風險函數$\lambda_{0}$ 得到最終通用的似然函數為:
$$L(\beta)=\prod_{i}^{N}\frac{exp(\beta\cdot X^{(i)})}{\sum_{j:t_{j}\geqslant t_{i}}exp(\beta\cdot X^{(j)})} $$
然后利用牛頓法(推導略,見參考部分)可以求解$\beta$參數,從而得到最終的模型。
五、生存模型的評估 concordance-index
concordance-index,簡稱C-index。定義:C-index = 一致的對子數/有用的對子數。 計算步驟
- 所有樣本相互配對,共有 N*(N-1)/2 對,其中N為樣本數
- 去除無法判斷誰先到達事件終點的配對。例如配對中的A,B樣本都沒有到達事件終點。或者A比B的壽命短,但是A卻沒有到達事件終點就退出了實驗。剩下的配對數目為M
- 計算剩下的配對中,預測結果和實際相一致的配對數記為K。(每個配對中,生存概率大的樣本的確實生存時間越久,則記為與實際情況一致)
- 計算C-index = K/M