我们在临床中经常使用生存曲线来表示患者的累积生存率或发病率,如下图所示,Kaplan-Meier生存曲线能够很好的表示出患者不同时间的发病率,生存率等关键数据,让人一目了然。
今天我们来演示一下如何做出像上面一样两张的图片,其中彩色的图片来自我们上次的SEER数据库的文章,题目为:Incidence, Prognostic Factors and Survival Outcome in Patients With Primary Hepatic Lymphoma。还是使用我们既往的乳腺癌数据,本来不想使用这个数据的,可是确实没找到好的数据。有需要的朋友关注公众号回复:乳腺癌,即可获得该数据。
需要survival、survminer两个包,需提前下载好。
我们先导入包和乳腺癌的数据
library(survival)
library("survminer")
library(foreign)
bc <- read.spss("E:/r/test/Breast cancer survival agec.sav",
use.value.labels=F, to.data.frame=T)
bc <- na.omit(bc)
names(bc)
我们先来看看数据:
age表示年龄,pathsize表示病理肿瘤大小(厘米),lnpos表示腋窝淋巴结阳性,histgrad表示病理组织学等级,er表示雌激素受体状态,pr表示孕激素受体状态,status结局事件是否死亡,pathscat表示病理肿瘤大小类别(分组变量),ln_yesno表示是否有淋巴结肿大,time是生存时间,后面的agec是我们自己设定的,不用管它。
我们本次想比较是否有淋巴结肿大(ln_yesno)对乳腺癌生存结局的影响
先拟合和解析方程,得出了每组患者的事件发生数、生存时间等数据
fit <- survfit(Surv(time,status) ~ln_yesno,
data = bc) # 拟合方程
summary(fit)
ggsurvplot(fit, data = bc)
ggsurvplot(fit, data = bc,
conf.int = TRUE,
risk.table = TRUE) # 添加风险表
在这里插入代码片
```ggsurvplot(fit, # 创建的拟合对象
data = bc,
conf.int = TRUE, # 显示置信区间
pval = TRUE, # 添加P值
add.all = TRUE) # 添加总患者生存曲线
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210226103523522.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlZ2U4NTc=,size_16,color_FFFFFF,t_70)
还可以进一步美化
```r
ggsurvplot(fit, # 创建的拟合对象
data = bc, # 指定变量数据来源
conf.int = TRUE, # 显示置信区间
pval = "log-rank test p: 0.031", # 添加P值
surv.median.line = "hv", # 添加中位生存时间线
risk.table = TRUE, # 添加风险表
risk.table.col = "strata", # 根据分层更改风险表颜色
xlab = "Follow up time(d)", # 指定x轴标签
legend = c(0.7,0.2), # 指定图例位置
legend.title = "Kaplan-Meier", # 设置图例标题
legend.labs = c("pr=1", "pr=0"), # 指定图例分组标签
break.x.by = 10,# 设置x轴刻度间距
break.y.by = 0.1,# 设置y轴刻度间距
palette = c("#E7B800", "#2E9FDF"),##更改线条颜色
ggtheme = theme_bw()) #添加网格线
ggsurvplot(fit, data = bc,
conf.int = TRUE, # 增加置信区间
fun = "cumhaz") # 绘制累计风险曲线
ggsurvplot(fit, data = bc,
conf.int = TRUE, # 增加置信区间
fun = "cumhaz",# 绘制累计风险曲线
pval = "log-rank test p:0.0025", # 添加P值
risk.table = TRUE, # 添加风险表
risk.table.col = "strata", # 根据分层更改风险表颜色
xlab = "Follow up time(d)", # 指定x轴标签
legend = c(0.2,0.8), # 指定图例位置
legend.title = "Kaplan-Meier", # 设置图例标题
legend.labs = c("pr=1", "pr=0"), # 指定图例分组标签
break.x.by = 10,# 设置x轴刻度间距
break.y.by = 0.05,# 设置y轴刻度间距
palette = c("#E7B800", "#2E9FDF"),##更改线条颜色
ggtheme = theme_bw()) #添加网格线