美文网首页R优质资源
R做单因素和多因素生产分析

R做单因素和多因素生产分析

作者: 欧阳松 | 来源:发表于2020-10-19 00:51 被阅读0次
    library(dplyr)
    library(survival)
    library(plyr)
    

    单因素Cox回归

    Basurv<-Surv(time = tcga$time,event = tcga$status)
    tcga$Basurv<-with(tcga,Basurv) #添加一列
    sexCox<-coxph(Basurv~sex,data = tcga)
    sexSum<-summary(sexCox)
    sexSum$coefficients #检索出HR和P值
    sexSum$conf.int #检索出HR饿95%CI
    round(sexSum$conf.int[,3:4],2)
    
    CI<-paste0(round(sexSum$conf.int[,3:4],2),collapse = "-") #将95%CI合并
    Pvalue<-round(sexSum$coefficients[,5],3)
    HR<-round(sexSum$coefficients[,2],2)
    
    Unicox<-data.frame("Characteristics"="sex","Hazard Ratio"=HR,
                       "CI95"=CI,
                       "P value"=Pvalue)
    #添加多个参数,定义函数
    UniCox<-function(x){
      FML<-as.formula(paste0("Basurv~",x))
      Cox<-coxph(FML,data = tcga) 
      Sum<-summary(Cox)
      CI<-paste0(round(Sum$conf.int[,3:4],2),collapse = "-") 
      Pvalue<-round(Sum$coefficients[,5],3)
      HR<-round(Sum$coefficients[,2],2)
      Unicox<-data.frame("Characteristics"=x,
                         "Hazard Ratio"=HR,
                         "CI95"=CI,
                         "P value"=Pvalue)
      return(Unicox)
    }
    
    #如查看sex
    UniCox("sex")
    
    varNames<-colnames(tcga) [c(4:10)] #[]里代表需要的列数
    UniVar<-lapply(varNames, UniCox)
    UniVar<-ldply(UniVar,data.frame)
    #筛选p<0.05
    UniVar$Characteristics[UniVar$P.value<0.05]
    

    多因素Cox分析

    MultiCox<-coxph(Basurv~age+sex+ph.ecog+ph.karno,data = tcga) #查某几个因素就使用+
    
    #定义p<0.05的函数
    fml<-as.formula(paste0("Basurv~",paste0( UniVar$Characteristics[UniVar$P.value<0.05],collapse = "+")))
    
    multicox<-coxph(fml,data = tcga) #定义所有p<0.05的参数
    multisum<-summary(multicox) #提取结果
    
    multiname<-as.character(UniVar$Characteristics[UniVar$P.value<0.05])
    mCIL<-round(multisum$conf.int[,3],2)
    mCIU<-round(multisum$conf.int[,4],2)
    mCI<-paste0(mCIL, "-",mCIU) 
    #或者这样 mCI<-paste0(round(multisum$conf.int[,3:4],2),collapse = "-") 
    mPvalue<-round(multisum$coefficients[,5],3)
    mHR<-round(multisum$coefficients[,2],2)
    
    mulcox<-data.frame("Characteristics"=multiname,"Hazard Ratio"=mHR,
                       "CI95"=mCI,
                       "P value"=mPvalue)
    

    单多因素整合

    Final<-merge.data.frame(UniVar,mulcox,by="Characteristics",all = T,sort = T)
    
    #输出
    write.csv(Final,"coxreg.csv", row.names = FALSE)
    write.csv(Final,"coxreg.csv",row.names = F,showNA=F )
    

    相关文章

      网友评论

        本文标题:R做单因素和多因素生产分析

        本文链接:https://www.haomeiwen.com/subject/raihmktx.html