R muhaz包危险函数的置信区间

R muhaz包危险函数的置信区间,r,survival-analysis,hazard,R,Survival Analysis,Hazard,该软件包使用核平滑方法从数据中估计数据。我的问题是,有没有办法获得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)) 设置max.time似乎有效,每个引导示例都有相同的估计网格点。然而,获得的CI没有什么意

该软件包使用核平滑方法从数据中估计数据。我的问题是,有没有办法获得
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))

设置max.time似乎有效,每个引导示例都有相同的估计网格点。然而,获得的CI没有什么意义。通常情况下,我认为时间间隔在t=0时较窄,随着时间的推移而变宽(信息越少,不确定性越大),但所获得的时间间隔似乎随着时间的推移或多或少是恒定的


引导提供了评论者建议的答案。您的直觉是正确的,您应该期望CI随着风险人数的减少而扩大。但是,平滑过程会减弱这种效果,应用平滑的时间间隔越长,您就越不应该注意到CI大小的变化。尝试在足够短的时间间隔内进行平滑,您应该会注意到CI会更明显地加宽

正如您可能会发现的,这些平滑的危险图的用途非常有限,并且对如何进行平滑非常敏感。作为练习,模拟一系列Weibull分布(形状参数设置为0.8、1.0、1.2)的存活时间,然后查看这些平滑的危险图,并尝试对其进行分类,这是有指导意义的。如果这些曲线图具有信息性,那么根据危险函数的趋势率,很容易区分这三条曲线之间的差异。YMMV,但当我用与肿瘤学临床试验相一致的合理样本量进行这项试验时,结果并没有给我留下深刻印象


作为平滑危险图的替代方法,您可以尝试使用Han等人的方法拟合分段指数曲线,并进行自举。他们的算法将确定危险率在统计上有显著变化的断点,与平滑的危险图相比,可以让您更好地了解危险率的趋势。它还可以避免对平滑参数的任意选择。

您可以引导它吗?。这个
与(fit1,plot(est.grid,haz.est,type=“l”,lwd=3,ylim=c(0,0.002))
给出了相同的图,因此您需要在与
fit1
相同的时间点对
haz.est
进行估计。但是,当您重新采样和重新安装
muhaz
模型时,时间点会发生变化,通过快速尝试,我认为如果您将
min.time
max.time
设置为与原始拟合相同,则可以强制
est.grid
在每次重新采样时处于相同的时间点。ie
with(dat,muhaz(futime,fustat,min.time=0,max.time=744))
,其中
dat
是引导数据。设置max.time似乎有效,每个引导样本具有相同的估计网格点。然而,获得的CI没有什么意义。通常情况下,我希望时间间隔会随着时间的推移而变宽(信息越少,不确定性越大),但所获得的时间间隔似乎随着时间的推移而或多或少保持不变。相关:谢谢你详细的回答。你知道这个过程是否有R包吗?我相信他们还没有发布他们的R代码。如果你解释了如何使用代码并提出了很好的要求,你可能会从作者那里得到代码。或者,他们的论文应该充分解释该方法,使其成为一个有趣的项目。
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)