随机游走算法解决MCMC问题的代码
时间: 2024-05-04 12:19:06 浏览: 205
下面是一个简单的随机游走算法的代码示例,用于解决MCMC问题:
```
import random
# 初始化参数
num_steps = 1000 # 迭代次数
x_0 = 0.5 # 初始状态
delta = 0.1 # 步长
mu = 0 # 均值
sigma = 1 # 标准差
# 定义目标分布函数(高斯分布)
def target_distribution(x):
return 1/(sigma * (2 * math.pi)**0.5) * math.exp(-0.5 * ((x - mu)/sigma)**2)
# 定义随机游走函数
def random_walk(x, delta):
return x + random.uniform(-delta, delta)
# 迭代过程
x = x_0
samples = []
for i in range(num_steps):
x_new = random_walk(x, delta)
alpha = min(1, target_distribution(x_new) / target_distribution(x))
if random.random() < alpha:
x = x_new
samples.append(x)
# 输出结果
print("Mean of samples:", sum(samples) / len(samples))
print("Variance of samples:", sum([(x - mu)**2 for x in samples]) / len(samples))
```
在这个例子中,我们使用随机游走算法来从高斯分布中生成样本。迭代过程中,我们使用Metropolis-Hastings接受拒绝准则来决定是否接受新的状态$x_{new}$。最终,我们得到了一些样本,可以用来估计高斯分布的均值和方差。
阅读全文