Czy bootstrap może być postrzegany jako „lekarstwo” na małą próbkę?

71

To pytanie zostało wywołane przez coś, co przeczytałem w tym podręczniku do statystyki dla absolwentów, a także (niezależnie) usłyszałem podczas tej prezentacji na seminarium statystycznym. W obu przypadkach stwierdzenie było zgodne z „ponieważ wielkość próbki jest dość mała, postanowiliśmy przeprowadzić oszacowanie za pomocą bootstrap zamiast (lub wraz z) tą metodą parametryczną ”.X

Nie przejdziemy do szczegółów, ale prawdopodobnie argumentacja była następująca: Metoda zakłada dane śledzić pewien parametrycznego dystrybucji . W rzeczywistości rozkład nie jest dokładnie , ale jest w porządku, o ile wielkość próbki jest wystarczająco duża. Ponieważ w tym przypadku wielkość próbki jest zbyt mała, przełączmy się na (nieparametryczny) bootstrap, który nie przyjmuje żadnych założeń dystrybucyjnych. Problem rozwiązany!D DXDD

Moim zdaniem nie po to jest bootstrap. Oto, jak to widzę: bootstrap może dać przewagę, gdy jest mniej lub bardziej oczywiste, że jest wystarczająca ilość danych, ale nie ma rozwiązania w formie zamkniętej, aby uzyskać standardowe błędy, wartości p i podobne statystyki. Klasycznym przykładem jest uzyskanie CI dla współczynnika korelacji na podstawie próbki z dwuwymiarowego rozkładu normalnego: istnieje rozwiązanie w postaci zamkniętej, ale jest tak skomplikowane, że ładowanie jest prostsze. Jednak nic nie sugeruje, że bootstrap może w jakiś sposób pomóc uniknąć małej próbki.

Czy moje postrzeganie jest prawidłowe?

Jeśli uznasz to pytanie za interesujące, jest jeszcze jedno, bardziej szczegółowe pytanie ode mnie:

Bootstrap: problem nadmiernego dopasowania

PS Nie mogę się powstrzymać od podzielenia się jednym rażącym przykładem „podejścia bootstrap”. Nie ujawniam nazwiska autora, ale jest on jednym ze „quantów” starszego pokolenia, który napisał książkę o finansach ilościowych w 2004 roku. Stąd wzięto przykład.

Rozważ następujący problem: załóżmy, że masz 4 zasoby i 120 miesięcznych obserwacji zwrotu dla każdego. Celem jest zbudowanie wspólnego 4-wymiarowego cdf rocznych zwrotów. Nawet w przypadku pojedynczego zasobu zadanie wydaje się trudne do wykonania przy zaledwie 10 rocznych obserwacjach, nie mówiąc już o oszacowaniu 4-wymiarowego cdf. Ale nie martw się, „pasek startowy” pomoże ci: weź wszystkie dostępne 4-wymiarowe obserwacje, zmień próbkę 12 z zamiennikiem i połącz je, aby zbudować jeden „ładowany” 4-wymiarowy wektor rocznych zwrotów. Powtórz to 1000 razy, a oto masz próbkę „bootstrap” z 1000 rocznych zysków. Użyj tego jako próbki średniej wielkości 1000 do celów oceny cdf lub innych wniosków, które można wyciągnąć z tysiącletniej historii.

James
źródło
18
Słyszę lub czytam podobne sentymenty do twojego pierwszego akapitu, ale zwykle się nie zgadzam. Zwykle nie widzę ładowania początkowego jako koniecznie przydatnego w małych próbkach. Jego uzasadnieniem jest asymptotyczna / duża próbka, aw wielu przypadkach w praktyce wydajność małych prób jest problematyczna; na przykład pokrycie przedziałów często często różni się od stawki nominalnej. To kolejne przydatne narzędzie, ale podobnie jak wiele innych, które zostały ogłoszone na przestrzeni lat, niektórzy ludzie nie wyobrażają sobie takiego panaceum. Naprawdę nie sądzę, że jest to rozwiązanie dla bardzo małych próbek.
Glen_b
W książce Simona Sheather'a (ryc. 3.40) znajduje się schemat blokowy regresji, który sugeruje bootstrap do wnioskowania, gdy wielkość próbki nie jest duża i błędy nie są normalnie rozłożone.
Tony Ladson,
2
Odpowiedź na pytanie w czwartym akapicie brzmi „tak” (a przynajmniej uzyskałbyś uznanie za swój argument, gdybyś udzielił tej odpowiedzi podczas testu w mojej klasie). Czy sprawdziłeś tę dyskusję ? W mojej odpowiedzi podałem wyjaśnienie przybliżeń, jakie robi bootstrap, i podałem odniesienie do zadającego cios papieru, który każdy bootstrapper powinien przeczytać, aby zdawać sobie sprawę z ograniczeń tej metody. Byłoby miło zobaczyć odniesienia do książek / artykułów / prezentacji, które wywołały twoje pytanie
StasK
Czy bootstrap nie daje tylko dodatkowego terminu w rozszerzeniu edgeworth - jak zwykłe przybliżenie z terminem korygującym?
probabilityislogic

Odpowiedzi:

34

Pamiętam, że czytałem, że użycie percentyla przedziału ufności do ładowania jest równoważne użyciu przedziału Z zamiast przedziału T i użyciu zamiast dla mianownika. Niestety nie pamiętam, gdzie to przeczytałem i nie mogłem znaleźć odniesienia w moich szybkich wyszukiwaniach. Różnice te nie mają większego znaczenia, gdy n jest duże (a zalety bootstrap przeważają nad tymi drobnymi problemami, gdy jest duży), ale przy małym może to powodować problemy. Oto kod R do symulacji i porównania:n - 1 n nnn1nn

simfun <- function(n=5) {
    x <- rnorm(n)
    m.x <- mean(x)
    s.x <- sd(x)
    z <- m.x/(1/sqrt(n))
    t <- m.x/(s.x/sqrt(n))
    b <- replicate(10000, mean(sample(x, replace=TRUE)))
    c( t=abs(t) > qt(0.975,n-1), z=abs(z) > qnorm(0.975),
        z2 = abs(t) > qnorm(0.975), 
        b= (0 < quantile(b, 0.025)) | (0 > quantile(b, 0.975))
     )
}

out <- replicate(10000, simfun())
rowMeans(out)

Moje wyniki dla jednego cyklu to:

     t      z     z2 b.2.5% 
0.0486 0.0493 0.1199 0.1631 

Widzimy więc, że użycie testu t i testu z (z prawdziwym odchyleniem standardowym populacji) daje zarówno współczynnik błędu typu I, który jest zasadniczo zgodnie z projektem. Nieprawidłowy test Z (dzielenie przez odchylenie standardowe próbki, ale użycie wartości krytycznej Z zamiast T) odrzuca wartość zerową ponad dwa razy częściej niż powinno. Jeśli chodzi o bootstrap, odrzuca zero 3 razy tak często, jak powinien (patrząc, czy 0, prawdziwa średnia, jest w przedziale, czy nie), więc dla tego małego rozmiaru próbki prosty bootstrap nie ma odpowiedniego rozmiaru i dlatego nie naprawiaj problemów (i wtedy dane są optymalnie normalne). Ulepszone interwały ładowania (BCa itp.) Prawdopodobnie będą lepsze, ale powinno to budzić pewne obawy związane z używaniem ładowania jako panaceum na małe próbki.α

Greg Snow
źródło
6
Ostatnie zdanie wzbudziło we mnie zainteresowanie, więc wypróbowałem to na twoim przykładzie. Użyłem tego bootpakietu i zapewniłem wszystkie możliwe interwały: normalny interwał aproksymacji pierwszego rzędu, podstawowy interwał bootstrapu, interwał bootstrapu studenckiego, interwał percentylowy bootstrapu (który kod już zapewnia) i dostosowany percentyl bootstrapowy (BCa) interwał. Wyniki były zasadniczo takie same (wskaźniki odrzucenia około 0,16 -1,17), z wyjątkiem przedziału studenckiego, który miał nominalny (0,05) wskaźnik odrzucenia (co ma sens, ponieważ bardziej przypomina standardowy test t).
Wolfgang,
2
@Wolfgang, dzięki za wykonanie dodatkowych symulacji. Jestem trochę zaskoczony, że inne interwały nie wypadły trochę lepiej, ale nie jestem zaskoczony, że nie osiągnęły poziomu 0,05.
Greg Snow,
1
Tak, też byłem trochę zaskoczony! Czasami nasza intuicja zawodzi. Dlatego tak wspaniale jest móc napisać mały skrypt w R w ciągu kilku minut, uruchomić 10,000 \times 10,000iteracje (zajęło to kilka minut) i móc sprawdzić różne rzeczy. A twój przykład ładnie pokazuje, że bootstrap może działać dość źle z małymi próbkami, nawet gdy rzeczy są „ładne” (tj. Dane są w rzeczywistości normalne).
Wolfgang,
Faktycznie, problem widać w tej symulacji jest dokładnie jeden Poprosiłem tylko o tu i odpowiedzieć w komentarzach @whuber: stats.stackexchange.com/questions/323455/... . Dlatego nie sądzę, że problemem jest wielkość próby, ale naruszenie niezależności wnioskowania parametrycznego w każdej próbce.
pół-pass
2
Twój komentarz na temat przedziału ufności percentyla, który jest równoważny użyciu zamiast jest właśnie tutaj . tzt
Daeyoung Lim
14

Jeśli otrzymasz małą próbkę (jako boczne, to, co jest „małe” wydaje się zależeć od pewnych podstawowych zwyczajowych zasad w każdym polu badawczym), żaden bootstrap nie zrobi magii. Zakładając, że baza danych zawiera trzy obserwacje dla każdej z dwóch badanych zmiennych, żadne wnioskowanie nie będzie miało sensu. Z mojego doświadczenia wynika, że ​​nieparametryczny bootstrap (1000 lub 10 000 replikacji) działa dobrze, zastępując test t, gdy rozkłady próbek (co najmniej 10-15 obserwacji) są wypaczone, a zatem warunki wstępne dla zwykłego testu t nie są spełnione. Poza tym, niezależnie od liczby obserwacji, nieparametryczny bootstrap może być obowiązkowym wyborem, gdy dane są pozytywnie wypaczone, jak to zawsze ma miejsce w przypadku kosztów opieki zdrowotnej.

Carlo Lazzaro
źródło
1
bootstrap może być obowiązkowym wyborem, gdy dane są pozytywnie wypaczone - dlaczego zamiast tego nie użyć logarytmicznej lub podobnej wypaczonej dystrybucji? SAS i R mają duży wybór.
James
1
Odpowiedź Jamesa jest warta rozważenia. Jednak zwykłym problemem, jaki napotykam przy rejestrowaniu danych o kosztach, jest powrót do pierwotnych danych przed przedstawieniem wyników decydentom. Możesz uniknąć tego problemu dzięki nieparametrycznemu bootstrapowi.
Carlo Lazzaro,
Carlo, ponieważ masz doświadczenie w przetwarzaniu logów, możesz odpowiedzieć na inne moje pytanie (jest to 50 punktowa nagroda): stats.stackexchange.com/a/111932/54099
James
James, kilka minut temu udzieliłem kuszącej odpowiedzi na twoje pytanie.
Carlo Lazzaro,
χ 2 1t testy można skorygować dla wypaczonych populacji, patrz jstor.org/stable/2286597 - proponowane poprawki działały dobrze z dość wypaczonymi populacjami, takimi jak z 10 obserwacjami. χ12
StasK
13

Inne odpowiedzi krytykują wydajność przedziałów ufności ładowania , a nie samego ładowania. To inny problem.

Jeśli twój kontekst spełnia warunki regularności dla zbieżności dystrybucji bootstrap (zbieżność pod względem liczby próbek bootstrap), wówczas metoda zadziała, jeśli użyjesz wystarczająco dużej próbki bootstrap.

Jeśli naprawdę chcesz znaleźć problemy z używaniem nieparametrycznego bootstrapu, oto dwa problemy:

(1) Problemy z ponownym próbkowaniem.

Jednym z problemów z bootstrapem, zarówno dla małych, jak i dużych próbek, jest etap ponownego próbkowania. Nie zawsze jest możliwe ponowne próbkowanie przy jednoczesnym zachowaniu struktury (zależność, czasowość, ...) próbki. Przykładem tego jest nałożony proces .

Załóżmy, że istnieje wiele niezależnych źródeł, z których każde zdarza się od czasu do czasu. Przyjmuje się, że odstępy między kolejnymi zdarzeniami w jednym źródle są niezależnymi zmiennymi losowymi, wszystkie o tym samym rozkładzie, tak że każde źródło stanowi proces odnawiania znanego typu. Wyjścia źródeł są łączone w jedno połączone wyjście.

Jak ponownie spróbowałbyś zachować zachowując nieznaną strukturę zależności ?

(2) Wąskie próbki bootstrapu i przedziały ufności bootstrap dla małych próbek .

W małych próbkach minimum i maksimum estymatorów dla każdej podpróbki może określać wąski przedział, następnie prawy i lewy punkt końcowy dowolnych przedziałów ufności będzie bardzo wąski (co jest sprzeczne z intuicją, biorąc pod uwagę małą próbkę!) W niektórych modelach.

Załóżmy, że , gdzie to stawka. Za pomocą prawdopodobieństwa profilu można uzyskać przybliżony przedział ufności (95% przybliżony przedział ufności to przedział prawdopodobieństwa profilu na poziomie 0,147) w następujący sposób:λ > 0x1,x2Exp(λ)λ>0

set.seed(1)
x <- rexp(2,1)
# Maximum likelihood estimator
1/mean(x)

# Profile likelihood: provides a confidence interval with right-end point beyond the maximum inverse of the mean
Rp <- Vectorize(function(l) exp(sum(dexp(x,rate=l,log=T))-sum(dexp(x,rate=1/mean(x),log=T))))

curve(Rp,0,5)
lines(c(0,5),c(0.147,0.147),col="red")

Ta metoda tworzy ciągłą krzywą, z której można wyodrębnić przedział ufności. Estymator największego prawdopodobieństwa to . Dzięki ponownemu próbkowaniu istnieją tylko trzy możliwe wartości, które możemy uzyskać dla tego estymatora, których maksimum i minimum określają granice dla odpowiednich przedziałów ufności ładowania. Może to wyglądać dziwnie, nawet w przypadku dużych próbek bootstrap (zwiększenie tej liczby nie przynosi dużych zysków):X = 2 / ( x 1 + x 2 )λλ^=2/(x1+x2)

library(boot)
set.seed(1)
x <- rexp(2,1)
1/mean(x)
# Bootstrap interval: limited to the maximum inverse of the mean
f.boot <- function(data,ind) 1/mean(data[ind])
b.b <- boot(data=x, statistic=f.boot, R=100000)
boot.ci(b.b, conf = 0.95, type = "all")
hist(b.b$t)

W tym przypadku im bliższe i , tym węższy jest rozkład bootstrapu, a tym samym węższy przedział ufności (który może znajdować się daleko od rzeczywistej wartości). Ten przykład jest w rzeczywistości związany z przykładem przedstawionym przez @GregSnow, chociaż jego argument był bardziej empiryczny. Granice, o których wspominam, wyjaśniają słabą wydajność wszystkich przedziałów ufności ładowania początkowego analizowanych przez @Wolfgang.x 2x1x2

Troilo
źródło
6

Bootstrap działa dobrze w małych próbkach, zapewniając poprawność testów (np. Że nominalny poziom istotności 0,05 jest zbliżony do rzeczywistego rozmiaru testu), jednak bootstrap nie zapewnia magicznej dodatkowej mocy. Jeśli masz małą próbkę, masz mało mocy, koniec historii.

Regresje parametryczne (modele liniowe) i półparametryczne (GEE) mają tendencję do słabych właściwości małych próbek ... te pierwsze wynikają z dużej zależności od założeń parametrycznych, a drugie ze względu na powiększenie solidnych oszacowań błędów standardowych w małych próbkach. Bootstrapping (i inne testy oparte na ponownym próbkowaniu) działają naprawdę dobrze w takich okolicznościach.

W przypadku przewidywania, ładowanie początkowe zapewni lepsze (bardziej uczciwe) oszacowania wewnętrznej ważności niż weryfikacja podzielonej próbki.

Czasowe ładowanie często daje mniej mocy w wyniku nieumyślnego skorygowania średnich procedur imputacji / hotdeckingu (np. Przy dopasowaniu rozmytym). Błędnie twierdzono , że ładowanie początkowe daje większą moc w dopasowanych analizach, w których poszczególne osoby były ponownie próbkowane w celu uzyskania wystarczającego rozmiaru klastra, dając pasujące zestawy danych o ładowaniu większym niż zestawu danych do analizy.n

AdamO
źródło
2
(np. że nominalny poziom istotności 0,05 jest zbliżony do rzeczywistego rozmiaru testu), - ale w powyższym kodzie R właśnie widzieliśmy, że bootstrap nie zachowuje wielkości testu, prawda?
James
Widzę, że masz na myśli odpowiedź udzieloną przez Grega Snowa. Byłem zaskoczony tym wynikiem. Będę musiał ponownie sprawdzić fakty i zredagować odpowiedź. Dzięki.
AdamO,