Co to jest przedział bootstrapowy BCa?
Przedział BCa (ang. bias-corrected and accelerated, przedział z korektą obciążenia i przyspieszeniem) to przedział ufności z bootstrapu, który poprawia przedział percentylowy dwiema korektami. Efron (1987) zaproponował go jako przedział, który sam uwzględnia transformacje i korekty obciążenia, bez wyprowadzania ich dla każdego zastosowania, i osiąga dokładność drugiego rzędu w wielu problemach.
Jak działa korekta BCa
Przedział percentylowy bierze 2.5. i 97.5. centyl rozkładu oszacowań z prób bootstrapowych. BCa bierze inne centyle:
- z0 – korekta obciążenia: kwantyl rozkładu normalnego odpowiadający odsetkowi oszacowań bootstrapowych mniejszych od oszacowania z próby.
- a – przyspieszenie: opisuje, jak szybko błąd standardowy zmienia się wraz z wartością parametru. Zwykle szacuje się je metodą jackknife, ze skośności oszacowań liczonych bez kolejnych obserwacji.
Gdy z0 = a = 0, BCa sprowadza się do przedziału percentylowego. Obliczenia krok po kroku opisują Efron i Tibshirani (1993).
Przykład
Długość pobytu w szpitalu 30 pacjentów (dane symulowane, rozkład prawoskośny) miała średnią 6.85 dnia (mediana 6.60, SD 4.33). Z 5000 prób bootstrapowych przedział percentylowy wyniósł [5.41, 8.46], a BCa [5.54, 8.68]. Korekty były dodatnie, z0 = 0.035 i a = 0.033, więc BCa wziął 3.8. i 98.5. centyl. Przedział przesunął się w stronę długiego prawego ogona.
Jak opisać w pracy
Na co uważać
- Liczba prób. BCa sięga do skrajnych centyli, więc potrzebuje tysięcy prób, nie setek. Gdy skorygowany centyl wypada poza zakres,
boot.ci()ostrzega, że granicą jest skrajna statystyka porządkowa. - Niezależne obserwacje. Zwykły bootstrap losuje pojedyncze obserwacje. Przy danych zagnieżdżonych trzeba losować całe skupienia.
- Nie naprawia próby. Korekta poprawia kształt przedziału, ale nie usuwa błędu doboru próby ani bardzo małej liczebności.
Przedziały BCa dla efektów pośrednich i parametrów modeli strukturalnych omawia hasło bootstrap w SEM.
Przedział BCa w R
Kod losuje 5000 prób bootstrapowych średniej z prawoskośnych danych, liczy przedział percentylowy i BCa, a potem odtwarza korekty z0 i a oraz granice BCa ręcznie.
Przedział BCa dla średniej długości pobytu
R
suppressPackageStartupMessages(library(boot))
set.seed(3850)
pobyt <- round(rlnorm(30, log(5), 0.8), 1) # długość pobytu w szpitalu (dni), 30 pacjentów
srednia <- function(d, i) mean(d[i])
b <- boot(pobyt, srednia, R = 5000) # 5000 prób bootstrapowych
round(c(srednia = mean(pobyt), mediana = median(pobyt), sd = sd(pobyt)), 2)
boot.ci(b, conf = 0.95, type = c("perc", "bca")) # przedział percentylowy i BCa
z0 <- qnorm(mean(b$t < b$t0)) # korekta obciążenia
theta_i <- sapply(seq_along(pobyt), function(i) mean(pobyt[-i])) # jackknife
u <- mean(theta_i) - theta_i
a <- sum(u^3) / (6 * sum(u^2)^1.5) # przyspieszenie
round(c(z0 = z0, a = a), 4)
alfa <- pnorm(z0 + (z0 + qnorm(c(.025, .975))) / (1 - a * (z0 + qnorm(c(.025, .975)))))
granice <- quantile(b$t, alfa, names = FALSE)
round(c(centyl_d = alfa[1], centyl_g = alfa[2], dolna = granice[1], gorna = granice[2]), 3) # BCa ręcznieWynik w R
srednia mediana sd
6.85 6.60 4.33
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 5000 bootstrap replicates
CALL :
boot.ci(boot.out = b, conf = 0.95, type = c("perc", "bca"))
Intervals :
Level Percentile BCa
95% ( 5.413, 8.457 ) ( 5.537, 8.683 )
Calculations and Intervals on Original Scale
z0 a
0.0346 0.0329
centyl_d centyl_g dolna gorna
0.038 0.985 5.538 8.682Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet boot). W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).
- R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
- boot (wersja 1.3-32): Canty, A., & Ripley, B. (2025). boot: Bootstrap functions (R package version 1.3-32) [Computer software]. https://doi.org/10.32614/CRAN.package.boot
Najczęstsze pytania
Czym przedział BCa różni się od przedziału percentylowego?
Przedział percentylowy bierze zawsze 2.5. i 97.5. centyl oszacowań bootstrapowych. BCa przesuwa te centyle o korektę obciążenia i przyspieszenie, więc lepiej oddaje skośność i obciążenie statystyki. Gdy obie korekty są równe zeru, przedziały są identyczne.
Ile prób bootstrapowych potrzeba do przedziału BCa?
Kilka tysięcy, na przykład 5000. Granice leżą w ogonach rozkładu bootstrapowego, a skorygowane centyle mogą być bardziej skrajne niż 2.5% i 97.5%, więc przy kilkuset próbach są niestabilne.
Jak policzyć przedział BCa w R?
W pakiecie boot: b <- boot(dane, statystyka, R = 5000), a potem boot.ci(b, type = "bca"). Funkcja statystyki musi przyjmować dane i wektor indeksów, np. function(d, i) mean(d[i]).
Powiązane hasła
Potrzebujesz wsparcia w analizie danych?
Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.
Wyceń analizęOferta dla studentówBibliografia i dalsza literatura naukowa (APA 7)
- Efron, B. (1987). Better bootstrap confidence intervals. Journal of the American Statistical Association, 82(397), 171–185. https://doi.org/10.1080/01621459.1987.10478410
- Efron, B., & Tibshirani, R. J. (1993). An introduction to the bootstrap. Chapman & Hall.
Cytowania BibTeX
@article{efron1987better, author={Efron, Bradley}, title={{Better bootstrap confidence intervals}}, journal={Journal of the American Statistical Association}, year={1987}, volume={82}, number={397}, pages={171--185}, doi={10.1080/01621459.1987.10478410}}@book{efron1993introduction, author={Efron, Bradley and Tibshirani, Robert J.}, title={{An introduction to the bootstrap}}, year={1993}, publisher={Chapman \& Hall}}