我需要使用TensorFlow概率来实现马尔可夫链蒙特卡罗的抽样从伯努利分布。然而,我的尝试显示出的结果与我期望的伯努利分布不一致。
我修改了tfp.mcmc.sample_chain (从对角方差高斯抽样) 的文档中给出的示例,以从Bernoulli分布中提取。由于Bernoulli分布是离散的,所以我使用了RandomWalkMetropolis过渡核,而不是哈密顿蒙特卡罗核,因为它计算梯度,所以我认为它不会工作。
以下是代码:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import t
我在蒙特卡罗课程做作业,我被要求找到一个马尔可夫链的矩阵,它有6个状态,即0,1,2,3,4,5,这样,经过足够长的时间,我们在每一个状态中都与数字5,10,5,10,25,60成正比。
我看到,如果我们有转移矩阵,这就是我们得到的平稳向量。我不得不使用大都会算法,但是我发现的所有解释和例子都是基于大都会- have算法的。
我所拥有的算法的伪码:
select x
Loop over repetitions t=1,2...
select y from Nx using density Gx
put h=min(1, f(y)/f(x))
if U ~ U(0, 1) < h