单因素和多因素cox回归分析
分析 回归 因素 Cox
2023-06-13 09:13:01 时间
前面我们讲过一个R函数搞定风险评估散点图,热图,其中LASSO模型的输入就是单因素cox分析得到的显著与生存相关的基因。今天我们就来探讨一下如何使用R来做单因素和多因素cox回归分析。
我们用R的survival包自带的一套肺癌的数据来举例
#安装下面两个R包
install.packages(c("survival", "survminer"))
#加载这两个R包
library("survival")
library("survminer")
#加载肺癌这套数据
data("lung")
#显示前6行
head(lung)
这里每一行是一个样本,从第三列开始每一列是一个特征
1.单因素cox回归分析
对单个特征进行cox回归分析,看它是否与样本的生存显著相关
#单因素cox回归分析,这里看性别sex这个特征
res.cox <- coxph(Surv(time, status) ~ sex, data = lung)
res.cox
可以看到这里算出来的p值是0.00149,是显著的
我们在来看一下summary
summary(res.cox)
这里的exp(coef)就是HR(hazard ratio,风险率),lower .95和upper .95为95%的置信区间
2.批量单因素cox回归分析
一般我们的关注的特征都比较多,用上面的代码一个一个来做单因素cox回归分析效率太低了,下面我们来看看如何批量做单因素cox回归分析。
#假设我们要对如下5个特征做单因素cox回归分析
covariates <- c("age", "sex", "ph.karno", "ph.ecog", "wt.loss")
#分别对每一个变量,构建生存分析的公式
univ_formulas <- sapply(covariates,
function(x) as.formula(paste('Surv(time, status)~', x)))
#循环对每一个特征做cox回归分析
univ_models <- lapply( univ_formulas, function(x){coxph(x, data = lung)})
#提取HR,95%置信区间和p值
univ_results <- lapply(univ_models,
function(x){
x <- summary(x)
#获取p值
p.value<-signif(x$wald["pvalue"], digits=2)
#获取HR
HR <-signif(x$coef[2], digits=2);
#获取95%置信区间
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(p.value,HR)
names(res)<-c("p.value","HR (95% CI for HR)")
return(res)
})
#转换成数据框,并转置
res <- t(as.data.frame(univ_results, check.names = FALSE))
as.data.frame(res)
write.table(file="univariate_cox_result.txt",as.data.frame(res),quote=F,sep="\t")
得到的结果如下,你会发现对于sex这个特征来说,结果跟前面单独做得到的结果是一样的。
3.多因素cox回归分析
前面是单独看每一个特征是否跟生存相关,而多因素cox回归是同时检测多个特征是否与生存相关。一般先通过单因素cox回归分析找出与生存显著相关的特征,然后基于这些特征再去做多因素cox回归分析,或者做LASSO分析。
res.cox <- coxph(Surv(time, status) ~ age + sex + ph.karno + ph.ecog, data = lung)
x <- summary(res.cox)
pvalue=signif(as.matrix(x$coefficients)[,5],2)
HR=signif(as.matrix(x$coefficients)[,2],2)
low=signif(x$conf.int[,3],2)
high=signif(x$conf.int[,4],2)
multi_res=data.frame(p.value=pvalue,
HR=paste(HR," (",low,"-",high,")",sep=""),
stringsAsFactors = F
)
multi_res
write.table(file="multivariate_cox_result.txt",multi_res,quote=F,sep="\t")
得到的结果如下
参考资料:
相关文章
- python lasso回归分析_解析python实现Lasso回归「建议收藏」
- spss logistic回归分析结果如何分析
- 【说站】java HashMap的不安全分析
- R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据|附代码数据
- 一文讲清楚 薪酬回归分析
- 数据分享|多变量多元多项式曲线回归线性模型分析母亲吸烟对新生婴儿体重影响可视化|附代码数据
- R语言回归、anova方差分析、相关性分析 《精品购物指南》调研数据可视化|附代码数据
- SAS数据挖掘EM贷款违约预测分析:逐步Logistic逻辑回归、决策树、随机森林
- PYTHON用时变马尔可夫区制转换(MARKOV REGIME SWITCHING)自回归模型分析经济时间序列|附代码数据
- 贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据|附代码数据
- R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据
- MATLAB偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据|附代码数据
- R语言广义线性模型(GLM)、全子集回归模型选择、检验分析全国风向气候数据|附代码数据
- 微信 "公众平台测试账号" 登陆失败的解决方法与分析
- R语言独立成分分析fastICA、谱聚类、支持向量回归SVR模型预测商店销量时间序列可视化
- 【Android Gradle 插件】Gradle 基础配置 ⑤ ( gradle-wrapper.properties 配置分析 | GRADLE_USER_HOME 目录 )
- R语言时变向量自回归(TV-VAR)模型分析时间序列和可视化|附代码数据
- 高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据|附代码数据
- MySQL查询结果集连接与分析(mysql查询结果连接)
- 深度分析Linux ACL权限控制的优缺点(linuxacl优缺点)
- 失败MySQL登录数据库失败:解决措施分析(mysql登陆数据库)
- 分析前后统计redis变更情况(统计redis变更)
- jQuery1.5最新版本的改进细节分析
- php中magic_quotes_gpc对unserialize的影响分析