Zrozumienie MCMC i algorytmu Metropolis-Hastings

13

W ciągu ostatnich kilku dni starałem się zrozumieć, jak działa Markov Chain Monte Carlo (MCMC). W szczególności starałem się zrozumieć i wdrożyć algorytm Metropolis-Hastings. Do tej pory myślę, że mam ogólne zrozumienie algorytmu, ale jest kilka rzeczy, które nie są dla mnie jeszcze jasne. Chcę użyć MCMC, aby dopasować niektóre modele do danych. Z tego powodu opiszę moje rozumienie algorytmu Metropolis-Hastings do dopasowywania linii prostej do niektórych obserwowanych danych :f(x)=axD

1) dokonanie wstępnego odgadnięcia . Ustaw to jako nasz bieżący ( ). Dodaj na końcu łańcucha Markowa ( ).aaaa0aC

2) Powtórz kroki poniżej kilka razy.

3) oceny aktualnego prawdopodobieństwa ( ) zawartych i .L0a0D

4) Zaproponuj nowy ( ), próbkując z rozkładu normalnego za pomocą i . Na razie rozmiar jest stały.aa1μ=a0σ=stepsizestepsize

5) ocena prawdopodobieństwa nowego ( ) zawartych i .L1a1D

6) Jeśli jest większy niż , zaakceptuj jako nowy , dołącz go na końcu i przejdź do kroku 2.L1L0a1a0C

7) Jeśli jest mniejszy niż wygeneruj liczbę ( ) w zakresie [0,1] z rozkładu równomiernegoL1L0U

8) Jeśli jest mniejsze niż różnica między dwoma prawdopodobieństwami ( - ), zaakceptuj jako nowy , dołącz go na końcu i przejdź do kroku 2.UL1L0a1a0C

9) Jeśli jest większe niż różnica między dwoma prawdopodobieństwami ( - ), na końcu , używaj tego samego , przejdź do kroku 2.UL1L0a0Ca0

10) Koniec powtórzenia.

11) Usuń niektóre elementy z początku (faza wypalenia).C

12) Teraz wziąć średnią z wartości w . Ta średnia jest szacowana .Ca

Teraz mam pytania dotyczące powyższych kroków:

  • Jak skonstruować funkcję prawdopodobieństwa dla ale także dla dowolnej funkcji dowolnej?f(x)=ax
  • Czy to poprawna implementacja algorytmu Metropolis-Hastings?
  • W jaki sposób wybór metody generowania liczb losowych w kroku 7 może zmienić wyniki?
  • Jak zmieni się ten algorytm, jeśli mam wiele parametrów modelu? Na przykład, gdybym miał model .f(x)=ax+b

Uwagi / Kredyty: Główna struktura algorytmu opisanego powyżej oparta jest na kodzie z warsztatu Python MPIA.

AstrOne
źródło

Odpowiedzi:

11

Wydaje się, że istnieją pewne nieporozumienia na temat tego, co algorytm Metropolis-Hastings (MH) znajduje się w jego opisie.

Przede wszystkim należy zrozumieć, że MH jest algorytmem próbkowania. Jak stwierdzono w wikipedii

W statystyce i fizyce statystycznej algorytm Metropolis – Hastings to metoda Markowa z łańcuchem Monte Carlo (MCMC) do uzyskiwania sekwencji losowych próbek z rozkładu prawdopodobieństwa, dla którego bezpośrednie próbkowanie jest trudne.

Aby zaimplementować algorytm MH, potrzebujesz gęstości propozycji lub dystrybucji skokowej , z której łatwo jest próbkować. Jeśli chcesz próbkować z dystrybucji , algorytm MH można zaimplementować w następujący sposób:Q(|)f()

  1. Wybierz początkowy stan losowy .x0
  2. Wygeneruj kandydata z .xQ(|x0)
  3. Oblicz stosunek .α=f(x)/f(x0)
  4. Zaakceptuj jako realizację z prawdopodobieństwem .xfα
  5. Weź jako nowy stan początkowy i kontynuuj próbkowanie, aż uzyskasz pożądany rozmiar próbki.x

Po uzyskaniu próbki trzeba jeszcze nagrać go i cienkie to: zważywszy, że próbnik działa asymptotycznie, trzeba usunąć pierwszy próbek (burn-in), a biorąc pod uwagę, że próbki są zależne trzeba podpróba każdy iteracji (rębnia).Nk

Przykład w R można znaleźć w następującym linku:

http://www.mas.ncl.ac.uk/~ndjw1/teaching/sim/metrop/metrop.html

Ta metoda jest w dużej mierze stosowana w statystyce bayesowskiej do próbkowania z tylnego rozkładu parametrów modelu.

Przykład, którego używasz, wydaje mi się niejasny, biorąc pod uwagę, że nie jest gęstością, chyba że ograniczysz na ograniczonym zbiorze. Mam wrażenie, że jesteś zainteresowany dopasowaniem linii prostej do zestawu punktów, dla których polecam sprawdzenie zastosowania algorytmu Metropolis-Hastings w kontekście regresji liniowej. Poniższy link przedstawia kilka pomysłów na temat użycia MH w tym kontekście (przykład 6.8):f(x)=axx

Robert i Casella (2010), Przedstawiamy metody Monte Carlo z R. Ch. 6, „Algorytmy Metropolis – Hastings”

Na tej stronie jest również wiele pytań, wraz ze wskazówkami do interesujących odniesień, na temat znaczenia funkcji prawdopodobieństwa.

Innym wskaźnikiem możliwego zainteresowania jest pakiet R mcmc, który implementuje algorytm MH z propozycjami Gaussa w poleceniu metrop().

Habano
źródło
Cześć mój przyjacielu. Tak, patrzę na MH w kontekście regresji liniowej. Adres URL, który mi podałeś, wyjaśnia wszystko naprawdę fajnie. Dziękuję Ci. Jeśli pojawię się z innym pytaniem dotyczącym MH, ponownie zadam pytanie. Dzięki jeszcze raz.
AstrOne 27.04.13