"initial value in 'vmmin' is not finite" flexsurvspline 调用错误

"initial value in 'vmmin' is not finite" error in flexsurvspline call

当我 运行 flexsurvspline 时,来自 flexsurv 包,在附加的数据集上,对于任何 k>1,我得到以下错误:

flexsurvspline(Surv(time,dead)~1,data=input_df,k=2)

Error in optim(method = "BFGS", par = c(gamma0 = 0, gamma1 = 0, gamma2 = 0, :
initial value in 'vmmin' is not finite

通过阅读其他有类似问题的帖子,我认为这可能是 inits 参数的问题,我可能必须为这个特定数据集生成自己的 inits 函数。但是我还没有找到任何关于如何为样条拟合或该参数中包含的内容执行此操作的指导。我是否正确认为这是导致错误的原因,如果是这样,应该如何确定 inits 函数?

input_df.xlsx

提前致谢!

如果您使用调试器,您可以看到函数内部发生了什么。通过指定 debugonce(flexsurvspline),然后 运行 函数,您可以单步执行并查看每一步发生了什么。 (注意:大写字母 Q 让您脱离调试浏览器)。当我这样做的时候,我发现因为超过30%的数据是在第一次(2)中,这也是左边界知道的,函数是设置结点在:

Browse[2]> knots
          33.33333% 66.66667%           
0.6931472 0.6931472 1.0986123 2.5649494 

请注意,前两个节点的值相同,这实际上破坏了函数。您可以通过直接在对数时间尺度上指定内部节点值来解决此问题。

flexsurvspline(Surv(time,dead)~1,data=input_df, knots=c(1.8,2.3))
# Call:
# flexsurvspline(formula = Surv(time, dead) ~ 1, data = input_df, 
#                  knots = c(1.8, 2.3))
# 
# Estimates: 
#           est      L95%     U95%     se     
# gamma0   -3.475   -3.783   -3.167    0.157
# gamma1    3.021    2.785    3.257    0.120
# gamma2    4.294    3.341    5.248    0.487
# gamma3   -7.908  -10.305   -5.510    1.223
# 
# N = 428,  Events: 428,  Censored: 0
# Total time at risk: 1401
# Log-likelihood = -725.7712, df = 4
# AIC = 1459.542