Jest to nieco skomplikowane, ponieważ zagrożenie jest oszacowaniem chwilowego prawdopodobieństwa (i jest to dyskretne dane), ale funkcja basehaz
może być pomocna, ale zwraca tylko skumulowane zagrożenie. Więc nadal musiałbyś wykonać dodatkowy krok.
Mam też szczęście z funkcją muhaz
. Z dokumentacji:
library(muhaz)
?muhaz
data(ovarian, package="survival")
attach(ovarian)
fit1 <- muhaz(futime, fustat)
plot(fit1)
nie jestem pewien, że najlepszym sposobem, aby dostać się w 95% przedziale ufności, ale ładowania może być jednym podejściem.
#Function to bootstrap hazard estimates
haz.bootstrap <- function(data,trial,min.time,max.time){
library(data.table)
data <- as.data.table(data)
data <- data[sample(1:nrow(data),nrow(data),replace=T)]
fit1 <- muhaz(data$futime, data$fustat,min.time=min.time,max.time=max.time)
result <- data.table(est.grid=fit1$est.grid,trial,haz.est=fit1$haz.est)
return(result)
}
#Re-run function to get 1000 estimates
haz.list <- lapply(1:1000,function(x) haz.bootstrap(data=ovarian,trial=x,min.time=0,max.time=744))
haz.table <- rbindlist(haz.list,fill=T)
#Calculate Mean,SD,upper and lower 95% confidence bands
plot.table <- haz.table[, .(Mean=mean(haz.est),SD=sd(haz.est)), by=est.grid]
plot.table[, u95 := Mean+1.96*SD]
plot.table[, l95 := Mean-1.96*SD]
#Plot graph
library(ggplot2)
p <- ggplot(data=plot.table)+geom_smooth(aes(x=est.grid,y=Mean))
p <- p+geom_smooth(aes(x=est.grid,y=u95),linetype="dashed")
p <- p+geom_smooth(aes(x=est.grid,y=l95),linetype="dashed")
p
To całkiem dobrze. Jestem bardzo obeznany z data.table. Czy ktoś może łatwo uzyskać to zrobić est.grid jako sekwencji przez 1 rok? Ponadto, szukam tego zakresu 0:50 w moich własnych danych, ale bootstrap nie zawsze pobiera maksymalny czas, a tym samym pole plot.table nie zwraca wymaganego zakresu. Masz jakieś sugestie? – jnam27
Myślę, że jestem nieco zdezorientowany. Co stanie się, jeśli zastąpisz 744 przez 50 (górna granica tego, co chcesz oszacować)? Nie powinno mieć znaczenia, że bootstrap nie wybiera maksimum w każdej próbce, ponieważ wszystkie szacowane punkty są uśredniane na końcu. Może gdybyś zamieścił bardziej powtarzalną reprezentację swoich danych, mógłbym lepiej zrozumieć. –