muhaz
软件包使用内核平滑方法从hazard function数据估计right censored。我的问题是,是否有任何方法可以获取muhaz
计算的危险函数的置信区间?
options(scipen=999)
library(muhaz)
data(ovarian, package="survival")
attach(ovarian)
fit1 <- muhaz(futime, fustat)
plot(fit1, lwd=3, ylim=c(0,0.002))
在上面的示例中,
muhaz.object
fit
具有一些条目fit1$msemin
,fit1$var.min
和fit1$haz.est
,但是它们的长度是fit1$haz.est
的一半。是否有可能提取危害函数的置信区间?
编辑:我根据@ user20650建议的尝试了以下操作
options(scipen=999)
library(muhaz)
data(ovarian, package="survival")
fit1 <- muhaz(ovarian$futime, ovarian$fustat,min.time=0, max.time=744)
h.df<-data.frame(est=fit1$est.grid, h.orig=fit1$haz.est)
for (i in 1:10000){
d.s.onarian<-ovarian[sample(1:nrow(ovarian), nrow(ovarian), replace = T),]
d.s.muhaz<-muhaz(d.s.onarian$futime, d.s.onarian$fustat, min.time=0, max.time=744 )
h.df<-cbind(h.df, d.s.muhaz$haz.est)
}
h.df$upper.ci<-apply(h.df[,c(-1,-2)], 1, FUN=function(x) quantile(x, probs = 0.975))
h.df$lower.ci<-apply(h.df[,c(-1,-2)], 1, FUN=function(x) quantile(x, probs = 0.025))
plot(h.df$est, h.df$h.orig, type="l", ylim=c(0,0.003), lwd=3)
lines(h.df$est, h.df$upper.ci, lty=3, lwd=3)
lines(h.df$est, h.df$lower.ci, lty=3, lwd=3)
设置最大时间似乎可行,每个 bootstrap 样本都具有相同的估计网格点。但是获得的CI毫无意义。通常,我希望间隔在t = 0时会变窄,并且会随时间变宽(信息越少,不确定性越大),但是所获得的间隔似乎随时间或多或少是恒定的。
最佳答案
bootstrap 提供了评论者建议的答案。您的直觉是正确的,您应该期望CI随着风险数量的减少而扩大。但是,平滑处理将减弱这种影响,并且应用平滑间隔的时间越长,您应该就不会注意到CI大小的变化。尝试在足够短的时间间隔内进行平滑处理,您会注意到配置项的扩展更加明显。
您可能会发现,这些平滑的危险图使用范围非常有限,并且对平滑操作非常敏感。作为练习,从具有形状参数设置为0.8、1.0、1.2的一系列Weibull分布中模拟生存时间具有指导意义,然后查看这些平滑的危险图并尝试对其进行分类。就这些图提供的信息而言,应该很容易根据危害函数的趋势率来区分这三条曲线之间的差异。 YMMV,但是当我以与肿瘤学临床试验一致的合理样本量进行这项测试时,结果并没有给我留下深刻的印象。
作为平滑的危险图的替代方法,您可以尝试使用Han等人的方法拟合分段指数曲线。 (http://www.ncbi.nlm.nih.gov/pubmed/23900779)并引导它。他们的算法将确定危险率发生统计上显着变化的断点,并且与平滑的危险图相比,您可以更好地了解危险率的趋势。这也将避免平滑参数有些随意但必然的选择。
关于r - muhaz包装危害函数的置信区间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28543538/