Który model regresji rozruchowej powinienem wybrać?

10

Mam binarny model regresji logistycznej z DV (choroba: tak / nie) i 5 predyktorami (dane demograficzne [wiek, płeć, palenie tytoniu (tak / nie)], indeks medyczny (porządkowy) i jedno losowe leczenie [tak / nie ]). Modelowałem również wszystkie dwustronne terminy interakcji. Główne zmienne są wyśrodkowane i nie ma śladu wielokoliniowości (wszystkie VIF <2,5).

Mam parę pytań:

  1. Czy ładowanie początkowe jest korzystne w porównaniu z moim pojedynczym modelem? w takim razie,

  2. który model bootstrapped powinienem wybrać? Chciałem tylko sprawdzić, czy algorytmy ładowania początkowego stosują losowe metody tworzenia nowych próbek, czy też mają sztywne algorytmy. Dlatego próbowałem ponownie 1000 razy w każdej próbie (więc mam kilka modeli bootstrap, każdy z 1000 próbami). Jednak za każdym razem współczynniki modelu bootstrapped różnią się (chociaż liczba prób wynosi stale 1000). Zastanawiam się więc, który wybrać do mojego raportu? Niektóre zmiany są niewielkie i nie wpływają na istotność moich współczynników, ale niektóre sprawiają, że niektóre z moich współczynników są nieistotne (tylko te o wartościach P zbliżonych do 0,05 w oryginalnym modelu, które zmieniają się na przykład do 0,06).

  3. Czy powinienem wybrać wyższą liczbę, np. 10 000? Jak mogę ustalić ten limit?

  4. Znowu powinienem w pierwszej kolejności uruchomić? Jeśli wyniki będą się zmieniać za każdym razem, czy mogę polegać na wynikach?

  5. Czy masz jakieś inne pomysły, które mogą mi pomóc w mojej sprawie?

Wielkie dzięki.

Vic
źródło

Odpowiedzi:

21

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.

  1. 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.bootR, na przykład, uwypukla „odchylenie”, które jest różnicą między współczynnikami regresji twojego pojedynczego modelu i średnią próbek bootstrap.
  2. 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.
  3. 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.
  4. 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.

COOLSerdash
źródło
DZIĘKUJEMY za idealną odpowiedź! :) Pozwolę sobie odpowiedzieć w ten sposób: 1. Byłem trochę zaznajomiony z jego pojęciem (że próbuje obliczyć średnią dla 1000 różnych współczynników w 1000 różnych (ponownie próbkowanych) modelach). Dziękujemy za wyjaśnienie, że „stronniczość” jest taka i że takie zmiany się zdarzają i powinniśmy zwiększyć liczbę prób. :) 2. Przez „model bootstrapped” nie miałem na myśli jednego modelu o ponownym próbkowaniu. Miałem jednak na myśli średnią z tych 1000 iteracji. Właściwie uruchomiłem mój model 10 razy, każdy na 1000 iteracji. Mam więc pod ręką 10 modeli bootstrapped.
Vic
Każdy z nich pokazuje „inny” wynik. Chciałbym jednak wypróbować trzy lub cztery modele z ładowaniem początkowym z 10 000 próbkowania, aby sprawdzić, czy liczba iteracji wynosi 10 000, czy różne modele z ładowaniem początkowym (każdy z liczbą 10000) są podobne, czy powinienem zwiększyć to 100 000 jeszcze bardziej?
Vic
@Vic Dziękujemy za komentarz. Nie zrobiłbym 10 bootstrapów, każdy z 1000 iteracjami, ale tylko jeden z, powiedzmy 10'000 lub nawet więcej iteracji (50'000?). To powinno dać ci stabilne szacunki i przedziały ufności.
COOLSerdash
3. Pewnie, że to nie jest problem. Chciałem tylko wiedzieć, na jakiej podstawie należy wybrać ten numer? Myślę, że podstawa może być taka, że ​​jeśli uruchomię dwa bootstrapy po 1000 prób i stwierdzę, że różnią się one, oznacza to, że potrzebuję więcej prób ponownego próbkowania (na przykład 5000 lub 10000).
Vic
4. „Co masz na myśli mówiąc:„ wyniki zmieniają się za każdym razem ”? Kiedy liczba replikacji jest wystarczająco wysoka, bootstrap powinien dawać bardzo podobne przedziały ufności i oszacowania punktowe za każdym razem.”
Vic