014 无进展生存期Pfs分析

1、目的

经过前面的差异表达、生存、ROC的初步筛选后基本上就能确定自己的目标基因了。
下一步我们就是要对目标基因进行无病生存期的分析,这次的代码就简单多了,不需要循环多个基因,不用for循环。

PFS(无进展生存期:ProgressionFree Survival)

指从随机分组开始到第一次肿瘤进展或死亡时间。由于增加了发生恶化这一结局指标节点,随访时间短一些,对应的改善是未恶化与未死亡,但是需要对发生恶化的标准进行明确的定义。发生恶化的定义通常涉及影像学资料(普通X线,CT扫描,MRI,PET扫描,超声)或其他方面:生化进展可以根据肿瘤标志物的增加。PFS通常作为晚期肿瘤疗效评价的重要指标。

2、代码


#if (!requireNamespace("BiocManager", quietly = TRUE))
#    install.packages("BiocManager")
#BiocManager::install("limma")

#install.packages("survival")
#install.packages("survminer")


#引用包
library(limma)
library(survival)
library(survminer)
setwd("D:/生信代码复现/5.PFS/5.PFS") #💚💚💚💚💚💚💚💚工作目录(需修改)

expFile="geneExp.txt"     #表达数据文件
cliFile="Survival_SupplementalTable_S1_xena_sp"      #临床数据文件

#读取表达数据文件
rt=read.table(expFile, header=T, sep="\t", check.names=F, row.names=1)
gene=colnames(rt)[3]
data=rt
#根据目标基因表达量对样品进行分组
Type=ifelse(data[,gene]>median(data[,gene]), "High", "Low")
data=cbind(as.data.frame(data), Type)

#读取临床数据文件
cli=read.table(cliFile, header=T, sep="\t", check.names=F, row.names=1)
cli=cli[,c("PFI.time", "PFI")]
cli=na.omit(cli)
colnames(cli)=c("futime", "fustat")
cli$futime=cli$futime/365
cli=as.matrix(cli)
row.names(cli)=gsub("(.*?)\\-(.*?)\\-(.*?)\\-.*", "\\1\\-\\2\\-\\3", row.names(cli))

#数据合并并输出结果
sameSample=intersect(row.names(data), row.names(cli))
data=data[sameSample,,drop=F]
cli=cli[sameSample,,drop=F]
rt=cbind(as.data.frame(cli), data)

#比较高低表达组之间的生存差异,得到显著性p值
diff=survdiff(Surv(futime, fustat) ~ Type, data=rt)
pValue=1-pchisq(diff$chisq, df=1)
if(pValue<0.001){
	pValue="p<0.001"
}else{
	pValue=paste0("p=", sprintf("%.03f",pValue))
}
fit <- survfit(Surv(futime, fustat) ~ Type, data = rt)

		
#绘制生存曲线
surPlot=ggsurvplot(fit, 
		           data=rt,
		           conf.int=F,
		           pval=pValue,
		           pval.size=6,
		           surv.median.line = "hv",
		           legend.title=gene,
		           legend.labs=c("High level", "Low level"),
		           xlab="Time(years)",
		           ylab="Progression free survival",
		           break.time.by = 1,
		           palette=c("red", "blue"),
		           risk.table=F,
		       	   risk.table.title="",
		           risk.table.col = "strata",
		           risk.table.height=.25)

#输出生存曲线
pdf(file=paste0(gene, ".PFS.pdf"), width=5.5, height=5, onefile=FALSE)
print(surPlot)
dev.off()


3.效果

文件夹中效果:
image.png

R语言中的效果:
我的.png

4.遇到的问题