首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟竞争风险数据

模拟竞争风险数据
EN

Stack Overflow用户
提问于 2015-09-30 01:44:26
回答 1查看 871关注 0票数 3

我的目标是模拟可用于测试竞争性风险模型的数据集。我只是用survsim::crisk.sim函数尝试一个简单的例子,但是它并没有带来我期望的结果。

代码语言:javascript
复制
 require(survival)
 simulated_data <- survsim::crisk.sim(n = 100,
                                      foltime = 200,
                                      dist.ev = rep("weibull", 2),
                                      anc.ev = c(0.8, 0.9),
                                      beta0.ev = c(2, 4),
                                      anc.cens = 1,
                                      beta0.cens = 5,
                                      nsit = 2)

 model <- survreg(Surv(time, status) ~ 1 + strata(cause), data = simulated_data)

 exp(model$scale)

 ## cause=1  cause=2 
 ## 4.407839 2.576357 

我希望这些数字与beta0.ev相同。关于我可能做错什么的任何指示,或者其他如何模拟竞争风险数据的建议。

完成:我希望模拟数据中的事件发生在威布尔分布之后,而威布尔分布对于每个风险都是不同的。我希望能够在数据中指定一个阶层和一个集群。审查可以遵循Weibull或Bernouli分布。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-04 11:27:00

要恢复指定的估计数,可以使用survreg和特定于原因的表示法。

这个例子使用您的参数,但是对于更多的病人,需要更精确的估计:

代码语言:javascript
复制
set.seed(101)
stack_data <- survsim::crisk.sim(n = 2000,
                                     foltime = 200,
                                     dist.ev = rep("weibull", 2),
                                     anc.ev = c(0.8, 0.9),
                                     beta0.ev = c(2, 4),
                                     anc.cens = 1,
                                     beta0.cens = 5,
                                     nsit = 2)

m1 <- survreg(Surv(time, cause==1) ~ 1, data =stack_data, dist = "weibull")
m2 <- survreg(Surv(time, cause==2) ~ 1, data = stack_data, dist = "weibull")

m1$coefficients这将接近beta0.ev的原因1

m2$coefficients这将接近beta0.ev的原因2

代码语言:javascript
复制
> m1$coefficients
(Intercept) 
   1.976449 
> m2$coefficients
(Intercept) 
   3.995716 

m1$scale这将接近anc.ev的原因1

m2$scale这将接近anc.ev的原因2

代码语言:javascript
复制
> m1$scale
[1] 0.8088574
> m2$scale
[1] 0.8923334

不幸的是,这只适用于统一审查,或低非均匀审查(如在您的例子)。

如果我们增加了审查的风险,那么拦截器就不代表beta0.ev参数

代码语言:javascript
复制
set.seed(101)
stack_data <- survsim::crisk.sim(n = 2000,
                                     foltime = 200,
                                     dist.ev = rep("weibull", 2),
                                     anc.ev = c(0.8, 0.9),
                                     beta0.ev = c(2, 4),
                                     anc.cens = 1,
                                     beta0.cens = 2, #reduced from 5, increasing the hazard function for censoring rate
                                     nsit = 2)

m1 <- survreg(Surv(time, cause==1) ~ 1, data =stack_data, dist = "weibull")
m2 <- survreg(Surv(time, cause==2) ~ 1, data = stack_data, dist = "weibull")
代码语言:javascript
复制
> m1$coefficients
(Intercept) 
   1.531818 
> m2$coefficients
(Intercept) 
   3.553687 
> 
> m1$scale
[1] 0.8139497
> m2$scale
[1] 0.8910465
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32856440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档