微信公众号:youngyoung_leelee

数据要求

input

 # 用 survdiff(my.surv~type, data=dat)来看看这个因子的不同水平是否有显著差异,其中默认用是的logrank test 方法。# 用coxph(Surv(time, status) ~ ph.ecog + tt(age), data=lung) 来检测自己感兴趣的因子是否受其它因子(age,gender等等)的影响。
library("survival")
# Create the survival object.
survfit(Surv(pbc$time,pbc$status == 2)~1)
?survfit()
# Give the chart file a name.
png(file = "survival.png")# Plot the graph.
plot(survfit(Surv(pbc$time,pbc$status == 2)~1))# Save the file.
dev.off()

稍微复杂一点的生存分析 及其参数详细解释

> library(survminer) # 加载包
载入需要的程辑包:ggplot2
载入需要的程辑包:ggpubr
Warning messages:
1: 程辑包‘survminer’是用R版本4.1.1 来建造的
2: 程辑包‘ggplot2’是用R版本4.1.1 来建造的
3: 程辑包‘ggpubr’是用R版本4.1.1 来建造的
> library(survival) # 加载包
> data(lung) # 加载lung数据集
Warning message:
In data(lung) : data set ‘lung’ not found
> View(lung) # 查看数据集


**

inst # 机构代码;
time # 生存天数;
status # 生存状态,1为删失,2为死亡;
age # 年龄;
sex # 性别,1为男性,2为女性;
ph.ecog、ph.karno、pat.karno # 为病人和患者评分,这里用不到;
meal.cal # 进食时消耗的卡路里;
wt.loss # 最近6个月内的体重下降。
3. 拟合生存曲线
3.1 创建生存对象
在survival包中先使用Surv()函数创建生存对象,
生存对象是将事件时间和删失信息合并在一起的数据结构。
attach(lung) # 绑定数据集,一定要有,否则下面的status识别不出
Surv(time,status) # 创建生存对象在上面输出的生存对象中,带"+"号的表示右删失数据。

**

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

fit <- survfit(Surv(time,status) ~ sex,  # 创建生存对象 data = lung) # 数据集来源

fit # 查看拟合曲线信息
从上图可知,lung数据集中男性138例,女性90例;
男性和女性发生感兴趣结局事件分别有112例和53例。
男性和女性的中位生存时间分别为270天和426天

还可以使用summary()函数输出更多详细信息。

summary(fit)

上图中survival为生存函数在生存时间点处的KM估计值。
同时,输出结果中还给出了估计的标准误差和95%置信区间

head(summary(fit))
head(summary(fit),2)
class(fit)


  1. 绘制基础曲线
ggsurvplot(fit, data = lung)

5. 自定义曲线参数 5.1 增加中位生存时间

中位生存时间(median survival time)又称为生存时间的中位数,
表示刚好有50%的个体其存活期大于该时间,是生存分析中常用的概括性统计量。

图解法是计算中位生存时间的方法。其利用生存曲线图,
从纵轴生存率为50%处画一条与横轴平行的线,并与生存曲线相交,
然后自交点画垂线与横轴相交,此交点对应的时间即为中位生存时间,
图解法比较简单直观,但结果比较粗略。

ggsurvplot(fit, data = lung,surv.median.line = "hv") # 增加中位生存时间

从图上可以看出,男性的中位生存时间小于女性。

5.2 增加置信区间

ggsurvplot(fit, data = lung,surv.median.line = "hv",  # 增加中位生存时间conf.int = TRUE) # 增加置信区间

5.3 绘制累计风险曲线

ggsurvplot(fit, data = lung, conf.int = TRUE, # 增加置信区间fun = "cumhaz") # 绘制累计风险曲线

5.4 添加风险表

ggsurvplot(fit, data = lung,conf.int = TRUE,  # 增加置信区间risk.table = TRUE) # 绘制累计风险曲线

5.5 添加总患者生存曲线

ggsurvplot(fit, # 创建的拟合对象data = lung,  # 指定变量数据来源conf.int = TRUE, # 显示置信区间pval = TRUE, # 添加P值surv.median.line = "hv",  # 添加中位生存时间线add.all = TRUE) # 添加总患者生存曲线

5.6 自定义调色板

ggsurvplot(fit, # 创建的拟合对象data = lung,  # 指定变量数据来源conf.int = TRUE, # 显示置信区间pval = TRUE, # 添加P值surv.median.line = "hv", # 添加中位生存时间线palette = "hue")  # 自定义调色板
#可选调色板有 "grey","npg","aaas","lancet","jco",
#"ucscgb","uchicago","simpsons"和"rickandmorty".

6. 美化生存曲线

ggsurvplot(fit, # 创建的拟合对象data = lung,  # 指定变量数据来源conf.int = TRUE, # 显示置信区间pval = TRUE, # 添加P值surv.median.line = "hv",  # 添加中位生存时间线risk.table = TRUE, # 添加风险表xlab = "Follow up time(d)", # 指定x轴标签legend = c(0.8,0.75), # 指定图例位置legend.title = "", # 设置图例标题legend.labs = c("Male", "Female"), # 指定图例分组标签break.x.by = 100)  # 设置x轴刻度间距6. 美化生存曲线

  • List item
  • [ ]# 参数解释
    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 # 逻辑词;是否添加总患者生存曲线到主生存图中

8.2 图标题和坐标轴标签
title # 图表标题
xlab, ylab # 分别指x轴和y轴标签
8.3 图例标题和位置
legend # 指定图例位置的字符向量:“top”(默认),“bottom”,“left”,“right”,"none"等。

legend=“none” 表示移除图例;

图例位置也可用数字向量c(x,y)指定,x和y的值应在0到1之间。

legend.title # 图例标题,如legend.title = “Sex”。
legend.labs # 指定图例标签的字符向量, 替换fit中strata的名称,顺序应与strata一致。

如 legend.labs = c(“Male”,“Female”)

8.4 坐标轴范围、刻度间距
break.time.by # 设定坐标轴刻度间距
break.x.by # 设定x轴刻度的间距,如break.x.by = 100
break.y.by # 设定y轴刻度的间距,如break.y.by = 0.2
surv.scale # 生存曲线的比例转换。允许的值为"default"或"percent"。
xlim, ylim # 指定x轴和y轴的范围,如xlim = c(0,30), ylim = c(0,1)
axes.offset # 逻辑词,默认为TRUE。为FALSE,则生存曲线图的坐标轴从原点开始。
8.5 置信区间
以下只有在conf.int = TRUE时才生效
conf.int.fill # 设置置信区间填充的颜色
conf.int.style # 设置置信区间的类型,有"ribbon"(默认),"step"两种。
conf.int.alpha # 数值,指定置信区间填充颜色的透明度;

数值在0-1之间,0为完全透明,1为不透明。

8.6 P值文本大小和位置
以下只有在pval = TRUE时才生效
pval.size # 指定p值文本大小的数字,默认为 5。
pval.coord # 长度为2的数字向量,指定p值位置x、y,如pval.coord=c(x,y)。
pval.method.size # 指定检验方法 log.rank 文本的大小
pval.method.coord # 指定检验方法 log.rank 文本的坐标
log.rank.weights # 计算log-rank检验p值的权重类型的名称。
8.7 删失点
censor # 逻辑词,默认为TRUE,在图上绘制删失点。
censor.shape # 数值或字符,用于指定删失点的形状;默认为"+“(3), 可选”|"(124)。
censor.size # 指定删失点形状的大小,默认为4.5。
8.8 生存表
所有生存表的常规参数。指定以下参数时,可应用于所有生存表(风险表、累积事件表和累积删失表)。

tables.col # 生存曲线图下所有表的颜色,默认为"black";

按strata显示则tables.col=“strata”.

fontsize # 指定风险表和累积事件表的字体大小。
font.family # 指定文字字体的字符向量,如font.family=“Courier New”.
tables.y.text # 逻辑词,默认显示生存表的y轴刻度标签;为FALSE则刻度标签被隐藏
tables.y.text.col # 逻辑词,默认FALSE;为TRUE,则表的y刻度标签将按strata着色。
tables.height # 指定所有生存表的高度,数值在0-1之间,默认为0.25.
8.8.1 风险表
risk.table.title # 风险表的标题
risk.table.pos # 指定风险表位置的字符向量;

有两种,"out"在生存图外(默认),"in"在生存图内。

risk.table.col
risk.table.fontsize
risk.table.y.text
risk.table.y.text.col
risk.table.height

这五个和上面生存表的常规参数意义是一样的

但是只应用在风险表中。

8.8.2 累积事件表
cumevents.title # 累积事件表的标题
cumevents.col
cumevents.y.text
cumevents.y.text
cumevents.height

这四个和上面生存表的常规参数意义是一样的

但是只应用于累积事件表中。

8.8.3 累积删失表
cumcensor.title # 累积删失表的标题
cumcensor.col
cumcensor.y.text
cumcensor.y.text.col
cumcensor.height

这四个和上面生存表的常规参数意义是一样的

但是只应用于累积删失表中。

8.9 生存图高度
surv.plot.height # 生存图的高度,默认为0.75;

当risk.table = FALSE时忽略

8.10 字体样式
font.title # 标题字体
font.subtitle # 副标题字体
font.caption
font.x、font.y # x轴、y轴字体
font.tickslab # 刻度标签字体
font.legend # 图例字体

用长度为3的向量分别指定大小、类型、颜色。如:

font.main = c(16, “bold”, “darkblue”)

font.x = c(14, “italic”, “red”)

font.y = c(14, “bold.italic”, “darkred”)

font.tickslab = c(12, “plain”, “darkgreen”)

font.x = 14 则只改变字体的大小

font.x = “bold” 则只改变字体类型

只有一条线的生存分析图 复杂一点的生存分析 及其参数详细解释相关推荐

  1. 如何用transition实现鼠标移到一行字从左往右伸出一条线,离开时又缩回原样(分析两种情况)?

    我们先来看下transition的相关知识 定义和用法 transition 属性是一个简写属性,用于设置四个过渡属性,如需向多个样式添加过渡效果,请添加多个属性,由逗号隔开: transition- ...

  2. 九宫格一条线连起来_9个圆圈用4条线连起来-九个点用四条线连接-数学-霍甲心同学...

    概述:本道作业题是霍甲心同学的课后练习,分享的知识点是九个点用四条线连接,指导老师为魏老师,涉及到的知识点涵盖:9个圆圈用4条线连起来_-九个点用四条线连接-数学,下面是霍甲心作业题的详细. 题目:9 ...

  3. python 一张图画多条线_Gnuplot.py在一张图上绘制多条线

    我目前正试图使用gnuplot py从文本文件中绘制多行.我可以分别绘制两条线,但当我试图在同一个图上绘制它们时,它只绘制一条线.在 这是我的代码:#!/usr/bin/env python impo ...

  4. Python访问街区10个点,并俩俩绘制一条线,得到5条线,求最短的距离和?

    Python访问街区10个点,并俩俩绘制一条线,得到5条线,求最短的距离和? 1. 效果图 2. 源码 参考 上一篇博客介绍了Python访问街区所有节点最短路径问题,并结合matplotlib可视化 ...

  5. R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间、将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间

    R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间.将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间(duration of an act ...

  6. R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间、将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间、适应时间段跨越多天的情况

    R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间.将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间.适应时间段跨越多天的情况(例如,当天 ...

  7. 排成一条线的纸牌博弈问题

    题目] 给定一个整型数组arr,代表数值不同的纸牌排成一条线.玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左边或者最右边的一张牌,最后所拿牌累加和最大的玩家获 ...

  8. n条线分平面问题解决方法总结

    注明出处,摘自 http://www.cnblogs.com/chaosheng/archive/2012/01/26/2329583.html (1) n条直线最多分平面问题题目大致如:n条直线,最 ...

  9. qpaint 在graphicsview上的qimage画一条线_solidworks2016画一个塑料外壳:用开放的草图进行切除,你会吗?...

    今天来画下面这个图形,这个图形很常规,但我们尽量用"不常规"的方法来做,用一些技巧来绘制主个图形.最近有一部电影叫<啥是佩奇>比较火,但今天我们不画这个,我个人觉得那个 ...

  10. 用html5做一条线,使用HTML5 canvas绘制线条的方法

    使用HTML5 canvas绘制线条的方法 发布时间:2020-08-29 11:24:23 来源:亿速云 阅读:96 作者:小新 这篇文章主要介绍了使用HTML5 canvas绘制线条的方法,具有一 ...

最新文章

  1. springmvc xml 空模板
  2. vue2.0s中eventBus实现兄弟组件通信
  3. zookeeper单机安装
  4. 【Redis学习】redis通讯协议
  5. html页面怎么让高度充满屏幕,怎么让一个页面高度占整个屏幕的_html/css_WEB-ITnose...
  6. 固定底部 布局_Google Flutter 布局(四)-Baseline IntrinsicWidth详解
  7. Java --- 基础学习Ⅱ
  8. 【渝粤题库】广东开放大学 外贸会计1 形成性考核
  9. python中如何去除列表中重复元素?
  10. python 原始字符串_Python原始字符串
  11. java爬虫框架哪个好_Java爬虫(二)Java爬虫框架
  12. 网络营销之百度营销技巧(一) 百度知道推广日常手册
  13. 开源一个安信可A9g小项目微信小程序定位器项目①如何在windows10上环境搭建,编译烧录代码固件,查看运行日志;
  14. 深度好文| Redis面试全攻略
  15. 信号发生器和任意波形发生器的区别
  16. LabVIEW formula node
  17. 读论文Beyond Part Models Person Retrieval with Refined Part Pooling
  18. 外汇天眼:Apple与MetaQuotes之争!谁是下一个Apple?谁会成下一个MT4/5?
  19. 虚幻蓝图实现只狼钩索系统(5)-UI失效
  20. 图像修复 : ICCV 2021 基于条件纹理和结构并行生成的图像修复【翻译】

热门文章

  1. PMSG孕马血清促性腺激素适用的应用方案
  2. 支付宝登录应用授权,后端拼接 authinfo返回app,app进行支付宝调用获取auth_code(com.alipay.account.auth)
  3. 科普 | 天才在左,疯子在右
  4. 解决跨域问题报错When allowCredentials is true, allowedOrigins cannot contain the special value “*“ since tha
  5. linux带方括号进程,Linux特殊符号大全(转摘)
  6. 装配图中齿轮的画法_装配图的视图和画法
  7. matlab中abs函数,Matlab中的abs函数是什么意思
  8. linux教程第六章,第六章:依赖性 - scons用户指南_Linux教程_Linux公社-Linux系统门户网站...
  9. 华为路由器显示连接到服务器失败怎么办,华为路由器设置好后不能上网怎么办...
  10. excel限制只能输入身份证号