原文内容挺多的, 在 http://www.sthda.com/english/wiki/cox-proportional-hazards-model , 大多数我在 [r<- 统计 | 绘图] 使用 R 进行生存分析 -- 一文打尽笔记里面都写过了, 这里只推荐下里面提供的一个函数, 可以一次性运行完所有的协变量的单个分析, 一般做这个分析的都用得上.
实例:
- covariates <- c("age", "sex", "ph.karno", "ph.ecog", "wt.loss")
- univ_formulas <- sapply(covariates,
- function(x) as.formula(paste('Surv(time, status)~', x)))
- univ_models <- lapply( univ_formulas, function(x){coxph(x, data = lung)})
- # 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))
- as.data.frame(res)
输出:
- beta HR (95% CI for HR) wald.test p.value
- age 0.019 1 (1-1) 4.1 0.042
- sex -0.53 0.59 (0.42-0.82) 10 0.0015
- ph.karno -0.016 0.98 (0.97-1) 7.9 0.005
- ph.ecog 0.48 1.6 (1.3-2) 18 2.7e-05
- wt.loss 0.0013 1 (0.99-1) 0.05 0.83
来源: http://www.jianshu.com/p/7bf28f2ead67