You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:21:01