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

求助:使用flexsurvreg拟合模型时遇下标越界错误

问题分析与解决

错误原因

你的Surv对象Y第一列的列名是空字符串(""),而flexsurvreg函数内部会尝试通过列名"time"索引时间数据,找不到对应列名时就会抛出subscript out of bounds错误。

解决方法

方法1:修改现有Surv对象的列名

直接给Y的列名赋值,将第一列命名为"time":

colnames(Y) <- c("time", "status")

之后重新运行拟合代码即可:

flexsurvreg(Y ~ 1, dist = "lnorm")

方法2:重新创建规范的Surv对象

如果是从原始数据生成Surv对象,确保明确指定时间和状态列,避免列名缺失:

# 假设原始时间序列为time_vec,状态序列为status_vec
Y <- Surv(time = time_vec, event = status_vec, type = "right")

验证结果

修改列名后运行代码,会得到正常的对数正态分布模型拟合结果,示例输出如下:

Call:
flexsurvreg(formula = Y ~ 1, dist = "lnorm")

Estimates:
       meanlog      sdlog    
     4.0488897   1.1104447 
se( 0.1010239) 0.0715711 

N = 120,  Events: 106,  Censored: 14
Total time at risk: 15504.77
Log-likelihood = -390.0996, df = 2
AIC = 784.1992

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:43:08