Załóżmy, że mam funkcję , którą chcę zintegrować Oczywiście przy założeniu, że osiąga zero w punktach końcowych, brak wybuchów, fajna funkcja. Jednym ze sposobów, w jakie się bawiłem, jest użycie algorytmu Metropolis-Hastings do wygenerowania listy próbek z rozkładu proporcjonalnego do , w którym brakuje stałej normalizacyjnej który , a następnie obliczenia niektórych statystyk na tych :
Ponieważ , mogę podstawić aby anulować g z całki, co powoduje wyrażenie postaci \ frac {1} {N} \ int _ {- \ infty} ^ {\ infty} \ frac {U (x)} {g (x)} g (x) dx = \ frac {1} {N} \ int _ {- \ infty} ^ \ infty U (x) dx. Więc pod warunkiem, że U (x) integruje się z 1 wzdłuż tego regionu, powinienem uzyskać wynik 1 / N , który mógłbym wziąć na zasadzie wzajemności, aby uzyskać odpowiedź, której chcę. Dlatego mógłbym wziąć zakres mojej próbki (aby najskuteczniej wykorzystać punkty) r = x_ \ max - x_ \ min i pozwolić U (x) = 1 / r dla każdej narysowanej próbki. W ten sposób U (x)
Próbowałem to przetestować w R dla przykładowej funkcji . W tym przypadku nie używam Metropolis-Hastings do generowania próbek, ale używam rzeczywistych prawdopodobieństw rnorm
do generowania próbek (tylko do testowania). Nie do końca otrzymuję wyniki, których szukam. Zasadniczo pełne wyrażenie tego, co bym obliczał, to:
ys = rnorm(1000000, 0, 1/sqrt(2))
r = max(ys) - min(ys)
sum(sapply(ys, function(x) 1/( r * exp(-x^2))))/length(ys)
## evaluates to 0.6019741. 1/sqrt(pi) = 0.5641896
Edycja dla CliffAB
Powodem, dla którego używam zakresu jest po prostu łatwe zdefiniowanie funkcji, która nie jest zerowa w regionie, w którym znajdują się moje punkty, ale która integruje się z w zakresie . Pełna specyfikacja funkcji jest następująca: Nie musiałem używać jako tej jednolitej gęstości. Mógłbym użyć innej gęstości zintegrowanej z , na przykład gęstości prawdopodobieństwa Sprawiłoby to jednak, że sumowanie poszczególnych próbek byłoby banalne, tzn [ - ∞ , ∞ ] U ( x ) = { 1U(x)1P(x)=1
Mógłbym wypróbować tę technikę dla innych dystrybucji, które integrują się z . Chciałbym jednak nadal wiedzieć, dlaczego nie działa w przypadku równomiernej dystrybucji.
Odpowiedzi:
Jest to najciekawsze pytanie, które dotyczy zagadnienia przybliżenia stałej normalizującej gęstości na podstawie wyjścia MCMC z tej samej gęstości . (Uwaga boczna jest taka, że poprawnym założeniem jest to, że jest liczbą całkowitą, zejście do zera w nieskończoności nie jest wystarczające.)g g g
Moim zdaniem najbardziej odpowiedni wpis na ten temat w odniesieniu do twojej sugestii to artykuł Gelfanda i Deya (1994, JRSS B ), w którym autorzy opracowali bardzo podobne podejście do znalezienia przy generowaniu z . Jednym z rezultatów tego artykułu jest to, że dla dowolnej gęstości prawdopodobieństwa [jest to równoważne twojej ], tak że następująca tożsamość pokazuje, że próbka z może wytworzyć
Twój pomysł użycia zakresu próbki i jednolitości w tym zakresie jest związany ze średnią średnią harmoniczną: estymator nie ma wariancji choćby dlatego, że z powodu pojawiający się w liczniku (podejrzewam, że zawsze może tak być w przypadku nieograniczonego wsparcia!), a zatem bardzo powoli zbliża się do stałej normalizującej. Na przykład, jeśli ponownie uruchomisz kod kilka razy, otrzymasz bardzo różne wartości liczbowe po 10 different iteracjach. Oznacza to, że nie możesz nawet ufać wielkości odpowiedzi.(min(xi),max(xi)) exp{x2}
Ogólną poprawką tego nieskończonego problemu wariancji jest użycie dla bardziej skoncentrowanej gęstości, przy użyciu na przykład kwartyli z próbki , ponieważ następnie pozostaje niższy w tym przedziale.α (q.25(xi),q.75(xi)) g
Podczas dostosowywania kodu do tej nowej gęstości przybliżenie jest znacznie bliższe :1/π−−√
Omawiamy tę metodę szczegółowo w dwóch artykułach z Darrenem Wraithem i Jean-Michelem Marinem .
źródło