目录

MCMC(一)蒙特卡罗方法

MCMC(二)马尔科夫链

MCMC(三)MCMC采样和M-H采样

MCMC(四)Gibbs采样 

 

MCMC采样和M-H采样_html

 

MCMC采样和M-H采样_html_02

 

MCMC采样和M-H采样_马尔科夫链_03

 

MCMC采样和M-H采样_ci_04

 

MCMC采样和M-H采样_ci_05

 

MCMC采样和M-H采样_html_06

 

MCMC采样和M-H采样_马尔科夫链_07

 

其中 %matplotlib inline 的解释见 

import random
import math
from scipy.stats import norm
import matplotlib.pyplot as plt
%matplotlib inline

def norm_dist_prob(theta):
    y = norm.pdf(theta, loc=3, scale=2)
    return y

T = 5000
pi = [0 for i in range(T)]
sigma = 1
t = 0
while t < T-1:
    t = t + 1
    pi_star = norm.rvs(loc=pi[t - 1], scale=sigma, size=1, random_state=None)
    alpha = min(1, (norm_dist_prob(pi_star[0]) / norm_dist_prob(pi[t - 1])))

    u = random.uniform(0, 1)
    if u < alpha:
        pi[t] = pi_star[0]
    else:
        pi[t] = pi[t - 1]


plt.scatter(pi, norm.pdf(pi, loc=3, scale=2))
num_bins = 50
plt.hist(pi, num_bins, normed=1, facecolor='red', alpha=0.7)
plt.show()

MCMC采样和M-H采样_html_08

 

 

MCMC采样和M-H采样_html_09