给一个Gibbs采样算法的python代码
时间: 2023-12-22 22:03:55 浏览: 101
以下是一个简单的 Gibbs 采样算法的 Python 代码示例:
```python
import numpy as np
def gibbs_sampling(num_samples, burn_in=1000):
# 初始化采样结果
samples = np.zeros((num_samples, 2))
# 初始状态
x = 0
y = 0
for i in range(num_samples + burn_in):
# 进行 burn-in 阶段,忽略前 burn_in 个样本
if i >= burn_in:
samples[i - burn_in] = [x, y]
# 采样 x
x = np.random.normal(y, 1)
# 采样 y
y = np.random.normal(x, 1)
return samples
# 设定采样次数和 burn-in 阶段长度
num_samples = 1000
burn_in = 100
# 进行 Gibbs 采样
samples = gibbs_sampling(num_samples, burn_in)
# 打印采样结果的前几个样本
print(samples[:10])
```
这段代码实现了一个简单的二维 Gibbs 采样算法。在每一次迭代中,先根据当前 y 的值来采样 x,然后根据新采样的 x 的值来采样 y。在 burn-in 阶段之后,开始记录采样结果。最后,打印出前几个采样得到的样本。
请注意,这只是一个简单的示例代码,实际应用中需要根据具体问题进行适当的修改和调整。
阅读全文