有關生存分析的相關知識,請自行前往“算法與模型”類博客進行學習。
(http://blog.csdn.net/xiaohukun/article/details/77679134)
一、下載並加載包
進行生存分析使用的是survival 包
install.packages("survival") #安裝survival包
library(survival) #加載survival包
二、準備數據
使用survival包自帶的“pbc”數據集爲例(418*20)
這裏記錄的time只是原始時間,還需要根據status判斷生存時間的類型,轉化成相應的格式。這個工作由Surv(time,event)完成,並返回生存對象
> Sur_Obj<-Surv(pbc$time,pbc$status)
> Sur_Obj
[1] 400 4500? 1012 1925 1504+ 2503 1832? 2466 2400
[10] 51 3762 304 3577? 1217 3584 3672? 769 131 ……
三、繪製生存曲線
函數surfit(formula),根據填入的formula按照默認K-M算法進行生存曲線擬合。如果填入的formula只有一個向量,則寫成x~1的形式。
#獲得曲線模型
> model<-survfit(Sur_Obj~1)
> summary(model)
Call: survfit(formula = Sur_Obj ~ 1)
232 observations deleted due to missingness
time n.risk n.event survival std.err lower 95% CI upper 95% CI
41 186 2 0.98925 0.00756 0.97454 1.0000
43 184 1 0.98387 0.00924 0.96593 1.0000
51 183 1 0.97849 0.01064 0.95787 0.9996
71 182 1 0.97312 0.01186 0.95015 0.9966
77 181 1 0.96774 0.01296 0.94268 0.9935
94 180 1 0.96237 0.01395 0.93540 0.9901
110 179 1 0.95699 0.01488 0.92827 0.9866
111 178 1 0.95161 0.01573 0.92127 0.9830
130 177 1 0.94624 0.01654 0.91437 0.9792
……
#其中lower 95% CI 和 upper 95% CI爲95%置信度時生存率的上下區間
> model
Call: survfit(formula = Sur_Obj ~ 1)
232 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
186 161 1217 1077 1492
#其中median 即爲中位生存期,0.95LCL,0.95UCL爲預測上下限
直接通過plot(model,ylab = "生存率",xlab="天")
便可以繪製生存曲線。
四、單因素分析
這裏主要是指用survdiff(formula)函數進行log-rank檢驗。
> survdiff(Sur_Obj~pbc$trt) #trt是分組條件
Call:
survdiff(formula = Sur_Obj ~ pbc$trt)
n=144, 274 observations deleted due to missingness.
N Observed Expected (O-E)^2/E (O-E)^2/V
pbc$trt=1 75 65 65.5 0.00441 0.00956
pbc$trt=2 69 60 59.5 0.00486 0.00956
Chisq= 0 on 1 degrees of freedom, p= 0.922
原假設爲兩類數據均值無明顯差異,P值爲接收原假設的概率,顯然此處>>0.05,因此不能拒絕原假設。結論:trt不同的患者生存時間並無明顯差異。
五、多因素分析
採用逐步迴歸的方式一步一步確定影響因素是否進入模型,並進行協變量的PH假定驗證。分別使用到coxph(formula)函數和cox.zph(fit)函數。
#相似比檢驗,原假設爲加入新因素無差別,P值看是否爲影響因素,coef爲係數
> coxmodel<-coxph(Sur_Obj~pbc$bili)
> coxmodel
Call:
coxph(formula = Sur_Obj ~ pbc$bili)
coef exp(coef) se(coef) z p
pbc$bili 0.078 1.081 0.013 6.01 1.8e-09
Likelihood ratio test=28.6 on 1 df, p=9.09e-08
n= 186, number of events= 161
(232 observations deleted due to missingness)
#原假設爲符合PH假定
> zphmodel<-cox.zph(coxmodel)
> zphmodel
rho chisq p
pbc$bili 0.00717 0.0064 0.936
也可以通過繪製
plot(zphmodel)
如此,生存分析中涉及的基本分析就完成了。