Istnieje wiele sposobów obliczania CI i wartości p bootstrap. Głównym problemem jest to, że bootstrap nie jest w stanie wygenerować danych pod hipotezą zerową. Test permutacji jest realną alternatywą dla tego opartego na ponownym próbkowaniu. Aby użyć prawidłowego paska startowego, należy przyjąć pewne założenia dotyczące rozkładu próbkowania statystyki testowej.
β∗0= β^- β^∗β∗0= β^∗- β^
normalny bootstrap
Jednym z podejść jest normalny bootstrap, w którym bierzesz średnią i standardowe odchylenie rozkładu bootstrap, obliczasz rozkład próbkowania pod wartością zerową, przesuwając rozkład i używając normalnych percentyli z rozkładu zerowego w punkcie oszacowania w oryginalnej próbce bootstrap . Jest to rozsądne podejście, gdy rozkład ładowania jest normalny, zwykle wystarcza tutaj kontrola wzrokowa. Wyniki wykorzystujące to podejście są zwykle bardzo zbliżone do solidnego lub opartego na kanapce oszacowania błędu, który jest odporny na założenia heteroscedastyczności i / lub skończonych wariantów wariancji próbki. Założenie normalnej statystyki testu jest silniejszym warunkiem założeń w następnym teście bootstrapu, który omówię.
percentyl bootstrap
fa∗02 × min ( F.∗0( β^) , 1 - F∗0( β^) )
Studencki bootstrap
p
Przykład programowania
Jako przykład użyję city
danych z pakietu bootstrap. Przedziały ufności ładowania początkowego są obliczane za pomocą tego kodu:
ratio <- function(d, w) sum(d$x * w)/sum(d$u * w)
city.boot <- boot(city, ratio, R = 999, stype = "w", sim = "ordinary")
boot.ci(city.boot, conf = c(0.90, 0.95),
type = c("norm", "basic", "perc", "bca"))
i wyprodukuj ten wynik:
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 999 bootstrap replicates
CALL :
boot.ci(boot.out = city.boot, conf = c(0.9, 0.95), type = c("norm",
"basic", "perc", "bca"))
Intervals :
Level Normal Basic
90% ( 1.111, 1.837 ) ( 1.030, 1.750 )
95% ( 1.042, 1.906 ) ( 0.895, 1.790 )
Level Percentile BCa
90% ( 1.291, 2.011 ) ( 1.292, 2.023 )
95% ( 1.251, 2.146 ) ( 1.255, 2.155 )
Calculations and Intervals on Original Scale
95% CI dla normalnego bootstrap uzyskuje się poprzez obliczenie:
with(city.boot, 2*t0 - mean(t) + qnorm(c(0.025, 0.975)) %o% sqrt(var(t)[1,1]))
W ten sposób uzyskuje się wartość p:
> with(city.boot, pnorm(abs((2*t0 - mean(t) - 1) / sqrt(var(t)[1,1])), lower.tail=F)*2)
[1] 0.0315
Co zgadza się, że 95% normalny CI nie obejmuje wartości zerowej 1.
Uzyskuje się percentyl CI (z pewnymi różnicami wynikającymi z metod wiązania):
quantile(city.boot$t, c(0.025, 0.975))
Wartość p dla bootstrapu percentyla wynosi:
cvs <- quantile(city.boot$t0 - city.boot$t + 1, c(0.025, 0.975))
mean(city.boot$t > cvs[1] & city.boot$t < cvs[2])
Podaje wartość p wynoszącą 0,035, co również zgadza się z przedziałem ufności pod względem wyłączenia 1 z wartości. Zasadniczo nie możemy zaobserwować, że podczas gdy szerokość percentyla CI jest prawie tak szeroka jak normalny CI i że percentyl CI jest dalej od zera, że percentyl CI powinien zapewniać niższe wartości p. Wynika to z faktu, że kształt rozkładu próbkowania leżącego u podstaw CI dla metody percentyla jest nienormalny.