R语言 生存分析

article/2025/10/26 20:49:33

文章目录

  • R语言进行生存分析
    • 1.下载示例数据
    • 2.R语言代码实例详解
    • 3.难点解读
    • 4.补充:如何用R语言 手动计算生存率

R语言进行生存分析

1.下载示例数据

示例数据连接

2.R语言代码实例详解

#示例数据输入
clinical <- read.table("clinical_clust.txt",header = T, row.names = 1, sep = "\t", check.names = F, na.strings = "", fill = T, stringsAsFactors = F)
RPPA_Hierclust <- read.table("RPPA_Hierclust_clusters.txt", header = T, stringsAsFactors = F)#将两个文件需要的数据组合抽取并组合在一起
n_censor <- clinical[6,]
clinical[6,which(n_censor == "DECEASED")] <- 0
clinical[6,which(n_censor != "DECEASED")] <- 1
clinical_json <- clinical[c(6, 3, 2, 1),]
rownames(clinical_json) <- c("n_censor", "n_event", "surv", "time")
colnames(clinical_json) <- NULL
t_clinical_json <- t(clinical_json)
t_clinical_json <- apply(t_clinical_json, 2, as.numeric) #将双引号去除
t_surv <- t_clinical_json
t_surv <- cbind(t_surv, as.matrix(RPPA_Hierclust$cluster))
colnames(t_surv)[5] <- "clust"#用R语言对上述数据进行生存分析
library(survival)
#第一步:用Surv生成一个 survival object####
Sur_obj <- Surv(t_surv[,4], t_surv[,2])#第一个参数是time,生存时间,对于右截尾数据,这是follow up time#第二个参数是event, 即the status indicator, normally 0=alive,1=dead#第二步:用survfit创造生存曲线模型####
model <- survfit(Sur_obj~1) #如果用所有的数据,不进行分组,则后面参数用1
model_1 <- survfit(Sur_obj~t_surv[,5]) #如果用聚类结果进行分组,则后面写分组的结果#第三步:用survdiff计算两条或者多条生存曲线的差异显著性####
km <- survdiff(Surv_obj~t_surv[,5])#第四步:结果的形象化展示(结果展示见代码后面)
plot(model)
plot(model_2) #可以展示,但是结果美观程度不够
library(survminer) #用survminer进行漂亮的展示
ggsurvplot(model_2, main = "Survival curve", data = t_surv,pval=TRUE  #添加P值
)

plot(model)图片
在这里插入图片描述
plot(model_2)图片
在这里插入图片描述
ggsurvplot(model_2) 图片
在这里插入图片描述

3.难点解读

  1. 理解用R语言进行生存分析的大纲
    (1)用Surv 生成survival object
    (2)用survfit 生成拟合的生存曲线
    (3)用survdiff 计算两条或者两条以上生存曲线的差异表达值
    (4)用适当的方法展示生存曲线

  2. P值虽然可以较好的展示出来,但是将P_value进行输出并不容易,下面展示P_value 的输出

km <- survdiff(Surv_obj~t_surv[,5])
p.value <- 1 - pchisq(km$chisq, length(km$n) - 1) #用chisq值和自由度的结果自行计算P.value
print(p.value)

3.关于生存分析系列概念的理解,可以参考博客:生存分析,里面有非常详细的讲解

4.补充:如何用R语言 手动计算生存率

#延续上述数据输入,将数据按照time进行排序,计算生存率并替换第三列的数据
#将surv行变成生存率
clust_unique <- unique(RPPA_Hierclust$cluster)
clinical_clust <- NULL
for (i in 1:length(clust_unique)){i_station <- which(RPPA_Hierclust$cluster == i)t_clinical_json_clust <- t_clinical_json[i_station, ]#将t_clinical_json 按照time进行排序unique_sort <- unique(sort(t_clinical_json_clust[,4]))right_sort <- NULLfor(n in 1:length(unique_sort)){right_sort <- c(right_sort, which(t_clinical_json_clust[,4] == unique_sort[n]))}t_clinical_json_clust <- t_clinical_json_clust[right_sort,]#将排序的后的数据计算生存率allpatiants <- nrow(t_clinical_json_clust)unique_time <- unique(t_clinical_json_clust[,4])P <- 1n <- allpatiantsfor(j in 1:length(unique_time)){time_position <- which(t_clinical_json_clust[,4] == unique_time[j])censor_sum <- sum(t_clinical_json_clust[time_position, 1])d <- sum(t_clinical_json_clust[time_position, 3])P <- P*((n-d)/n)n <- n-d-censor_sum t_clinical_json_clust[time_position, 3] <- rep(P, length(time_position))}#put it into clinical_clustclinical_clust[[i]] <- list(t_clinical_json_clust)
}

http://chatgpt.dhexx.cn/article/YtnWIQTc.shtml

相关文章

TCGA_生存分析

library("survival") library("survminer") 生存分析需要三个 vector&#xff0c;在一个dataframe中&#xff1a; 生存时间&#xff0c;以mouths或者days作单位&#xff1b;结局&#xff0c;"Dead"或者"Alive"&#xff0c;"Ali…

浅谈生存分析

为什么要用生存分析&#xff1f; 相信大家对于生存分析这一概念已有相当多的了解&#xff0c;但在进行相关操作前&#xff0c;是否思考过为何要使用生存分析&#xff1f; 小编将通过一个事例进行说明&#xff1a;考虑研究对象为某一患病群体&#xff0c;将该群体分为两组&…

R数据分析:生存分析与有竞争事件的生存分析的做法和解释

今天被粉丝发的文章给难住了&#xff0c;又偷偷去学习了一下竞争风险模型&#xff0c;想起之前写的关于竞争风险模型的做法&#xff0c;真的都是皮毛哟&#xff0c;大家见笑了。想着就顺便把所有的生存分析的知识和R语言的做法和论文报告方法都给大家梳理一遍。 什么时候用生存…

php 生存分析,HPA数据库08.做生存分析

生信论文的套路 ONCOMINE从全景、亚型两个维度做表达差异分析&#xff1b; 临床标本从蛋白水平确认(或HPA数据库)&#xff0c;很重要&#xff1b; Kaplan-Meier Plotter从临床意义的角度阐明其重要性&#xff1b; cBio-portal数据库做基因组学的分析(机制一)&#xff1b; STRIN…

生存分析(2)

接上篇文章生存分析&#xff08;1&#xff09;&#xff0c;本文将进一步介绍生存分析中有关生存率的具体算法及其应用 Kaplan-Meier法&#xff08;K-M法、乘积极限法&#xff09; Kaplan-Meier法由Kaplan和Meier于1958年提出&#xff0c;直接用概率乘法定理估计生存率&#x…

生物统计分析之生存分析

简介 生存分析(Survival analysis)是指根据试验或调查得到的数据对生物或人的生存时间进行分析和推断&#xff0c;研究生存时间和结局与众多影响因素间关系及其程度大小的方法&#xff0c;也称生存率分析或存活率分析。临床医学数据生存分析是将临床医学中事件的现象与结果&am…

生存分析研究

生存分析 生存分析基础知识生存分析生存数据生存函数1.描述性 生存分析方法生存分析统计方法非参数方法半参数方法参数方法 生存分析机器学习模型 生存分析研究的内容1.描述生存过程2.比较生存过程3.分析危险因素4.建立数学模型 研究思路1.数据2.模型设计3.实验部分&#xff08…

生存分析

1 KM法计算生存率——非参数模型2 log-rank秩检验比较不同组的生存率2.1 输入数据2.2 建立假设2.3 log-rank秩精确性检验2.4 可视化 1 KM法计算生存率——非参数模型 乘积极限法适用于离散数据&#xff0c;它用于建立时刻 t t t 上的生存函数&#xff0c;根据 t t t 时刻之前…

8.常用统计分析方法——生存分析

目录 生存分析基本概念 生存率估计 1. 乘积极限法 2. 寿命表法 3. 生存曲线 生存曲线比较 COX比例风险回归模型 1. 建立COX回归模型 2. 比例风险假定的检验 3. 生存预测 生存分析基本概念 logistic回归中因变量是终点事件发生与否&#xff0c;而生存分析则关注的是终…

生存分析(1)

一、基本概念和名词解释 1.生存分析&#xff08;survival analysis&#xff09; 是研究生存现象和响应时间数据及其统计规律的一门学科。 是将事件的结果&#xff08;终点事件&#xff09;和出现这一结果所经历的时间结合起来分析的一种统计分析方法。 生存分析与其他多因素…

什么是生存分析(survival analysis)?

什么是生存分析(survival analysis)? 用来研究生存时间的分布规律以及生存时间和相关因索之间关系的一种统计分析方法 基本概念 失效事件(Failure Event):常被简称为事件,研究者规定的终点结局,医学研究中可以是患者死亡,也可以是疾病的发生、某种治疗的反应、疾病的…

生存分析原理简明教程 单因素生存分析 Kaplan-Meier、LogRank 只能针对单一的变量进行 多因素cox回归分析

一、生存分析 狭义上来说&#xff0c;生存分析用来分析病人的生存和死亡情况。广义上讲的是事件是否发生。在这里就用是否死亡来代替。一般来说&#xff0c;生存的数据一般有两个变量&#xff0c;一个事件是否发生&#xff0c;病人是否死亡&#xff0c;死亡为1&#xff0c;未死…

IRIS 2021 技术文档 First Look 25 -- 数据库加密

本文档向您介绍 InterSystems IRIS数据平台如何处理数据库加密&#xff0c;这是所有企业安全战略的重要组成部分。 本文档介绍了数据库加密的情况&#xff0c;并引导您完成一些与创建加密数据库有关的初始任务。一旦您完成了本指南&#xff0c;您将创建一个密钥文件&#xff0c…

开始使用了

开始了 今天开始用,请大家指教 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown…

Oracle LiveLabs实验:DB Security - Key Vault

概述 此实验关于Oracle Key Vault。 此实验申请地址在这里&#xff0c;时间为55分钟。 实验帮助在这里。 实验生成需要15分钟左右&#xff0c;最终会生成2个虚机&#xff0c;以下为我的专属配置&#xff1a; 129.146.74.138 DBSEC-LAB &#xff08;数据库主机&#xff09;…

idea 启动项目找不到程序包,提示程序包不存在

我是一个父子工程项目,项目在编译,build,rebuild的时候都没用报错,但用idea启动的时候就报错 error:找不到该程序包.或者类… 在网上找了很多方法都没有解决:reimport maven ,rebuild 都不行 .maven实际是完整的,本地也有这个jar包. 现在我在网上找了几种解决方法: 1.是因为id…

docker-compose vmwkmip

vSphere 6.5 中引入了许多 vSphere 安全增强功能,包括备受期待的虚拟机加密功能。为了能够使用新的虚拟机加密功能,您需要先设置一个 密钥管理互操作性协议 (KMIP)服务器(如果您还没有)并将其与您的 vCenter Server 相关联。有很多 3rd 方供应商提供与新的 VM 加密功能互操…

运维实战:Xtrabackup备份与还原

目录 运维实战&#xff1a;percona-xtrabackup备份与还原 一、工作原理 二、版本区别 三、Xtrabckup特点及限制 3.1 特点 3.2 限制 四、xtrabckup安装&#xff08;mariadb5.5 xtrabckup 2.4&#xff09; 4.1 rpm安装xtrabackup 4.2 xtrabackup的rpm包含哪些内容 4.2…

FileNotFoundException: jdcbc.properties (系统找不到指定的文件) 该问题的解决方法

一般遇到这种问题都是我们将properties文件创建在模块下面了, 这时候,由于默认访问路径在项目下面, 所以此时我们应该加上当前模块的路径, 即可解决这个问题

pykmip测试

开源路径:https://github.com/OpenKMIP 创建key并加解密 import ssl from kmip.pie.client import ProxyKmipClient, enums from kmip.pie import objectsclient ProxyKmipClient(hostname127.0.0.1,port5696,cert/home/nxy/PyKMIP/bin/client_cert.pem,key/home/nxy/PyKMIP…