考虑抽样问题使用 Metropolis 或 Metropolis-Hastings (MH) 算法。我可以提出样品直接,或者我可以做一个被阻止的版本,并交替提出样本和,我相信它也被称为Metropolis-within-Gibbs。
我试图更好地理解后者在哪些条件下会更有效(在统计意义上;让我们暂时忽略计算考虑)。
例如,在(阻塞)吉布斯抽样中,接受概率始终为 1,直接从,因为我们已经在第一步中获得了一个完美的样本,而对条件进行采样可能需要对变量进行多次迭代才能获得一个好的样本。
但是,如果我有一个不太完美的提案分布并且只有弱依赖关系和,那么情况可能会有所不同。直觉上,如果我试图同时拒绝/接受它们,那么它们都必须是好的建议,这样我才能接受它们。所以接受提议可能是有意义的并拒绝提议的.
我做了一个小实验,我假设是高斯分布和建议分布也是高斯的。然后我要么尝试一次(联合)要么独立地接受这两个样本。下图中不同的线代表不同的proposal分布方差。独立接受它们似乎更有效。
我想用一些理论来支持我的直觉和数值实验。您将如何证明一种抽样策略比另一种更有效?指向讨论此问题的一些参考资料的指针将不胜感激。谢谢!
这是创建图形的代码的基本部分(这里X
的Y
意思不是和)。
### JOINT ACCEPT/REJECT
X = randn(dim, num_samples)
for i in range(1, num_samples):
# propose step
X[:, i] = X[:, i - 1] + sigma * X[:, i]
# accept/reject step
if rand() > exp(0.5 * (sum(square(X[:, i - 1]), 0) - sum(square(X[:, i]), 0))):
X[:, i] = X[:, i - 1]
### INDEPENDENT ACCEPT/REJECT
Y = randn(dim, num_samples)
for i in range(1, num_samples):
# propose steps
Y[:, i] = Y[:, i - 1] + sigma * Y[:, i]
# accept/reject steps
for j in range(dim):
if rand() > exp(0.5 * (square(Y[j, i - 1]) - square(Y[j, i]))):
Y[j, i] = Y[j, i - 1]