单变量cox回归分析
一、输入数据:
(1) TCGA-UVM.htseq_fpkm-uq.tsv
image.png
(2) 生存表型数据:
image.png
二、代码如下:
options(scipen = 5)
options(stringsAsFactors=FALSE)
########## COX回归分析 ###########
library("survival")
library("survminer")
setwd("/xxx/MyTest/001.COX")
#=====
df <- read.table("TCGA-UVM.htseq_fpkm-uq.tsv", sep="\t",header=T, check.names = F)
surdata <- read.table("TCGA-UVM.survival.tsv", sep="\t",header=T, check.names = F)
t1 <- df
t2 <- as.data.frame(t(t1))
sample <- rownames(t2)[2:nrow(t2)]
names(t2) <- t2[1,]
t2 <- t2[-1,]
t2 <- as.data.frame(apply(t2,2,function(x) as.numeric(as.character(x)))) #把character 改为numeric
t2$sample <- sample
m1 <- merge(surdata[,c("sample","OS","OS.time")], t2,by="sample")
## 对每个协变量进行单因素cox分析。
covariates <- names(m1)[4:60486]
univ_formulas <- sapply(covariates, function(x) as.formula(paste('Surv(OS.time, OS)~', x)))
univ_models <- lapply( univ_formulas, function(x){coxph(x, data = m1)})
# Extract data
univ_results <- lapply(univ_models,
function(x){
x <- summary(x)
p.value<-signif(x$wald["pvalue"], digits=2)
wald.test<-signif(x$wald["test"], digits=2)
beta<-signif(x$coef[1], digits=2);#coeficient beta
HR <-signif(x$coef[2], digits=2);#exp(beta)
HR.confint.lower <- signif(x$conf.int[,"lower .95"], 2)
HR.confint.upper <- signif(x$conf.int[,"upper .95"],2)
HR <- paste0(HR, " (",
HR.confint.lower, "-", HR.confint.upper, ")")
res<-c(beta, HR, wald.test, p.value)
names(res)<-c("beta", "HR (95% CI for HR)", "wald.test",
"p.value")
return(res)
#return(exp(cbind(coef(x),confint(x))))
})
res <- t(as.data.frame(univ_results, check.names = FALSE))
三、结果文件:
image.png
参考:
https://www.jianshu.com/p/cdc745f91deb
https://www.jianshu.com/p/9022456f4e00