simsurv R 函数:端点处的 f() 值不存在相反符号误差

问题描述 投票:0回答:1

我是 R 中“simsurv”包的新用户,我正在尝试复制 NICE DSU TSD 21 中描述的模拟研究(链接:https://www.sheffield.ac.uk/nice-dsu/ tsds/灵活方法生存分析)。为此,我尝试重新产生相同的结果,其中一个结果依赖于混合威布尔模型的规范。

当我运行此代码时:

# Load relevant packages
library(survival)
library(simsurv)

# Set sample size for the truth (i.e., a large number)
ss_truth <- 100000

# Sample age and frailty
age <- rnorm(ss_truth, 60, 6)
z <- rnorm(ss_truth, 0, 1)
t_lim_truth <- 80

# Other parameters
dist <- "weib"
lambda1 <- 0.6
lambda2 <- 0.7
gamma1 <- 1.8
gamma2 <- 0.5
pmix <- 0.3
frailty_beta <- 0.5

# Set seed for reproducibility
set.seed(1)

# Adjust for mixture versus non-mixture models
pmixopt <- pmix
mixopt <- TRUE

# Adjust length of lambda for mixture versus non-mixture models
if(is.na(lambda2)==TRUE){
  lambda_in <- lambda1
} else {
  lambda_in <- c(lambda1, lambda2)
}

# Adjust length of gamma for mixture versus non-mixture models
if(is.na(gamma2)==TRUE){
  gamma_in <- gamma1
} else {
  gamma_in <- c(gamma1, gamma2)
}

# Generate "truth"
td <- simsurv(dist = dist, lambda = lambda_in, gamma = gamma_in,
              pmix = pmixopt, maxt = t_lim_truth, x = data.frame(z, frailty_beta), mixture = mixopt)

我收到此错误:

Error in stats::uniroot(rootfn_surv, survival = survival, x = x_i, betas = betas_i,  : 
  f() values at end points not of opposite sign

请有人让我知道我做错了什么而产生此错误?

我尝试用硬编码条目手动替换上面行中的输入,这似乎也没有帮助:

td <- simsurv(dist = "weib", lambda = c(0.6, 0.7), gamma = c(1.8, 0.5),
              pmix = 0.3, maxt = 80, x = data.frame(z, frailty_beta), mixture = TRUE)

当我尝试不同的 gamma 值时,我成功地使代码正常工作(例如,gamma 值为 1.2 和 0.8)。因此,这可能与这些特定的伽马值有关。然而,这些值与 DSU 研究中使用的值完全相同,所以我不确定为什么它在 R 中不起作用,但在 Stata 中似乎工作正常。请参阅参考原始伽玛值的附图。

Screenshot

r simulation survival-analysis survival
1个回答
0
投票

在与软件包开发人员 Sam Brilleman 交流后,已经确定了解决方案!简而言之,需要定义区间论证,使其足够大以在其中找到解决方案。下面是我运行的行,现在可以正常工作(重要部分在最后)。

td <- simsurv(dist = dist, lambda = lambda_in, gamma = gamma_in, pmix = pmixopt, maxt = t_lim_truth, x = data.frame(z, frailty_beta), mixture = mixopt, interval = c(1E-20, 1E20))

感谢 Sam 分享此细节:-)

最好的, 灰烬

© www.soinside.com 2019 - 2024. All rights reserved.