绘制pr曲线图_生存分析如何绘制事件发生累计概率曲线图?
公眾號前段時間發了篇推文《ggsurvplot()函數繪制Kaplan-Meier生存曲線》用來介紹生存曲線的繪制,下面的推文內容跟這篇文章結合著看。
在生存分析中我們通常關注個體在時間t之前存在的概率(或者不發生感興趣事件的概率),并且繪制生存函數曲線。
生存函數(S(t)=Pr(T>t))是一個階梯函數,說明隨著時間的推移累計生存概率。但有時候研究者更加關注的是隨著時間推移事件發生累計概率(顧名思義就是1-S(t))。
近期就收到一個咨詢,希望可以繪制1-S(t)曲線,并且輸出風險表(risk table),在圖上標注曲線的置信區間。
我們知道SPSS可以輸出生存函數、1-生存函數、風險函數、對數風險函數。
SPSS具體操作如下:
1.打開SPSS軟件,導入需要分析的數據,數據設置好格式后,點擊分析-生存分析-Kaplan-Meier,如下圖1所示:
圖12.如下圖2所示定義好時間、狀態和因子,點擊右邊的選項;全部勾選生存函數、1減去生存函數、風險函數、對數生存。
圖2 SPSS繪制生存曲線操作3.選好之后,點擊繼續-確定就可以得到想要的圖。
圖3 SPSS輸出的生存函數圖和1-生存函數圖其中第二張圖就是累計事件發生概率曲線(1-S(t))。
但是SPSS輸出圖不夠美觀,并且不能添加置信區間和風險表。
這個時候首先想到用R的"survminer"包實現優雅地繪制生存曲線,解決這個需求最稱手的當屬ggsurvplot函數。
話不多說直接上代碼和結果:
R軟件具體操作如下:
1.導入數據(略),加載需要的包:
library(ggplot2)?#?加載ggplot2包library(survival)?#?加載survival包擬合生存對象
library(survminer)?#?加載survminer包繪制生存曲線
2.定義需要用于繪制生存函數的formula,直接用ggsurvplot畫圖。
ggsurvplot(survfit(Surv(Os,Status)~Group,?data=data1),???????????pval=TRUE,
???????????risk.table?=?TRUE)
#?參數解釋
Surv(Os,Status)~Group,data=data1?#?生存函數formula
pval=TRUE?#?輸出log-rank檢驗P值
pval.method=TRUE??#?可以顯示檢驗方法
risk.table?=?TRUE?#?輸出風險表,默認FALSE
上面的代碼與下面2行代碼等同:
f?ggsurvplot(f,?pval=TRUE,?risk.table?=?TRUE)輸出的圖如下:
圖4 ?R ggsurvplot繪制的生存函數圖我們發現默認輸出的圖是生存函數圖,那要怎么得到事件發生的累計概率曲線圖呢?
這時候需要用到(fun = " ")這個參數。
小編查閱了知乎、簡書等分享的文章,其中不乏愛好R語言的臨床研究者梳理的生存分析操作流程,有一些誤以為fun="cumhaz"(累計風險圖)就是事件發生的累計概率曲線圖。
ggsurvplot(survfit(Surv(Os,Status)~Group,data=data1),???????????fun="cumhaz",
???????????pval=TRUE,
???????????risk.table?=?TRUE)
從圖5看到,曲線是反過來的,但是仔細看縱坐標不是0-1,原來"cumhaz" 繪制的是隨時間推移事件發生的累計風險(HR)。
圖5 R ggsurvplot繪制的累計風險函數圖其實,仔細參閱ggsurvplot的參數說明,這個問題就迎刃而解了:
-?"cumhaz"?plots?the?cumulative?hazard?function?(f(y)?=?-log(y)),?繪制累計風險圖-?"event"?plots?cumulative?events?(f(y)?=?1-y),?繪制1-S(t)曲線
-?"pct"?for?survival?probability?in?percentage,繪制百分比生存概率圖
定義fun = "event",輸出置信區間,接下來調整一下圖的格式、配色,就可以得到一張漂亮的事件發生的累計概率曲線圖啦。
ggsurvplot(survfit(Surv(Os,Status)~Group,data=data1),???????????fun?=?"event",?#?l繪制1-S(t)曲線
???????????conf.int?=?TRUE,??#?輸出曲線置信區間
???????????conf.int.style="ribbon",?#?可定義的類別包括("ribbon",?"step")
???????????conf.int.alpha=0.45,?#?設置置信區間透明區
???????????surv.plot.height=?0.7,?#?生存圖高度
???????????main?=?"Survival?curve",
???????????legend.title?=?"Group",
???????????legend.labs?=?c("Treat",?"Control"),
???????????legend=c(0.8,0.7),
???????????xlab="Days",
???????????ylab="Cumulative?Event?Rate?(%)",?#?或者直接寫“1-S(t)”
???????????xlim?=?c(0,60),?ylim?=?c(0,1),
???????????risk.table?=?TRUE,
???????????tables.height?=?0.15,?#?生存曲線圖下所有生存表的高度,數值0-1之間
???????????tables.theme?=?theme_cleantable(),
???????????font.main?=?c(14,?"bold",?"darkblue"),
???????????font.x?=?c(14,?"plain",?"black"),
???????????break.x.by?=?10,?break.y.by?=?0.1,
???????????font.y?=?c(14,?"plain",?"black"),
???????????font.tickslab?=?c(12,?"plain",?"black"),
???????????risk.table.col="strata",
???????????risk.table.height=0.2,
???????????palette?=?"npg",?#?可選調色板有?"grey","npg","aaas","lancet","jco","ucscgb","uchicago","simpsons"和"rickandmorty".
???????????ggtheme?=?theme_bw()?#?Change?ggplot2?theme
??????????)
圖6 R ggsurvplot繪制的1-生存函數圖
本期咨詢答疑分享就到這里了,敲黑板總結如下:
- R ggsurvplot 定義fun = "event"可以繪制1-S(t)曲線。
- 學習R語言時一定要仔細看package的介紹文檔,最好是結合算法原理來理解各個參數的使用。
歡迎各位小伙伴交流探討,有任何意見和疑問隨時后臺留言~
相關文章
R語言統計與繪圖:forestplot包繪制森林圖 2020-05-29 R語言統計與繪圖:pROC包繪制ROC曲線 2020-05-25 R語言統計與繪圖:Kaplan-Meier生存曲線進階 2020-05-21 R語言統計與繪圖:生存曲線的兩兩比較 2020-04-01 R語言統計與繪圖:生存率的比較 2020-03-24總結
以上是生活随笔為你收集整理的绘制pr曲线图_生存分析如何绘制事件发生累计概率曲线图?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java sl4j 日志_Java日志框
- 下一篇: ue编辑器拖拽上传图片_为百度UE编辑器