지난 며칠 동안 나는 Markov Chain Monte Carlo (MCMC)의 작동 방식을 이해하려고 노력해 왔습니다. 특히 Metropolis-Hastings 알고리즘을 이해하고 구현하려고 노력했습니다. 지금까지 나는 알고리즘에 대한 전반적인 이해가 있다고 생각하지만 아직 명확하지 않은 몇 가지가 있습니다. MCMC를 사용하여 일부 모델을 데이터에 맞추고 싶습니다. 이 때문에 나는 관측 된 데이터 직선 를 맞추기위한 Metropolis-Hastings 알고리즘에 대한 나의 이해를 설명 할 것이다 .
1)에 대한 초기 추측을 . 이것을 를 현재 ( ) 로 설정하십시오 . 또한 추가 마르코프 체인 (의 끝 부분에 ).
2) 아래 단계를 여러 번 반복하십시오.
3) 과 주어진 현재 가능성 ( )을 평가 합니다.
4) 및 로 정규 분포에서 샘플링 하여 새로운 ( )를 제안합니다 . 현재는 가 일정합니다.
5) 과 주어지면 새로운 가능성 ( )을 평가하십시오 .
6) 이 보다 큰 경우 을 새 으로 수락 하고 끝에 추가하고 2 단계로 이동하십시오.
7) 이 보다 작은 경우 균일 분포에서 [0,1] 범위 의 숫자 ( )를 생성하십시오.
8) 가 두 가능성 ( - ) 의 차이보다 작은 경우 을 새 으로 수락 하고 끝에 추가하고 2 단계로 이동하십시오.
9) 가 두 가능성 ( - ) 의 차이보다 큰 경우 끝에 을 추가 하고 동일한 계속 사용하고 2 단계로 이동하십시오.
10) 반복 종료.
11) 의 시작 부분에서 일부 요소를 제거합니다 (번인 단계).
12) 이제 의 평균값을 취하십시오 . 이 평균은 추정치 .
이제 위의 단계와 관련하여 몇 가지 질문이 있습니다.
- 와 임의의 함수에 대한 우도 함수를 어떻게 구성 합니까?
- 이것이 Metropolis-Hastings 알고리즘의 올바른 구현입니까?
- 7 단계에서 난수 생성 방법을 선택하면 결과가 어떻게 달라질 수 있습니까?
- 모델 매개 변수가 여러 개인 경우이 알고리즘은 어떻게 변경됩니까? 예를 들어, 모델이 있다면 .
참고 / 크레딧 : 위에서 설명한 알고리즘의 주요 구조는 MPIA Python Workshop의 코드를 기반으로합니다.