引言:
生存分析是臨床上較為常用的統計學方法,用於比較不同組別的患者在接受幹預之後,生存時間的變化情況。生存分析是醫學領域中一個重要的內容,在各個疾病領域的研究中都運用十分廣泛。在R中進行生存分析常用的包主要有survival包以及survminer包。
?Survival 包提供了生存函數的建立,Cox模型的建立,以及比較分析。這個包也提供了基於基礎繪圖系統的生存曲線繪製。?Survminer包提供了基於ggplot2系統對於生存分析的可視化,使得生存分析具有更加美觀的圖形,以及自我定製方式。
而今天我們的主角就是Survminer包,讓我們鼓足精神一起來學習「如何使用Survminer包優雅的繪製生存曲線」吧。
1.Survminer包主要函數介紹
#該包包含的主要函數有:
主要函數用法ggsurvplot ()利用'number at risk'表,事件表的累計數量和被過濾的主體表的累計數繪製生存曲線arrange_ggsurvplots ()在同一頁面上排列多個ggsurvplotsggsurvevents ()繪製事件的時間分布surv_summary ()生存曲線總結,默認的summary ()函數相比,surv_summary ()創建一個數據幀,其中包含來自survfit結果的漂亮摘要surv_cutpoint ()一次確定一個或多個連續變量的最佳切點,提供與生存最顯著關係對應的一個切點的值。pairwise_survdiff ()生存曲線的多重比較,計算分組級別之間的配對比較,以及多個測試的更正ggcoxzph ()比例危害的圖形測試,顯示縮放的Schoenfeld殘差圖,以及使用ggplot2的平滑曲線,plot.cox.zph()的包裝器ggcoxdiagnostics ()顯示診斷圖表顯示cr比例危險模型的良好ggcoxfunctional ()顯示關於零cox比例危險模型鞅殘差的連續解釋變量的圖,cox模型中連續變量的函數形式的正確選取ggforest ()繪製CoxPH模型的forest plotggcoxadjustedcurves ()繪製coxph模型的調整生存曲線ggcompetingrisks ()繪製競爭風險的累積關聯曲線
在以上眾多函數中,ggsurvplot ()函數和ggcoxzph ()函數是生存分析中應用最多的函數,arrange_ggsurvplots ()函數是讓多個 ggsurvplots作圖生存曲線合併。今天我們也將主要講解這三個函數。(如果需要其他函數的學習,請自行查閱 Survminer包說明文檔)
2.主要函數ggsurvplot()
2.1 用法:
ggsurvplot(fit, data = NULL, fun = NULL, color = NULL, palette = NULL, linetype = 1, conf.int = FALSE, pval = FALSE, pval.method = FALSE, test.for.trend = FALSE, surv.median.line = "none", risk.table = FALSE, cumevents = FALSE, cumcensor = FALSE, tables.height = 0.25, group.by = NULL, facet.by = NULL, add.all = FALSE, combine = FALSE, ggtheme = theme_survminer(), tables.theme = ggtheme, ...)
2.2 主要參數詳解:
參數用法fit需要畫的生存曲線對象,可以是擬合好的生存對象,也可以是包含生存信息的數據框、列表data用來擬合生存曲線的數據集,如果未提供,則將從「fit」對象中提取數據fun定義生存曲線變換的任意函數。event:f(y) = 1-y;cumhaz:f(y) =-log(y);pct:生存率百分比color繪製生存曲線的顏色設置,可使用調色板palette使用調色板linetype改變線條類型conf.int邏輯值,如果為TRUE,則繪製置信區間pval邏輯中,如果為TRUE,則繪製p值pval.method是否添加一個文本,其中包含用於計算pvalue的檢驗名稱,該文本對應於生存曲線的比較。僅在pval=TRUE時使用test.for.trend邏輯值,默認為FALSE,如果是TRUE,返回p值的趨勢檢測surv.median.line用於在中間生存點繪製水平/垂直線的字符向量,可選擇的值包括c("none","hv","h","v")中的一個,其中v:垂直,h:水平risk.table顯示絕對數量和風險個體的百分比cumevents指定是否顯示累計事件數表的邏輯值,默認值為FALSEcumcensor邏輯值,指定是否顯示審查累計次數的表,默認值為FALSEtables.height數值(在[0-1]中),指定主生存圖下所有表的一般高度add.all邏輯值如果為真,則將合併患者的生存曲線(空模型)添加到主圖中combine邏輯值如果為TRUE,則在同一繪圖上合併列表survfit對象2.3 示例:
#首先,安裝並加載包,直接在R中安裝即可
install.packages("survival")install.packages("survminer")library(survival)library(survminer)
#示例數據選用R語言中非常出名的lung數據集
#查看數據組成View(lung)
#表中數據解釋:
?time:患者生存時間,單位是days?status:患者結局,1表示刪失,2表示死亡?其餘變量:自變量,比如:age表示年齡,sex表示性別等等
#然後,使用該數據擬合生存曲線 (這裡使用Survival包,具體生存分析的方法可以查看Survival包學習文檔)
fit<- survfit(Surv(time, status) ~ sex, data = lung)
#構建好fit對象後,開始畫圖
#默認參數畫圖ggsurvplot(fit, data = lung)
# 添加中位生存ggsurvplot(fit, data = lung, surv.median.line = "hv")