Python Gibbs抽样中的忽略样本
上面的python代码是Gibbs采样,下面的一行让我感到困惑Python Gibbs抽样中的忽略样本,python,sampling,mcmc,Python,Sampling,Mcmc,上面的python代码是Gibbs采样,下面的一行让我感到困惑 import random,math def gibbs(N=50000,thin=1000): x=0 y=0 print "Iter x y" for i in range(N): for j in range(thin): x=random.gammavariate(3,1.0/(y*y+4)) y=random.gauss(
import random,math
def gibbs(N=50000,thin=1000):
x=0
y=0
print "Iter x y"
for i in range(N):
for j in range(thin):
x=random.gammavariate(3,1.0/(y*y+4))
y=random.gauss(1.0/(x+1),1.0/math.sqrt(2*x+2))
print i,x,y
gibbs()
额外的内部循环有什么意义 原因似乎是在吉布斯取样中引入了稀释。细化用于减少连续样本之间相关性的影响。Gibbs采样生成样本的马尔可夫链,附近的样本相互关联,而通常的目的是提取独立的样本
要实现这一点,您只能使用每个
M-th
值,而忽略所有中间值。在这种情况下,M
存储在变量thinging
中,您只获取每个thinging
值,然后将其打印在for循环下方。是否重复循环thin
次?(注意,x
和y
都是在正文中读取和分配的)我知道。但动机是什么?
for j in range(thin):