【发布时间】:2020-07-16 11:51:34
【问题描述】:
我正在尝试使用 pymc3 和 arviz 获得 2D mcmc 链的有效样本大小
import pymc3 as pm3
!pip install arviz
import arviz as az
ess = az.ess(samples)
上面的代码适用于 1D,但不适用于 2D,我看到有一个 az.convert_to_dataset 可能会有所帮助,但我不知道如何使用它?
样本将是一个 N x 2 数组,它应该只给出一个数字作为输出
谢谢!
【问题讨论】:
-
“它应该给出一个数字”:你确定吗? ESS 是特定于参数的。对于同一 MCMC 样本链中的不同模型参数,ESS 可能(非常)不同。
-
啊,好吧,所以我想要每个参数有一个数字,我可以在样本数组的相关部分进行工作 1D ess - ace,谢谢!
-
@Lizardinablizzard 假设您有
N从 2 个参数中提取,您可以在维度前添加[None, ...]或np.expand_dims以符合我在下面解释的约定 -
另外,切向相关的问题,您是否使用 PyMC3 生成样本?如果是这样,你试过
arviz.from_pymc3吗? -
我已经编写了自己的 mcmc 采样器,然后我将接受的 2D 采样点作为大小为 N x 2 的输出,所以也许我需要扩展 dims?