muhaz包危险函数的置信区间

时间:2015-02-16 14:23:23

标签: r survival-analysis

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 hazard function

在上面的示例中,muhaz.object fit包含一些条目fit1$mseminfit1$var.minfit1$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)

设置max.time似乎有效,每个bootstrap样本都有相同的估算网格点。然而,CI获得,没有多大意义。通常情况下,我认为t = 0时间间隔较窄,随着时间的推移变宽(信息量减少,不确定性增加),但所获得的间隔似乎随时间变化或多或少。

enter image description here

1 个答案:

答案 0 :(得分:3)

Bootstrapping提供了评论者建议的答案。你的直觉是正确的,你应该期望CI随着风险数量的减少而扩大。但是,平滑过程会减少这种影响,并且应用平滑的间隔越长,您应该注意到CI大小的变化越小。尝试在足够短的时间间隔内进行平滑,应该注意到CI更明显地扩大。

正如您所发现的,这些平滑的危险图可能使用非常有限,并且对平滑的方式非常敏感。作为练习,模拟一系列Weibull分布的生存时间是有益的,其中形状参数设置为0.8,1.0,1.2,然后查看这些平滑的危险图并尝试对它们进行分类。如果这些图是信息性的,那么根据危险函数的趋势率来判断这三条曲线之间的差异应该相当容易。 YMMV,但是当我使用与肿瘤学临床试验一致的合理样本量进行此项测试时,我对结果印象非常深刻。

作为平滑危险图的替代方法,您可以尝试使用Han等人的方法拟合分段指数曲线。 (http://www.ncbi.nlm.nih.gov/pubmed/23900779)并引导它。他们的算法将确定危险率存在统计上显着变化的断点,并且可以比平滑的危险图更好地了解危险率的趋势。它还可以避免平滑参数的某种随意选择。