Pakiet muhaz
szacuje dane hazard function z right censored przy użyciu metod wygładzania jądra. Moje pytanie brzmi, czy istnieje sposób na uzyskanie przedziałów ufności dla funkcji zagrożenia, którą oblicza muhaz
?Przedział ufności funkcji zagrożenia pakietu 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))
W powyższym przykładzie muhaz.object
fit
ma pewne wpisy fit1$msemin
, fit1$var.min
, fit1$haz.est
natomiast ich długość wynosi połowę fit1$haz.est
.
Wszelkie pomysły, jeśli możliwe jest wyodrębnienie przedziałów ufności dla funkcji zagrożenia?
EDIT: Próbowałem następujących w oparciu o to, co @ user20650 zasugerował
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)
Ustawianie max.time wydaje się działa, każda próbka bootstrap któryś z tych samych punktów siatki szacowania. Jednak uzyskany CI nie ma większego sensu. Normalnie spodziewam się, że przedziały są wąskie w czasie t = 0 i stają się szersze w czasie (mniej informacji, więcej niepewności), ale uzyskane interwały wydają się mniej więcej stałe w czasie.
Czy możesz go uruchomić? To 'with (fit1, plot (est.grid, haz.est, type =" l ", lwd = 3, ylim = c (0,0.002)))' daje ten sam wykres, więc będziesz potrzebować oszacowań 'haz .sto w tych samych punktach czasowych jak w przypadku 'fit1'. Jednakże, gdy próbujesz ponownie i zmieniasz model 'muhaz', zmieniają się punkty czasowe. Z szybkiego testu, myślę, że możesz zmusić' est.grid' do tego samego punktu czasowego dla każdego resample jeśli ustawisz 'min.time' i 'max.time' jest taki sam jak w oryginalnym dopasowaniu. tj. 'with (dat, muhaz (futime, fustat, min.time = 0, max.time = 744))', gdzie 'dat' to dane ładowania początkowego. – user20650
Ustawienie maks.czas wydaje się działać, każda próbka bootstrap ma te same punkty siatki szacunkowej. Jednak uzyskany CI nie ma większego sensu. Normalnie spodziewam się, że interwały rozszerzają się wraz z upływem czasu (mniej informacji, więcej niepewności), ale uzyskane interwały wydają się być mniej więcej stałe w czasie. – ECII