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

如何提取survey::svykm()加权计算后的指定时间点累积生存率

从svykm对象提取指定时间点加权生存率的方法

svykm()返回的结果为命名列表,每个列表元素对应一个分层组(你的示例中对应sex的两个分组),每个组内存储time(事件发生/删失时间点)、surv(对应时间点的加权生存率)、std.err(生存率标准误)等核心字段。你可以通过自定义插值函数匹配KM阶梯曲线的规则,提取指定时间点的数值,示例代码如下:

# 接你已运行的代码,s2为svykm返回的结果
# 定义目标提取时间点,注意单位与原数据集的time字段一致
# 若pbc数据集time单位为天,需要提取1-5年的话可改为c(365,730,1095,1460,1825)
target_times <- c(1:5)

# 自定义提取函数
get_svykm_surv <- function(km_obj, times) {
  res <- lapply(names(km_obj), function(g) {
    t_seq <- km_obj[[g]]$time
    surv_seq <- km_obj[[g]]$surv
    se_seq <- km_obj[[g]]$std.err
    # 按KM阶梯曲线规则做常量插值,匹配survfit summary的输出逻辑
    surv_val <- approx(t_seq, surv_seq, xout = times, method = "constant", f = 0)$y
    se_val <- approx(t_seq, se_seq, xout = times, method = "constant", f = 0)$y
    data.frame(
      group = g,
      time = times,
      weighted_survival = surv_val,
      std_error = se_val
    )
  })
  do.call(rbind, res)
}

# 调用函数获取结果
output <- get_svykm_surv(s2, target_times)
print(output)

内容的提问来源于stack exchange,提问作者Takanashi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:15:04