#########数据处理
#1.载入R包
BiocManager::install("grid")
library(survival)
library(plyr)
#2.清理工作环境
rm(list = ls())
#3.读入数据
setwd("C:\\Users\\xx\\xx")
aa<- read.csv('D-V1.csv') #文件名称
#4.查看数据数据性质
str(aa)
#5.查看结局,0=生存,1死亡
aa$status<-factor(aa$removal_state)
summary(aa$status)
#############批量单因素回归
#1.构建模型的y
y<- Surv(time=aa$removal_time,event=aa$removal_state==1)
#2.批量单因素回归模型建立:Uni_cox_model
Uni_cox_model<- function(x){
FML <- as.formula(paste0 ("y~",x))
cox<- coxph(FML,data=aa)
cox1<-summary(cox)
HR <- round(cox1$coefficients[,2],2)
PValue <- round(cox1$coefficients[,5],3)
CI5 <-round(cox1$conf.int[,3],2)
CI95 <-round(cox1$conf.int[,4],2)
Uni_cox_model<- data.frame('Characteristics' = x,
'HR' = HR,
'CI5' = CI5,
'CI95' = CI95,
'p' = PValue)
return(Uni_cox_model)}
#3.将想要进行的单因素回归变量输入模型
#3-(1)查看变量的名字和序号
names(aa)
#3-(2)输入变量序
variable.names<- colnames(aa)[c(3:23)] #例这里选择了3-23号变量
#4.输出结果
Uni_cox <- lapply(variable.names, Uni_cox_model)
Uni_cox<- ldply(Uni_cox,data.frame)
#5.优化表格,这里举例HR+95% CI+P 风格
Uni_cox$CI<-paste(Uni_cox$CI5,'-',Uni_cox$CI95)
Uni_cox<-Uni_cox[,-3:-4]
#查看单因素cox表格
View(Uni_cox)
write.csv(Uni_cox,file = "Uni_cox.csv",row.names = F)
若单因素分析中有显著性差异因素过多,可进行共线性诊断,剔除掉存在共线性的因素。
进行共线性诊断分析的方法有许多,如特征值法;条件指数法和方差膨胀因子法。虽然方法不同,但是判定结果是一致的。下面以方差膨胀因子vif举例。
###共线性诊断###
#6.共线性诊断-VIF值判断法
#先安装car包
options("repos"=c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
install.packages("BiocManager")
BiocManager::install("car")
library(car)
#进行共线性诊断分析,~前观察生存时间,~后为单因素中有显著性差异的因素
fit<-lm(aa$removal_time ~ aa$IIRC+ aa$blood_qf+ aa$corneal_edema
+ aa$neovascularization_iris+ aa$high_pressure+ aa$IAC
+ aa$local_therapy + aa$cal+ aa$intravitreal_hemorrhosis,data=aa)
vif(fit)
###VIF大于10表明与其他因素存在共线性。根据临床专业判断,先去掉一个不太重要的变量,再看下共线性,不行的话,就再去掉一个
将不存在共线性的变量纳入多因素分析中
######多因素回归
install.packages(c("survival", "survminer"))
library(survival)
library(survminer)
head(aa)#查看示例数据
#多因素分析
multi_cox <- coxph(Surv(removal_time, removal_state) ~ IIRC + blood_qf+
high_pressure+IAC+local_therapy+intravitreal_hemorrhosis+cal,
data = aa)
summary(multi_cox)
ggforest(multi_cox,
data = aa,
main = "Hazard ratio",
cpositions = c(0.02, 0.22, 0.4),#前三列的位置
fontsize = 0.7,#字体大小
refLabel = "reference",#显示变量
noDigits = 3)#小数点后保留位数