我正在 pymc3 中进行一些贝叶斯建模,并想使用plot_posterior(来自 arviz 包)绘制后验分布。生成的图在水平轴上尴尬地未对齐,我想将其移动到 -3 和 +3 之间精确绘制。不幸的是,我无法弄清楚应该传递给函数的内容来指定这一点。
arviz.plot_posterior 的文档指定参数“coords”具有定义“要绘制的 var_names 的坐标。传递给 Dataset.sel”大概这是我需要指定水平轴范围的内容,但它没有告诉我它期望什么样的价值。
我检查了 Dataset.sel 的文档,它指出它期望的第一个参数是“一个字典,其键与标量、切片或刻度标签数组给出的维度和值匹配”。我对此的解释是,键是与变量名称匹配的字符串,值是刻度线的一些可迭代结构。
我的变量称为“m”,是由以下代码生成的:
with pymc3.Model() as m1:
m = pymc3.Normal('m', mu = 0, sigma = 1)
obs = pymc3.Normal('obs', mu = m, sigma = 1, observed = numpy.random.randn(3))
trace = pymc3.sample(1000, tune = 500, cores = 1)
我对plot_posterior的期望是这样的:
plot_posterior(trace, coords = {'m': [-3.0, -2,0, -1,0, 0.0, 1.0, 2.0, 3.0]})
它给了我错误“ValueError:维度或多索引级别 ['m'] 不存在”
想必我走在正确的轨道上,但我无法挖掘出该函数需要的参数的任何更精确的定义。感谢您的任何帮助,您可以提供。
编辑:我已经弄清楚如何扩展轴本身(技巧是 ax = mpl.pyplot.axes(xlim = (-3.0, 3.0))),但我仍然不知道如何扩展变量的绘图本身。