一次将单变量 coxph 函数应用于多个协变量(列)
Applying univariate coxph function to multiple covariates (columns) at once
首先,我从 link 中了解到,使用 "function" 函数也许可以满足我的需求。但是,我无法实现从以呈现的方式思考它到使其在我的情况下实际工作(或者甚至不知道从哪里开始)的飞跃。我是 R 的初学者,所以如果这真的是一个 "newb" 问题,我提前道歉。我的数据是一个数据框,由一个事件变量(肿瘤复发)和一个时间变量(随访 time/time 复发)以及复发风险因素(t 分期、肿瘤大小、dx 年龄等)组成。 ).有些风险因素是绝对的,有些是连续的。我已经 运行 手动进行单变量分析,像这个例子一样一次一个分析 univariateageatdx<-coxph(survobj~agedx),然后收集数据。这对于多种因素来说非常乏味,并且针对几种不同的重复类型进行。我认为必须有一种编码方式,这样我基本上可以拥有一行包含 coxph 方程的代码,然后将其应用于我感兴趣的所有变量,并输出一个具有每个因素的单变量分析结果的结果。我尝试使用 cbind 绑定变量(即 x<-cbind("agedx","tumor size")
然后 运行 cox coxph(recurrencesurvobj~x)
但这当然只是对这些变量进行了多变量分析,并没有将它们拆分为真正的单变量分析。
我还根据在其他站点上发现的类似问题尝试了以下代码,但它给出了显示的错误,我不知道该怎么做。这是在正确的轨道上吗?
f <- as.formula(paste('regionalsurvobj ~', paste(colnames(nodcistradmasvssubcutmasR)[6-9], collapse='+')))
然后我 运行 它有 coxph(f)
给我多变量cox分析的结果。
谢谢!
**编辑:我刚刚修复了错误,我需要使用我想不是名称的列号。更改反映在上面的代码中。但是,它仍然运行选择的变量作为多变量分析而不是真正的单变量分析...
如果你想走公式路线(在你的情况下有多个结果和多个变量可能是最实用的方法)你需要为你想要适合的每个模型创建一个公式。我在这里拆分了一些步骤(制作公式、制作模型和提取数据),当然可以将它们组合起来,这样您就可以检查所有模型。
#example using transplant data from survival package
#make new event-variable: death or no death
#to have dichot outcome
transplant$death <- transplant$event=="death"
#making formulas
univ_formulas <- sapply(c("age","sex","abo"),function(x)as.formula(paste('Surv(futime,death)~',x))
)
#making a list of models
univ_models <- lapply(univ_formulas, function(x){coxph(x,data=transplant)})
#extract data (here I've gone for HR and confint)
univ_results <- lapply(univ_models,function(x){return(exp(cbind(coef(x),confint(x))))})
首先,我从 link x<-cbind("agedx","tumor size")
然后 运行 cox coxph(recurrencesurvobj~x)
但这当然只是对这些变量进行了多变量分析,并没有将它们拆分为真正的单变量分析。
我还根据在其他站点上发现的类似问题尝试了以下代码,但它给出了显示的错误,我不知道该怎么做。这是在正确的轨道上吗?
f <- as.formula(paste('regionalsurvobj ~', paste(colnames(nodcistradmasvssubcutmasR)[6-9], collapse='+')))
然后我 运行 它有 coxph(f) 给我多变量cox分析的结果。
谢谢! **编辑:我刚刚修复了错误,我需要使用我想不是名称的列号。更改反映在上面的代码中。但是,它仍然运行选择的变量作为多变量分析而不是真正的单变量分析...
如果你想走公式路线(在你的情况下有多个结果和多个变量可能是最实用的方法)你需要为你想要适合的每个模型创建一个公式。我在这里拆分了一些步骤(制作公式、制作模型和提取数据),当然可以将它们组合起来,这样您就可以检查所有模型。
#example using transplant data from survival package
#make new event-variable: death or no death
#to have dichot outcome
transplant$death <- transplant$event=="death"
#making formulas
univ_formulas <- sapply(c("age","sex","abo"),function(x)as.formula(paste('Surv(futime,death)~',x))
)
#making a list of models
univ_models <- lapply(univ_formulas, function(x){coxph(x,data=transplant)})
#extract data (here I've gone for HR and confint)
univ_results <- lapply(univ_models,function(x){return(exp(cbind(coef(x),confint(x))))})