R语言-生存分析与结果的图像处理

数据准备:

library("survival")
library("survminer")
data("lung")

调用“lung”数据集,使用head()命令调查前6行,得到以下结果:

 inst time status age sex ph.ecog ph.karno pat.karno meal.cal wt.loss
1    3  306      2  74   1       1       90       100     1175      NA
2    3  455      2  68   1       0       90        90     1225      15
3    3 1010      1  56   1       0       90        90       NA      15
4    5  210      2  57   1       1       90        60     1150      11
5    1  883      2  60   1       0      100        90       NA       0
6   12 1022      1  74   1       1       50        80      513       0

time是指生存时间,status是二值型的生存状态,其中“1”代表存活,“2”代表已经死亡。

KM非参数法:

调用survival包中的survfit来进行生存分析,得到每个时间段中的生存率。

fit <- survfit(Surv(time, status) ~ 1, data = lung)

直接查看fit的信息可以看到

> fit
Call: survfit(formula = Surv(time, status) ~ 1, data = lung)n  events  median 0.95LCL 0.95UCL 228     165     310     285     363

n:代表总的样本数为228个
events:代表status为2的样本数(死亡样本数)
0.95LCL:95% 置信区间的下界
0.95UCL:95%置信区间的上界
median:代表中位数

Log-Rank检验:

针对使用KM方法的生存分析,可以使用survdiff()来比较两组或者多组之间的的生存曲线,调查它们生存率和标准误之间的差异,输出p值。

> survdiff(Surv(time, status) ~ ph.karno, data = lung)
Call:
survdiff(formula = Surv(time, status) ~ ph.karno, data = lung)n=227, 1 observation deleted due to missingness.N Observed Expected (O-E)^2/E (O-E)^2/V
ph.karno=50   6        5     5.71    0.0874    0.0935
ph.karno=60  19       16     9.64    4.1905    4.5095
ph.karno=70  32       29    20.53    3.4943    4.0275
ph.karno=80  67       47    43.30    0.3161    0.4390
ph.karno=90  74       49    58.85    1.6489    2.5910
ph.karno=100 29       18    25.97    2.4454    2.9262Chisq= 12.3  on 5 degrees of freedom, p= 0.03

COX半参数法:

使用coxph()函数来进行生存分析:

cox_single <- coxph(Surv(time, status) ~ sex, data = lung)    #单变量
cox_muti <- coxph(Surv(time, status) ~ age + sex + ph.ecog, data =  lung)#多变量

使用summary函数可以查看返回当结果和p值:

> summary(cox_single)
Call:
coxph(formula = Surv(time, status) ~ sex, data = lung)n= 228, number of events= 165 coef exp(coef) se(coef)      z Pr(>|z|)
sex -0.5310    0.5880   0.1672 -3.176  0.00149 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1exp(coef) exp(-coef) lower .95 upper .95
sex     0.588      1.701    0.4237     0.816Concordance= 0.579  (se = 0.021 )
Likelihood ratio test= 10.63  on 1 df,   p=0.001
Wald test            = 10.09  on 1 df,   p=0.001
Score (logrank) test = 10.33  on 1 df,   p=0.001

coxph()会给出Likelihood ratio test,Wald test,Score (logrank) test三种检验的结果,当样本数量足够大时,三者的值相似,一般情况下Likelihood ratio test的值更加准确。

相似比检验:

针对cox模型,R里面的cox.zph函数可以对其进行检验:

R<-cox.zph(cox.muti)> Rchisq df    p
age     0.188  1 0.66
sex     2.305  1 0.13
ph.ecog 2.054  1 0.15
GLOBAL  4.464  3 0.22

其原假设为符合PH假定,代表假定HR值不随时间发生变化,满足比例风险假定。在结果中所有变量的p值均>0.1,无法拒绝原假设。

生存曲线和诊断图:

1,plot()
对于KM方法而言可以直接使用plot()命令来绘制生存曲线:

plot(fit,main="survival-KM",xlab="time",ylab="rate")

2,ggsurvplot
使用ggsurvplot()函数对KM的结果绘制生存曲线:

ggsurvplot(fit,pval = FALSE, conf.int = TRUE, #是否显示p值/显示风险区域risk.table = TRUE, # 将风险表显示在生存曲线下面risk.table.col = "strata", linetype = "strata", surv.median.line = "hv", # 中位数的标记可选(hv,v,h)ggtheme = theme_bw(), # 改变ggplot2的样式palette = "green"    #设置曲线颜色
)

3,多组生存曲线
在绘制多组间生存曲线时,pval=TRUE可以输出log-rank的p值,使用pval.method=T可以显示计算p值的方法;

调查ph.ecog组间生存曲线的差异:

fit <- survfit(Surv(time, status) ~ ph.ecog, data = lung)
ggsurvplot(fit,data=lung,pval=T,risk.table = T,risk.table.col="red",pval.method=T)

%其他参数:

risk.table = TRUE    #风险表是否显示
risk.table.col="red" #风险表颜色
surv.median.line = "hv"#中位数标记的方法(hv,h,v)

4,COX模型的Hazard ratio图:
使用ggforest()函数进行绘制,可以得到log-rank的p值,AIC值
5,Schoenfeld individual检验诊断图:
又称“Schoenfeld Residuals Test”,用于调查残差与时间的独立性,从而检验Cox模型中的比例风险假设。相当于是cox.zph()结果的可视化表现。P值不显著,说明符合原假设

R<-cox.zph(cox_muti)  #cox多变量检验
ggcoxzph(R,resid=T,se=T,point.col = "red",point.size = 1)

参考文献:

https://www.mbaskool.com/business-concepts/statistics/8766-schoenfeld-residuals-test.html
https://blog.csdn.net/weixin_43700050/article/details/100938707
https://blog.csdn.net/xiaohukun/article/details/78019726
https://blog.csdn.net/jaen_tail/article/details/79081954

*刚刚接触生存分析这一块,还有很多东西需要去学习,望大家一起讨论一起学习。Fight!

R语言-生存分析与结果的图像处理相关推荐

  1. R语言生存分析(survival analysis)与生存资料有关的概念详解

    R语言生存分析(survival analysis)与生存资料有关的概念详解 目录 R语言生存分析(survival analysis)与生存资料有关的概念详解 #生存分析

  2. R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间

    R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间 目录

  3. R语言生存分析COX回归分析实战:以乳腺癌数据为例

    R语言生存分析COX回归分析实战:以乳腺癌数据为例 目录

  4. R语言生存分析Log-rank假设检验组间生存曲线比较实战

    R语言生存分析Log-rank假设检验组间生存曲线比较实战 目录 R语言生存分析Log-rank假设检验组间生存曲线比较实战 #log-rank检验

  5. R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况

    R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况 目录

  6. R语言生存分析COX回归分析实战:放疗是否会延长胰脏癌症患者的生存时间

    R语言生存分析COX回归分析实战:放疗是否会延长胰脏癌症患者的生存时间 目录

  7. R语言生存分析可视化分析

    生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法. 生存分析被用于各种领域,例如: 癌症研究为患者生存时间分析, "事件历史分析"的社会学 在工程的"故障 ...

  8. 科研绘图之R语言生存分析KM曲线累计风险表放在图片内部

    科研绘图之R语言生存分析KM曲线和累计风险表 KM估计 R语言展示KM估计的生存函数曲线 1.最简单的方法 2.利用survminer包绘制 3.进一步美化,添加累计风险表格.图例.文本注释 KM估计 ...

  9. R语言生存分析数据分析可视化案例

    目标 本文的目的是对如何在R中进行生存分析进行简短而全面的评估.关于该主题的文献很广泛,仅涉及有限数量的(常见)问题.最近我们被客户要求撰写关于生存分析的研究报告,包括一些图形和统计输出. 可用的R包 ...

最新文章

  1. Clojure世界:单元测试
  2. 51nod 1499 (最小割)
  3. 量化交易,量化分析推荐书单
  4. Error:The supplied javaHome seems to be invalid. I cannot find the java executable
  5. 自助bi工具如何搭建数据可视化
  6. 设置共享打印机连接提示0x000000bcb错误问题的修复办法
  7. 软件工程--需求分析的任务详解
  8. ubuntu安装jre
  9. MATLAB矩阵的平均值和最大值
  10. linux基础篇读书笔记
  11. 出中的意思是什么_从里出来是什么意思
  12. vim 文件保存退出 文件相关操作汇总
  13. ioi 赛制_杨骏昭IOI2019参赛总结
  14. 课本剧剧本和计算机专业相关,【课本剧】 高中课本剧剧本大全
  15. x的y次方python表达式怎么写_x 的 y 次方(xy) 以下表达式正确的是________
  16. expresscache和primocache加速资料整理
  17. 一文读懂设计模式--适配器模式
  18. Java | 二维数组的初始化
  19. php将一组数从小到大排序,php数组排序从小到大函数
  20. 涡轮发动机的推力有多大?

热门文章

  1. 硬盘/移动硬盘分区合并失败数据丢失了如何恢复?
  2. 荔枝FM:异地多活IDC机房架构
  3. 二维图像旋转的坐标公式推导
  4. linux下编写打印文件的函数,Linux系统编程笔记-文件IO
  5. 走进海尔考察||探秘--《精益·6S管理研修》
  6. 智能小车红外避障模块----使用教程
  7. 玩转树莓派之 配置openvino进行神经计算棒2加速
  8. 关于德国商标的注册概要
  9. Lesson 8 几何渲染
  10. ArcGIS中的影像解决方案_2019