问题标签 [arviz]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
532 浏览

python - Google colab 存在一些与贝叶斯分析和相应库相关的问题

我正在研究这本书贝叶斯分析与python并尝试在python中实现所有代码,为此我使用google colab,但是当我运行书中的以下代码时

它给出了这样的错误:

在我尝试实现这些库之前

但仍然没有成功。如何修复此错误?

0 投票
1 回答
451 浏览

python - 使用 arviz 和 pymc3 mcmc 的有效样本大小二维数组

我正在尝试使用 pymc3 和 arviz 获得 2D mcmc 链的有效样本大小

上面的代码适用于 1D,但不适用于 2D,我看到有一个 az.convert_to_dataset 可能会有所帮助,但我不知道如何使用它?

样本将是一个 N x 2 数组,它应该只给出一个数字作为输出

谢谢!

0 投票
1 回答
451 浏览

python - Arviz 和 Bokeh:尝试使用后端 kwargs 更改情节的标题

我正在尝试更改我正在使用 Arviz 创建的情节的标题。通常我已经使用了,backend_kwargs但它似乎不适用于某些情节:在这种情况下plot_density

这是我正在使用的代码:

它识别出高度的变化,kwargs所以它不像没有注意到它们在那里。

我也尝试过其他变体,例如plot_title=它会产生一个错误,指定它需要title=

0 投票
1 回答
222 浏览

python - PyMC3 - 煤矿灾难示例 - 问题回复:添加第二个矿井

我正在玩 PyMC3,试图在 PyMC3 文档中适应采矿灾难切换点模型的修改版本。假设您有两个煤矿(mine1 和 mine2),每个煤矿在相同的年份范围内具有相似的灾难计数。

然而,mine1 在实施降低灾难次数的安全程序变更方面晚了 5 年:

2 个矿井的地块、总和与单独的采矿灾难

我有兴趣测试更好的模型拟合是否来自对年度计数求和并将单个切换点拟合到这个总计数时间序列,或者将单独的模型拟合到两个矿山。

模型 1 - 跨矿总和的单一模型

Yields 与文档示例非常相似。这是跟踪图:

后验 - 模型 1

在拟合使矿井分开的模型时,我尝试了两种由于不同原因都不是最佳的方法。第一个是拟合两个数据的可能性,分别为每个地雷。

模型 2a - 单独的地雷,两种可能性

很好看很合身

合身看起来不错,似乎对开关点的差异很敏感。但是,我无法计算 WAIC 或 LOO 值,这意味着我无法比较模型 1 的拟合度。我猜是因为有两组观察结果?

例如

第二个想法是使用与分层线性回归示例类似的方法,并在先验上使用串联、索引和形状输出的组合,以拟合每个参数的向量和单个数据似然度。

模型 2b - 单独索引的地雷,单一似然函数

该模型适合并允许计算 WAIC。但是从后面看,它不适合切换点。

后部

总而言之,有没有办法以允许计算 WAIC 的方式拟合 Model2a,或者是否可以对 Model2b 进行任何更改以使其更适合后验?

非常感谢您的帮助。

0 投票
2 回答
785 浏览

python - 使用 pymc3 绘制伽马分布拟合图

假设我使用 pymc3 为伽马分布生成一些样本数据:

在此处输入图像描述

现在,我将创建一个模型来拟合该数据的伽马分布:

这将正确获得创建原始假数据的值和分布。现在,我想绘制 pdf(但我不知道该怎么做!)。我看到了一个这样做的例子:

它创建了一个矩阵,其中包含来自估计的 pdf 的样本。我用以下方法绘制结果:

这使:

在此处输入图像描述

这不是我要找的。相反,我想从 alpha 和 beta 的后验中采样以绘制许多 gamma pdf。我可以通过采样和绘制线条来做到这一点,但我认为这必须是已经用 pymc3 或 arviz 实现的东西,但我只是不知道。如果你能告诉我如何绘制我想要的东西,请提前感谢。

0 投票
0 回答
130 浏览

python - 从 az.plot_ppc 观察到的曲线与实际数据的 kde 图不匹配

我正在对我认为是伽马分布的数据进行建模,因此我编写了一个 PyMC3 模型,如下所示。

然后我绘制一个后验预测检查

但观察到的曲线与我的预期不符。有什么我做错了吗?

观测数据的 KDE 图

PPC 图

0 投票
1 回答
43 浏览

python - 从数据集python中获取数字

我有一个数据集,我们称它为 A,当我打印时它看起来像这样:

但现在我想提取 158.0 和 725.2 并将它们保存在一个单独的数组中,但我不知道如何获取这些值。我试过 Ax、A.get() 等。谢谢!

0 投票
1 回答
159 浏览

python - Old PyMC3 style grouping traceplot plotted with Arviz

I have an old blogpost where I am training a PyMC3 model. You can find the blogpost here but the gist of the model is shown below.

In this dataset I'm estimating the effect of Diet on the weight of chickens. This is what the traceplot looks like.

traceplot

Look at how pretty it is! Each diet has its own line! Beautiful!

Arviz Changes

This traceplot was made using the older PyMC3 API. Nowadays this functionality has moved to arviz. So tried redo-ing this work but ... the plot looks very different.

enter image description here

The code that I'm using here is slightly different. I'm using pm.Data now but I doubt that's supposed to cause this difference.

What do I need to do to get the different colors per DIET back in?

0 投票
1 回答
207 浏览

python - pymc3 是否与 scikit-learn 中的 predict 方法等效?

我正在学习使用 PyMC3 的 Statistical Rethinking 课程。在第 4 章结束时,他们要求原始 (!Kung) 数据集中没有的数据点的单个值的 HDI。可以在 PyMC3 中做到这一点吗?

在 scikit-learn 中,您拥有fit()predict(),并且您能够预测全新输入的输出。

使用 PyMC3,您sample()可以获得跟踪,并且可以要求进行后验预测检查,但我无法将任何参数传递给我感兴趣的值。我确实设法以迂回的方式做到了使用共享 theano 变量,也可以手动使用。

编辑:我在最后添加了一个pm.Data()示例pm.set_data()。我认为这可能是答案,但在将其标记为已回答之前,我正在等待其他人确认。


这就是我所做的。

weight_s是标准化的重量数据。标准化是通过这个函数完成的:

这是 PyMC3 模型:

这是数据的样子(注意 HDI 是 89%):

数据的形状

首先,我将向您展示手动版本:

这给了我们:

如果您查看图表,这些数字是有意义的。

现在为共享变量。我们可以这样修改模型:

现在,对于 shared_weights 的新值,我们有三个选择:

  • 一件一件地做事
  • 替换为未知权重
  • 追加到最后

对于一对一的情况:

为他们所有人做这件事给了我们:

您可以一次完成所有操作:

这给了我们:

最后,我们可以将它添加到之前共享权重变量的末尾并取尾部:

这给了我们:


如您所见,所有这些方法最终都会给出相同的结果。有没有官方/最好的方法?可以不设置全局共享变量并修改它吗?PyMC3有这样的功能吗,还是以后可能会添加的东西?(如果足够简单,我也许可以为此提出拉取请求;我还是 PyMC3 的新手。)


编辑:我想我找到了答案:使用pm.Data().

然后,在尝试时,我们pm.set_data()

这使:

0 投票
1 回答
167 浏览

python - 对于 pymc3 的命令 pm.plot_posterior

通常,我发现我们使用了pm.binomial()等等。并使用 pm.plot_posterior 我们得到离散图,我的问题是为什么我必须得到的图是曲线?有人可以启发我吗?

我想得到:

在此处输入图像描述

但我得到了图表:

在此处输入图像描述