R语言绘制生存曲线图

Python0295

R语言绘制生存曲线图,第1张

下图显示内置数据集colon,病人rx处理分为三组(下图第三列),对照组: Obs ,处理组一: Levamisole (Lev) ,处理组二: Levamisole + 5-fluorouracil (Lev+5FU)

# loads dplyr

library(dplyr)

# core survival analysisfunctions

library(survival)

# recommended forvisualizing survival curves

library(survminer)

#加载内置colon数据集

data(colon)

#list directory contents

ls(colon)

得到如下图:

#创建生存对象

fit <- survfit(Surv(time, status)~rx, data=colon)

#level()是为了看分组水平情况,以确定对照组,一般level()之后第一个为对照组

levels(colon$rx)

ggsurvplot(fit,risk.table=TRUE,#生存统计统计表

                  conf.int=TRUE,#添加置信区间带

                  palette = c("skyblue","green","red"),#颜色设置

                  pval=TRUE,#log-rank检验

                   pval.method=TRUE)#添加检验text

至于是treatment中的哪一组与Obs相比,显著性,差异性更大,需要查看 Lev 和 obs 对比的p值及HR,以及 (Lev+5FU) 和 Obs 对比的p值及HR,评价分组的治疗效果

#Cox Regression,评价rx分组后治疗效果

fit1<-coxph(Surv(time, status)~rx, data=colon)

fit1

1. 安装和加载包

绘制Kaplan-Meier生存曲线需要用到的R包:survminer和survival。

library(survminer) # 加载包

library(survival) # 加载包

2 拟合曲线

R中使用survfit()函数来拟合生存曲线。

fit.3<-survfit(Surv(住院天数+病程,组别)~cd1656,data=data)

3. 绘制曲线函数

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, ...)

# 参数解释

fit # 拟合的生存曲线对象

data # 用来拟合生存曲线的数据集

fun  # 常用三个字符参数;

# "event"绘制累积事件(f(y)=1-y),

# "cumhaz"绘制累积危害函数(f(y)=-log(y))

# "pct"绘制生存概率(百分比)。

color # 设置生存曲线的颜色。

# 如果只有1条曲线,则直接设置color="blue";

# 如果有多条曲线,默认color="strata",按分组为生存曲线着色;

# 也可以自定义调色板来设置曲线颜色。

palette # 调色板,默认"hue"。

# 可选调色板有"grey","npg","aaas","lancet",

# "jco", "ucscgb","uchicago","simpsons"和"rickandmorty".

linetype = 1 # 设置曲线线型。可以按"strata"设置线型;

# 或按数字向量c(1, 2)或按字符向量c("solid", "dashed")设置

conf.int # 逻辑词;默认FASLE;为TRUE则绘制曲线置信区间

pval = FALSE # 逻辑词;为TRUE则将统计检验计算的p值添加到图上;

# 为数字,则直接指定P值大小,如pval = 0.03;

# 为字符串,则添加字符串到图上,如pval = "p-value: 0.031"

pval.method  # 逻辑词,是否添加计算p值的统计方法的文本;

# 只有当 pval = TRUE时, 才会在图上添加检验方法文本

test.for.trend # 逻辑词,默认为FALSE;

# 为TRUE则返回趋势p值的检验,趋势检验旨在检验生存曲线的有序差异

surv.median.line # 在中位生存时间点处绘制水平或垂直线的字符向量;

# 可用值有"none"、"hv"、"h"、"v";其中v绘制垂直线,h绘制水平线。

risk.table = FALSE  # 逻辑词,图上是否添加风险表;

# "absolute" 显示处于风险中的绝对数量;

# "percentage" 显示处于风险中的百分比数量

# "abs_pct" 显示处于风险中的绝对数量和百分比

cumevents # 逻辑词,是否添加累计事件表

cumcensor # 逻辑词,是否添加累计删失表

tables.height = 0.25 # 生存曲线图下所有生存表的高度,数值0-1之间

group.by  # 包含分组变量名称的字符向量,向量长度≤2

facet.by # 字符向量,指定绘制分面生存曲线的分组变量(应≤2)的名称

ggtheme=theme_survminer() # 设置ggplot2主题,如theme_bw()

tables.theme # 作用于生存表的ggplot2主题名称

# 有theme_survminer、theme_cleantable()

add.all = FALSE # 逻辑词;是否添加总患者生存曲线到主生存图中