mcmc采样python代码
时间: 2023-07-02 12:21:09 浏览: 139
MCMC(Markov Chain Monte Carlo)是一种常见的概率分布采样方法,可以用Python编写实现。以下是一个简单的MCMC采样的Python代码示例:
```python
import numpy as np
# 定义目标分布函数
def target_distribution(x):
return np.exp(-x**2) + np.exp(-(x-3)**2/3)
# 定义MCMC采样函数
def mcmc_sampling(target_distribution, proposal_distribution, n_samples, initial_value):
samples = np.zeros(n_samples)
current_value = initial_value
for i in range(n_samples):
# 从建议分布中采样一个样本
proposal = proposal_distribution(current_value)
# 计算接受率
acceptance_prob = min(1, target_distribution(proposal) / target_distribution(current_value))
# 生成一个0-1之间的随机数
accept = np.random.uniform() < acceptance_prob
if accept:
samples[i] = proposal
current_value = proposal
else:
samples[i] = current_value
return samples
# 定义建议分布函数
def proposal_distribution(x):
return np.random.normal(x, 1)
# 进行MCMC采样
samples = mcmc_sampling(target_distribution, proposal_distribution, 10000, 0)
# 输出采样结果
print("Mean: ", np.mean(samples))
print("Variance: ", np.var(samples))
```
在上面的代码中,我们定义了目标分布函数 `target_distribution`,建议分布函数 `proposal_distribution` 和 MCMC采样函数 `mcmc_sampling`。我们使用正态分布作为建议分布,进行10000次采样,并输出采样结果的均值和方差。
阅读全文