MCMC 및 Metropolis-Hastings 알고리즘 이해


13

지난 며칠 동안 나는 Markov Chain Monte Carlo (MCMC)의 작동 방식을 이해하려고 노력해 왔습니다. 특히 Metropolis-Hastings 알고리즘을 이해하고 구현하려고 노력했습니다. 지금까지 나는 알고리즘에 대한 전반적인 이해가 있다고 생각하지만 아직 명확하지 않은 몇 가지가 있습니다. MCMC를 사용하여 일부 모델을 데이터에 맞추고 싶습니다. 이 때문에 나는 관측 된 데이터 직선 를 맞추기위한 Metropolis-Hastings 알고리즘에 대한 나의 이해를 설명 할 것이다 .f(x)=axD

1)에 대한 초기 추측을 . 이것을 를 현재 ( ) 로 설정하십시오 . 또한 추가 마르코프 체인 (의 끝 부분에 ).aaaa0aC

2) 아래 단계를 여러 번 반복하십시오.

3) 과 주어진 현재 가능성 ( )을 평가 합니다.L0a0D

4) 및 로 정규 분포에서 샘플링 하여 새로운 ( )를 제안합니다 . 현재는 가 일정합니다.aa1μ=a0σ=stepsizestepsize

5) 과 주어지면 새로운 가능성 ( )을 평가하십시오 .L1a1D

6) 이 보다 큰 경우 을 새 으로 수락 하고 끝에 추가하고 2 단계로 이동하십시오.L1L0a1a0C

7) 이 보다 작은 경우 균일 분포에서 [0,1] 범위 의 숫자 ( )를 생성하십시오.L1L0U

8) 가 두 가능성 ( - ) 의 차이보다 작은 경우 을 새 으로 수락 하고 끝에 추가하고 2 단계로 이동하십시오.UL1L0a1a0C

9) 가 두 가능성 ( - ) 의 차이보다 큰 경우 끝에 을 추가 하고 동일한 계속 사용하고 2 단계로 이동하십시오.UL1L0a0Ca0

10) 반복 종료.

11) 의 시작 부분에서 일부 요소를 제거합니다 (번인 단계).C

12) 이제 의 평균값을 취하십시오 . 이 평균은 추정치 .Ca

이제 위의 단계와 관련하여 몇 가지 질문이 있습니다.

  • 와 임의의 함수에 대한 우도 함수를 어떻게 구성 합니까?f(x)=ax
  • 이것이 Metropolis-Hastings 알고리즘의 올바른 구현입니까?
  • 7 단계에서 난수 생성 방법을 선택하면 결과가 어떻게 달라질 수 있습니까?
  • 모델 매개 변수가 여러 개인 경우이 알고리즘은 어떻게 변경됩니까? 예를 들어, 모델이 있다면 .f(x)=ax+b

참고 / 크레딧 : 위에서 설명한 알고리즘의 주요 구조는 MPIA Python Workshop의 코드를 기반으로합니다.

답변:


11

알고리즘 설명에 Metropolis-Hastings (MH) 알고리즘이 무엇인지에 대한 오해가있는 것 같습니다.

우선, MH가 샘플링 알고리즘이라는 것을 이해해야합니다. Wikipedia에 명시된 바와 같이

통계 및 통계 물리학에서 Metropolis-Hastings 알고리즘은 직접 샘플링이 어려운 확률 분포에서 무작위 샘플 시퀀스를 얻는 Markov chain Monte Carlo (MCMC) 방법입니다.

MH 알고리즘을 구현하려면 샘플링 밀도 가 높은 제안 밀도 또는 점프 분포 가 필요합니다. 분포 에서 샘플링 하려면 MH 알고리즘을 다음과 같이 구현할 수 있습니다.Q(|)f()

  1. 초기 랜덤 상태 선택합니다 .x0
  2. 에서 후보를 생성하십시오 .xQ(|x0)
  3. 비율을 계산하십시오 .α=f(x)/f(x0)
  4. 수락 의 실현 등 확률 .xfα
  5. 가져 새로운 초기 상태로하고 원하는 샘플 크기를 얻을 때까지 샘플링을 계속한다.x

샘플을 일단 당신이 아직도 필요가 점화 를하고 얇은 이 : 샘플러가 점근 적으로 작동 주어진 첫 번째 제거 할 필요가 샘플을 (번인) 및 샘플 의존 주어진 각 표본 필요가 반복을 (박사).Nk

R의 예는 다음 링크에서 찾을 수 있습니다.

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

이 방법은 모형 모수의 사후 분포에서 샘플링하기 위해 베이지안 통계에 주로 사용됩니다.

가 경계 세트에서 를 제한하지 않는 한 밀도가 아니라는 점을 감안할 때 사용중인 예가 명확하지 않은 것 같습니다 . 내 인상은 선형 회귀의 맥락에서 Metropolis-Hastings 알고리즘의 사용을 확인하도록 권장하는 일련의 점에 직선을 맞추는 데 관심이 있다는 것입니다. 다음 링크는이 맥락에서 MH를 어떻게 사용할 수 있는지에 대한 아이디어를 제공합니다 (예 6.8).f(x)=axx

Robert & Casella (2010), R을 사용하여 Monte Carlo Methods 소개 , Ch. 6, "메트로폴리스 – 헤이스팅스 알고리즘"

이 사이트에는 우도 함수의 의미에 대해 논의하는 흥미로운 참고 자료에 대한 포인터와 함께 많은 질문이 있습니다.

또 다른 관심있는 포인터 mcmc는 명령에 가우시안 제안과 함께 MH 알고리즘을 구현하는 R 패키지 metrop()입니다.


안녕 내 친구. 예, 선형 회귀와 관련하여 MH를 조사하고 있습니다. 당신이 나에게 준 URL은 모든 것이 정말 훌륭하다는 것을 설명합니다. 감사합니다. MH와 관련된 다른 질문이 있으면 다시 질문을 게시 할 것입니다. 다시 감사합니다.
AstrOne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.