2011-09-28 14 views
15

Próbuję użyć z pakietu R boot do obliczenia przedziałów ufności bootstrap skorygowanych o skorygowane skosy i skoki z parametrycznego ładowania początkowego. Po przeczytaniu stron man i eksperymentów doszedłem do wniosku, że muszę osobiście obliczyć szacunki jackknife i wprowadzić je do boot.ci, ale nie jest to wyraźnie stwierdzone nigdzie indziej. Nie byłem w stanie znaleźć innej dokumentacji, choć aby być uczciwym ja nie spojrzał na oryginalnej książki Davison i Hinkley na którym oparty jest kod ...Dopasowane przedziały ufności ładowania początkowego (BCa) z parametrycznym ładowaniem początkowym w pakiecie rozruchowym

Gdybym naiwnie uruchomić b1 <- boot(...,sim="parametric") a następnie boot.ci(b1), ja uzyskać błąd influence values cannot be found from a parametric bootstrap. Ten błąd występuje wtedy i tylko wtedy, gdy określę type="all" lub type="bca"; boot.ci(b1,type="bca") daje ten sam błąd. Tak samo jest z empinf(b1). Jedyny sposób, w jaki mogę sprawić, że wszystko działa, to jawne obliczanie szacunków jackknife (przy użyciu empinf() z argumentem data) i podawanie ich do boot.ci.

Construct Data:

set.seed(101) 
d <- data.frame(x=1:20,y=runif(20)) 
m1 <- lm(y~x,data=d) 

Bootstrap:

b1 <- boot(d$y, 
      statistic=function(yb,...) { 
      coef(update(m1,data=transform(d,y=yb))) 
      }, 
      R=1000, 
      ran.gen=function(d,m) { 
      unlist(simulate(m)) 
      }, 
      mle=m1, 
      sim="parametric") 

dzieła do tej pory.

boot.ci(b1) 
boot.ci(b1,type="bca") 
empinf(b1) 

wszystkie dają błąd opisany powyżej.

to działa:

L <- empinf(data=d$y,type="jack", 
      stype="i", 
      statistic=function(y,f) { 
       coef(update(m1,data=d[f,])) 
      }) 

boot.ci(b1,type="bca",L=L) 

Czy ktoś wie, czy jest to sposób mam to robić? odpowiedzi na wiadomość e-mail Oryginalny autor pakietu boot::

aktualizacja

... masz rację, że problemem jest to, że robisz parametrycznego startowej. Przedziały bca zaimplementowane podczas rozruchu są nielimitycznymi interwałami i powinno to być wyraźnie powiedziane: . Wzory dla parametrycznych odstępów bca nie są takie same i zależą od pochodnych najmniej korzystnego rodzinnego prawdopodobieństwa, gdy występują nieprzyjemne parametry, jak w przypadku . (Patrz: str. 206-207 w Davison & Hinkley) empinf przyjmuje, że statystyki są w jednej z form używanych do nieparametrycznego ładowania początkowego (które wykonałeś w swoim przykładzie wywołania empinf), ale twoje oryginalne wywołanie do rozruchu (poprawnie) miał statystykę w innej postaci odpowiednią do parametrycznego resamplingu.

Z pewnością możesz robić to, co robisz, ale nie jestem pewien teoretycznych właściwości mieszania parametrycznego resamplingu z nielimityczną estymacją przedziału czasowego .

+1

Być może mam tę przewagę, że mam książkę i cały rozdział dotyczący aplikacji regresyjnych. Nie mogę jednak powiedzieć, czy byłoby użyteczne zamieścić moje wyniki użycia 'jack.after.boot', ponieważ mówisz, że jesteś przekonany, że najpierw należy wykonać scyzoryk. –

Odpowiedz

4

Po przejrzeniu strony boot.ci zdecydowałem się użyć obiektu startowego zbudowanego na wzór przykładu w Ch 6 Davison i Hinkley i sprawdzić, czy wygenerował on błędy, które zaobserwowałeś. Otrzymuję ostrzeżenie, ale nie ma błędów.:

require(boot) 
lmcoef <- function(data, i){ 
     d <- data[i, ] 
     d.reg <- lm(y~x, d) 
     c(coef(d.reg)) } 
lmboot <- boot(d, lmcoef, R=999) 
m1 
boot.ci(lmboot, index=2) # I am presuming that the interest is in the x-coefficient 
#---------------------------------- 
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS 
Based on 999 bootstrap replicates 

CALL : 
boot.ci(boot.out = lmboot, index = 2) 

Intervals : 
Level  Normal    Basic   
95% (-0.0210, 0.0261) (-0.0236, 0.0245) 

Level  Percentile   BCa   
95% (-0.0171, 0.0309) (-0.0189, 0.0278) 
Calculations and Intervals on Original Scale 
Warning message: 
In boot.ci(lmboot, index = 2) : 
    bootstrap variances needed for studentized intervals 
+0

hmm. dzięki ... regresja była tylko moim przykładem (moim prawdziwym problemem jest GLMM), ale przyjrzę się temu i spróbuję wymyślić różnicę między tym, co zrobiłeś (co działa) i co zrobiłem (co nie) –

+0

oops. teraz widzę. Kluczem jest to, że używam ** parametrycznego ** bootstrapping, nie jesteś. Myślę, że jeśli powtórzysz to z 'type =" parametrycznym "' i innymi niezbędnymi zmianami (np. Dodając funkcję 'ran.gen', itp.), Skończysz z czymś, co wygląda jak mój przykład powyżej i nie zapewnia szacunków BCa bez półautomatycznych obliczeń scyzoryków ... –

+0

Jaką wartość ma parametr "type =" parametryczny "" w tej konstrukcji? Współczynnik liniowy (lub liniowy na jakiejś innej transformowanej skali) jest oszacowaniem parametrycznym. Więc po przejrzeniu materiału z 2. rozdziału Davison i Hinkleya, myślę, że robię parametryczny bootstrap w powyższym kodzie. –

Powiązane problemy