Bootstrapping to metoda ponownego próbkowania w celu oszacowania rozkładu próbkowania współczynników regresji, a zatem obliczenia standardowych błędów / przedziałów ufności współczynników regresji. Ten post ma ładne wyjaśnienie. Omówienie liczby potrzebnych replikacji znajduje się w tym poście.
- Nieparametryczny pasek startowy ponownie i losowo ponownie rysuje obserwacje z wymianą (tzn. Niektóre obserwacje są rysowane tylko raz, inne wielokrotnie, a niektóre nigdy), a następnie oblicza regresję logistyczną i przechowuje współczynniki. To się powtarzanczasy. Otrzymasz 10 000 różnych współczynników regresji. Te 10 000 współczynników można następnie wykorzystać do obliczenia ich przedziałów ufności. Ponieważ używany jest pseudolosowy generator liczb, możesz po prostu ustawić ziarno na dowolną liczbę, aby za każdym razem uzyskiwać dokładnie takie same wyniki (patrz przykład poniżej). Aby naprawdę mieć stabilne szacunki, sugerowałbym ponad 1000 powtórzeń, może 10 000. Możesz uruchomić bootstrap kilka razy i sprawdzić, czy szacunki znacznie się zmienią, niezależnie od tego, czy wykonasz 1000 czy 10 000 replikacji. Mówiąc wprost: powinieneś brać replikacje, aż osiągniesz konwergencję. Jeśli oszacowania bootstrap różnią się między oszacowaniami a obserwowanym, pojedynczym modelem, może to oznaczać, że obserwowany model nie odzwierciedla odpowiednio struktury próby.
boot
R
, na przykład, uwypukla „odchylenie”, które jest różnicą między współczynnikami regresji twojego pojedynczego modelu i średnią próbek bootstrap.
- Podczas wykonywania ładowania początkowego nie jesteś zainteresowany pojedynczą próbką ładowania początkowego, ale rozkładem statystyk (np. Współczynników regresji) między, powiedzmy, 10 000 próbek ładowania początkowego.
- Powiedziałbym, że 10 000 jest lepsze niż 1000. W przypadku nowoczesnych komputerów nie powinno to stanowić problemu. W poniższym przykładzie narysowanie 10 000 próbek zajęło mojemu komputerowi około 45 sekund. Zależy to oczywiście od wielkości próbki. Im większy rozmiar próbki, tym większa liczba iteracji powinna zapewnić uwzględnienie każdej obserwacji.
- Co masz na myśli: „wyniki różnią się za każdym razem”? Przypomnij sobie, że na każdym etapie ładowania początkowego obserwacje są na nowo rysowane z zastępstwem. Dlatego najprawdopodobniej skończysz z nieco innymi współczynnikami regresji, ponieważ twoje obserwacje są różne. Ale jak już powiedziałem: tak naprawdę nie jesteś zainteresowany wynikiem pojedynczej próbki bootstrap. Gdy liczba replikacji jest wystarczająco wysoka, pasek startowy powinien za każdym razem dawać bardzo podobne przedziały ufności i oszacowania punktowe.
Oto przykład w R
:
library(boot)
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
head(mydata)
mydata$rank <- factor(mydata$rank)
my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
summary(my.mod)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.989979 1.139951 -3.500 0.000465 ***
gre 0.002264 0.001094 2.070 0.038465 *
gpa 0.804038 0.331819 2.423 0.015388 *
rank2 -0.675443 0.316490 -2.134 0.032829 *
rank3 -1.340204 0.345306 -3.881 0.000104 ***
rank4 -1.551464 0.417832 -3.713 0.000205 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Set up the non-parametric bootstrap
logit.bootstrap <- function(data, indices) {
d <- data[indices, ]
fit <- glm(admit ~ gre + gpa + rank, data = d, family = "binomial")
return(coef(fit))
}
set.seed(12345) # seed for the RNG to ensure that you get exactly the same results as here
logit.boot <- boot(data=mydata, statistic=logit.bootstrap, R=10000) # 10'000 samples
logit.boot
Bootstrap Statistics :
original bias std. error
t1* -3.989979073 -7.217244e-02 1.165573039
t2* 0.002264426 4.054579e-05 0.001146039
t3* 0.804037549 1.440693e-02 0.354361032
t4* -0.675442928 -8.845389e-03 0.329099277
t5* -1.340203916 -1.977054e-02 0.359502576
t6* -1.551463677 -4.720579e-02 0.444998099
# Calculate confidence intervals (Bias corrected ="bca") for each coefficient
boot.ci(logit.boot, type="bca", index=1) # intercept
95% (-6.292, -1.738 )
boot.ci(logit.boot, type="bca", index=2) # gre
95% ( 0.0000, 0.0045 )
boot.ci(logit.boot, type="bca", index=3) # gpa
95% ( 0.1017, 1.4932 )
boot.ci(logit.boot, type="bca", index=4) # rank2
95% (-1.3170, -0.0369 )
boot.ci(logit.boot, type="bca", index=5) # rank3
95% (-2.040, -0.629 )
boot.ci(logit.boot, type="bca", index=6) # rank4
95% (-2.425, -0.698 )
Wyjście ładowania początkowego wyświetla oryginalne współczynniki regresji („oryginalne”) i ich odchylenie, które jest różnicą między współczynnikami oryginalnymi a współczynnikami ładowania początkowego. Daje również standardowe błędy. Pamiętaj, że są one nieco większe niż oryginalne błędy standardowe.
Z przedziałów ufności zazwyczaj preferowane są skorygowane odchylenie („bca”). Daje przedziały ufności w oryginalnej skali. Aby uzyskać przedziały ufności dla ilorazów szans, po prostu potęguj granice ufności.