Chciałem zrobić demonstrację klasową, w której porównuję przedział t z przedziałem ładowania początkowego i obliczę prawdopodobieństwo pokrycia obu. Chciałem, aby dane pochodziły z przekrzywionej dystrybucji, więc postanowiłem wygenerować dane jako exp(rnorm(10, 0, 2)) + 1
próbkę o wielkości 10 z przesuniętego logarytmu normalnego. Napisałem skrypt, aby narysować 1000 próbek i dla każdej próbki obliczyć zarówno 95% przedział t, jak i 95% przedział procentowy ładowania początkowego na podstawie 1000 powtórzeń.
Kiedy uruchamiam skrypt, obie metody dają bardzo podobne odstępy czasu i obie mają prawdopodobieństwo pokrycia 50-60%. Byłem zaskoczony, ponieważ myślałem, że interwał ładowania będzie lepszy.
Moje pytanie brzmi: czy mam
- popełniłeś błąd w kodzie?
- popełniłeś błąd przy obliczaniu interwałów?
- popełniłeś błąd, oczekując, że interwał ładowania będzie miał lepsze właściwości pokrycia?
Czy istnieje również sposób na zbudowanie bardziej niezawodnego elementu CI w tej sytuacji?
tCI.total <- 0
bootCI.total <- 0
m <- 10 # sample size
true.mean <- exp(2) + 1
for (i in 1:1000){
samp <- exp(rnorm(m,0,2)) + 1
tCI <- mean(samp) + c(1,-1)*qt(0.025,df=9)*sd(samp)/sqrt(10)
boot.means <- rep(0,1000)
for (j in 1:1000) boot.means[j] <- mean(sample(samp,m,replace=T))
bootCI <- sort(boot.means)[c(0.025*length(boot.means), 0.975*length(boot.means))]
if (true.mean > min(tCI) & true.mean < max(tCI)) tCI.total <- tCI.total + 1
if (true.mean > min(bootCI) & true.mean < max(bootCI)) bootCI.total <- bootCI.total + 1
}
tCI.total/1000 # estimate of t interval coverage probability
bootCI.total/1000 # estimate of bootstrap interval coverage probability
źródło
Odpowiedzi:
Diagnostyka bootstrap i środki zaradcze autorstwa Canto, Davisona, Hinkleya i Ventury (2006) wydają się logicznym punktem wyjścia. Dyskutują na wiele sposobów, w jaki bootstrap może się zepsuć i - co ważniejsze tutaj - oferują diagnostykę i możliwe rozwiązania:
W tej sytuacji nie widzę problemu z 1, 2 i 4. Spójrzmy na 3. Jak zauważa @Ben Ogorek (choć zgadzam się z @Glen_b, że dyskusja o normalności może być czerwonym śledziem), ważność bootstrap zależy od kluczowej statystyki, którą jesteśmy zainteresowani.
Sekcja 4 w Canty i in. sugeruje ponowne próbkowanie w ramach próbek, aby uzyskać pomiar odchylenia i wariancji dla oszacowania parametru w każdej próbce ładowania początkowego . Oto kod do replikacji formuł z p. 15 artykułu:
Zwróć uwagę na skale logów - bez logów jest to jeszcze bardziej rażące. Ładnie widzimy, jak wariancja średniej wartości bootstrap idzie w górę ze średnią próbki bootstrap. To dla mnie wygląda na dość pistoletu do palenia, aby obwinić o brak wzajemności jako winowajcę pokrycia niskiej częstotliwości.
Jednak z radością przyznaję, że można śledzić na wiele sposobów. Na przykład moglibyśmy spojrzeć na to, czy przedział ufności z konkretnej repliki ładowania początkowego zawiera prawdziwą średnią zależy od średniej z konkretnej repliki.
Jeśli chodzi o środki zaradcze, Canty i in. dyskutuj o transformacjach i przychodzą mi na myśl logarytmy (np. bootstrap i buduj przedziały ufności nie dla średniej, ale dla średniej z logowanych danych), ale tak naprawdę nie mogłem tego zrobić.
Canty i in. kontynuuj dyskusję, w jaki sposób można zmniejszyć zarówno liczbę wewnętrznych ładowań początkowych, jak i pozostały hałas, ważąc próbkowanie i wygładzanie, a także dodając przedziały ufności do wykresów przestawnych.
To może być fajna praca dyplomowa dla inteligentnego studenta. Byłbym wdzięczny za wszelkie wskazówki dotyczące tego, gdzie popełniłem błąd, a także do każdej innej literatury. I pozwolę sobie dodać
diagnostic
tag do tego pytania.źródło
Potem pomyślałem trochę więcej o całej konfiguracji. Czy przy zaledwie 10 obserwacjach i wyjątkowo wypaczonym rozkładzie nie jest w zasadzie niemożliwe, aby nieparametrycznie oszacować średnią, a tym bardziej skonstruować przedziały ufności z odpowiednim zakresem?
źródło
Obliczenia były prawidłowe, sprawdziłem krzyżowo przy użyciu dobrze znanego rozruchu pakietu . Dodatkowo dodałem przedział BCa (Efron), poprawioną przez błąd wersji procentowego przedziału ładowania początkowego:
Zakładam, że interwały byłyby znacznie lepsze, gdyby pierwotna wielkość próbki była większa niż 10, powiedzmy 20 lub 50.
Ponadto metoda bootstrap-t zwykle prowadzi do lepszych wyników dla przekrzywionych statystyk. Jednak potrzebuje zagnieżdżonej pętli, a zatem ponad 20 razy więcej czasu obliczeniowego.
Do testowania hipotez bardzo ważne jest również, aby jednostronne pokrycia były dobre. Dlatego patrzenie tylko na dwustronne relacje może często wprowadzać w błąd.
źródło
Też byłem zdezorientowany i spędziłem dużo czasu na papierowych przedziałach ufności Bootstrap DiCiccio z 1996 roku i Efron , bez wiele do pokazania.
Doprowadziło mnie to do mniejszego myślenia o bootstrapie jako metodzie ogólnego zastosowania. Kiedyś myślałem o tym jak o czymś, co wyciągnęłoby cię z dżemu, kiedy naprawdę utknąłeś. Ale nauczyłem się jego brudnej małej tajemnicy: przedziały ufności ładowania początkowego oparte są w jakiś sposób na normalności. Pozwól mi wyjaśnić.
Kiedy myślisz o tym, co uzasadnia percentyle rozkładu normalnego związane z przedziałami ufności, jest ono całkowicie oparte na tej dogodnej kluczowej wielkości. W przypadku arbitralnego rozkładu nie ma teoretycznego związku między percentylami rozkładu próbkowania i przedziałami ufności , a przyjęcie surowych proporcji rozkładu próbkowania bootstrap go nie odcina.
Dlatego interwały BCa (skorygowane odchylenie) Efrona wykorzystują transformacje, aby zbliżyć się do normalności, a metody bootstrap-t polegają na tym, że uzyskane statystyki t są w przybliżeniu kluczowe. Teraz bootstrap potrafi oszacować piekło z chwil i zawsze możesz założyć normalność i użyć standardowego +/- 2 * SE. Ale biorąc pod uwagę całą pracę związaną z wprowadzaniem nieparametrycznej wersji z bootstrapem, nie wydaje się to całkiem uczciwe, prawda?
źródło
Sprawdź artykuł Tima Hesterberga w The American Statistician na http://www.timhesterberg.net/bootstrap#TOC-What-Teachers-Should-Know-about-the-Bootstrap:-Resampling-in-the-Undergraduate-Statistics-Curriculum .
Zasadniczo interwał centylowy ładowania początkowego nie ma dużego prawdopodobieństwa pokrycia dla wypaczonych danych, chyba że n jest duże.
źródło