Chciałbym zautomatyzować wybór wypalania dla łańcucha MCMC, np. Usuwając pierwsze n wierszy na podstawie diagnostyki zbieżności.
W jakim stopniu można bezpiecznie zautomatyzować ten krok? Nawet jeśli nadal dokładnie sprawdzę autokorelację, ślad MCcm i pliki PDF, byłoby miło mieć automatyczny wybór długości wypalenia.
Moje pytanie jest ogólne, ale byłoby wspaniale, gdybyś mógł podać szczegóły postępowania z obiektem R mcmc.ob; Korzystam z pakietów rjags i coda w R.
Odpowiedzi:
Oto jedno podejście do automatyzacji. Informacje zwrotne bardzo mile widziane. Jest to próba zastąpienia wstępnej kontroli wzrokowej obliczeniami, a następnie kolejnej kontroli wzrokowej, zgodnie ze standardową praktyką.
To rozwiązanie zawiera dwa potencjalne rozwiązania, po pierwsze, oblicz wypalenie, aby usunąć długość łańcucha przed osiągnięciem pewnego progu, a następnie użyj matrycy autokorelacyjnej, aby obliczyć przedział przerzedzania.
Obiekt mcmc można pobrać tutaj: jags.out.Rdata
--aktualizacja--
Jak zaimplementowano w R, obliczanie macierzy autokorelacji jest wolniejsze niż byłoby to pożądane (> 15 minut w niektórych przypadkach), w mniejszym stopniu, podobnie jak obliczanie współczynnika kurczenia GR. Jest to kwestia o tym, jak przyspieszyć kroku 4 na stackoverflow tutaj
- aktualizacja część 2--
dodatkowe odpowiedzi:
Nie można zdiagnozować konwergencji, a jedynie zdiagnozować brak konwergencji (Brooks, Giudici i Philippe, 2003)
Funkcja autorun.jags z pakietu runjags automatyzuje obliczanie diagnostyki długości przebiegu i zbieżności. Nie rozpoczyna monitorowania łańcucha, dopóki diagnostyka rubinowa Gelmana nie spadnie poniżej 1,05; oblicza długość łańcucha za pomocą diagnostyki Raftery i Lewis.
Gelman i wsp. (Gelman 2004 Bayesian Data Analysis, s. 295, Gelman i Shirley, 2010 ) twierdzą, że stosują konserwatywne podejście do odrzucania pierwszej połowy łańcucha. Chociaż jest to stosunkowo proste rozwiązanie, w praktyce wystarczy, aby rozwiązać problem z moim konkretnym zestawem modeli i danych.
źródło
autorun.jags
,...
pozwala na przekazanie parametrów doadd.summary
funkcji.add.summary
Funkcja ma argumentpsrf.target
o wartości domyślnej 1,05