我正在测试PyMC中的 AdaptativeMetropolis
步骤方法(记录为here),并希望看到它的实际效果 . 这种步骤方法包括使用多变量跳跃分布来块更新一些变量,其在采样期间调整协方差 .
可以打印提议协方差矩阵与时间?在我看来,这没有记录 .
谢谢 .
编辑:作为一个玩具模型,让我们考虑两个相似骰子的情况(让我们说它们来自同一个工厂) . 我们希望估计它们是否有偏见 .
import pymc
n = 100
alpha = pymc.Gamma('alpha', alpha=1, beta=1)
P1 = pymc.Beta('p1', alpha=alpha, beta=2)
P2 = pymc.Beta('p2', alpha=alpha, beta=2)
Y1 = pymc.Binomial('y1', n=n, p=P1, value=70, observed=True)
Y2 = pymc.Binomial('y2', n=n, p=P2, value=50, observed=True)
model = pymc.Model([alpha, P1, P2, Y1, Y2])
MC = pymc.MCMC(model)
MC.use_step_method(pymc.AdaptiveMetropolis, [P1, P2])
我现在期望/猜测 P1
和 P2
被设置为使用具有自适应协方差的正常双变量提议进行采样 . 我该如何监控?抽样是在打电话后完成的
MC.sample(iter=11000, burn=10000)
1 回答
挖掘source code,我发现可以调整详细程度来打印协方差矩阵:
因此,它应该足够了:
最终的相关矩阵也存储在
MC.get_state()['step_methods']['AdaptiveMetropolis_p1_p2']['proposal_sd']
中 . 这可用于在采样后计算协方差矩阵(np.dot(corr, corr.T)
) .