如何解决如何从 R 中的 coxph 模型摘要中汇总单变量结果 - 多级协变量?
how to extract formula from coxph model summary in R? 上的精彩教程展示了如何总结变量列表的单变量 cox ph 结果;但是,此代码仅适用于连续或二进制协变量。如果你有一个分类变量,比如种族,有 3 个或更多的级别,代码就会失败。
例如,让我们随机分配一个种族。
race<-c("White","Black","Other")
lung$race<-sample(race,12,replace = TRUE)
covariates <- c("race","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)
最终输出失败,因为种族的单变量结果具有不同的维度数。
我发现我可以通过这种方式提取各个级别的 HR:coef(summary(coxph(Surv(Time,status) ~ Race,data=dataset)))[,2]
但是,当我尝试将其作为项目包含在数据框中时,我的代码会崩溃。我将不胜感激任何帮助。我在谷歌上搜索了很多,然后用头撞墙。
提前致谢。
解决方法
我发现 Nikk Kennedy's solution 很有帮助。他不仅提供了示例代码,还转身为R做了一个包!向这个人致敬。
以上面的例子为例,但首先,加载 Forestmodel 包。
library(forestmodel)
univ_formulas <- sapply(covariates,function(x) as.formula(paste('Surv(time,status)~',x)))
univ_models <- lapply(univ_formulas,function(x){coxph(x,data = lung)})
forest_model(model_list = univ_models,covariates = covariates,merge_models = T)
多田。请记住,种族是随机分配的,因此请谨慎对待这些结果!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。