在R中使用coxme执行混合效应Cox回归时,survest的等效函数是什么?
coxme模型中替代survest获取生存概率的方法
你运行的混合效应Cox模型代码如下:
survival<-coxme(Surv(tr_dur_a,ftr_2)~mod_muac+ drev_oedema_now_day0+danger_adm+tr_diet2+danger_adm + tr_daysec+hiv_stat+breast_feeding_adm+ sex_adm+mod_diar+diag_sepsis_adm+diag_lrti_pneumonia_adm +other_dx+ (1|site), data=survival1b)
你需要实现类似survest(survival,newdata = Cnew, times=time)的功能来获取生存概率,coxme包没有直接对应的survest()函数,但可以通过以下两种方法实现:
方法一:直接使用survfit()函数
survfit()支持处理coxme对象,能直接生成指定新数据的生存曲线并提取生存概率:
# 生成生存曲线对象 Csur <- survfit(survival, newdata = Cnew, times = time) # 提取对应时间点的生存概率 survival_prob <- Csur$surv
- 若仅需要固定效应的预测结果(忽略随机效应),添加
re.form = NA参数:
Csur <- survfit(survival, newdata = Cnew, times = time, re.form = NA)
方法二:通过基准风险+线性预测值手动计算
若需要更精细的控制,可分步计算:
- 获取模型的基准风险函数
- 计算新数据的线性预测值
- 结合两者推导生存概率
# 获取基准生存函数的累积风险 base_haz <- basehaz(survival, centered = FALSE) # 计算新数据的线性预测值(忽略随机效应则加re.form = NA) lp <- predict(survival, newdata = Cnew, type = "linear.predictors") # 匹配目标时间点的累积风险 cum_hazard <- approx(base_haz$time, base_haz$hazard, xout = time, rule = 2)$y |> cumsum() # 计算生存概率 survival_prob <- exp(-cum_hazard)^exp(lp)
注意事项
- 如果需要包含随机效应,新数据必须包含分组变量(如你的模型中的
site),否则会默认使用随机效应的均值(通常为0) survfit()返回的对象还包含标准误、置信区间等信息,可通过Csur$lower和Csur$upper获取置信限
内容的提问来源于stack exchange,提问作者ABIP
相关产品推荐
相关产品推荐

