使用qgcomp.cox.boot做生存分析时协变量调整报错求助
问题原因分析
- 首次错误
object 'ph' not found:你传入函数的data参数只提取了金属变量、结局时间和结局状态,没有包含ph变量,导致模型无法找到该混杂因素。 - 二次错误
variable lengths differ ('metals$ph'):直接引用外部的metals$ph时,qgcomp.cox.boot内部会执行bootstrap重抽样,重抽样后的数据集行数与原数据集不一致,造成变量长度不匹配。
解决方法
核心是将混杂因素ph纳入传入函数的data数据框中,同时公式内直接使用变量名ph即可:
library("ggplot2") data("metals", package="qgcomp") Xnm <- c('arsenic','barium','cadmium','calcium','chromium','copper','iron','lead','magnesium','manganese','mercury','selenium','silver','sodium','zinc') qc.survfit2 <- qgcomp.cox.boot( Surv(disease_time, disease_state) ~ arsenic+barium+cadmium+calcium+chromium+copper+iron+lead+magnesium+manganese+mercury+selenium+silver+sodium+zinc+ph, expnms=Xnm, data=metals[,c(Xnm, 'disease_time', 'disease_state', 'ph')], # 将ph加入数据子集 q=4, B=5, MCsize=1000, parallel=TRUE, parplan=TRUE )
额外说明
expnms参数仅用于指定需要分位数合并的暴露变量(即你定义的金属元素集合),混杂因素ph不需要放入该参数,只需在模型公式中添加,函数会自动将其作为调整变量处理。- 线性模型中能直接使用变量名,本质是因为传入的数据框包含了所需的混杂因素,和本解决方案逻辑一致——确保模型用到的所有变量都在传入的
data数据框内。
内容的提问来源于stack exchange,提问作者Curry Qin
相关产品推荐
相关产品推荐

