问题标签 [stan]

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 回答
238 浏览

r - openCPU 和 rstan - 无法打开连接

我正在使用 openCPU 创建一个 API 来估计 rstan 中非常基本的模型。

我已经验证,当从普通的 R 控制台会话调用时,我的函数在我的环境中工作,而不是从 openCPU 调用。

但是通过openCPU调用时,响应如下:

通过在 rstan 的源代码中插入检查点,我将其追溯到 R/cxxfunplus.R 中的一个调用(此处链接到 github 上的行):

此调用中的什么试图读取可能失败的连接?

0 投票
2 回答
822 浏览

r - 当观察到的节点是潜在节点的最大值时使用 JAGS 或 STAN

我有以下潜变量模型: Person j 有两个潜变量 X j1和 X j2。我们唯一能观察到的是它们的最大值,Y j = max(X j1 , X j2 )。潜变量是二元正态的;它们每个都有均值 mu、方差 sigma 2,并且它们的相关性是 rho。我想仅使用 Y j估计三个参数(mu、sigma 2、rho),数据来自 n 个患者,j = 1,...,n。

我试图在 JAGS 中拟合这个模型(所以我将先验放在参数上),但我无法编译代码。这是我用来调用 JAGS 的 R 代码。首先,在给定参数的一些真实值的情况下,我生成数据(潜在变量和观察变量):

然后我定义了 JAGS 模型,并编写了一个小函数来运行 JAGS 采样器并返回样本:

最后,我调用 JAGS,只提供观察到的数据:

遗憾的是,这会导致错误消息:“Y[1] 是一个逻辑节点,无法观察到”。JAGS 不喜欢我使用“<-”为 Y[i] 赋值(我用“Ack!”表示违规行)。我理解投诉,但我不知道如何重写模型代码来解决这个问题。

此外,为了证明其他一切(除了“Ack!”行)都很好,我再次运行模型,但这次我将 X 数据输入它,假装它确实被观察到了。这运行得很好,我得到了很好的参数估计:

如果你能找到一种方法在 STAN 而不是 JAGS 中对这个模型进行编程,那对我来说很好。

0 投票
0 回答
1264 浏览

r - 在用户定义的函数中使用 STAN 函数

我的数据 (m) 的似然函数如下所示:

我在我的 STAN 代码中编写的用户定义的对数似然函数如下:

. 我想知道我做得对吗?我可以在用户定义的函数中使用“exponential_log”和“normal_cdf_log”等STAN函数吗?

0 投票
0 回答
409 浏览

probability - 在 Stan 或 PyMC3 中是否可以组合 2 个多项分布

我有 2 个不同的多项式分布,我想将它们相乘以得到一个矩阵。该矩阵与我观察到的数据相匹配。有没有办法使用 PyMC3 或 Stan 分解这些数据?有什么好的例子吗?这似乎类似于非负矩阵分解的贝叶斯版本。

0 投票
1 回答
206 浏览

stan - 8schools.stan 和schools.stan 之间的RStan 区别

几年前我学习了STAN,当时的教程模型是8schools.stan,然后忙了几年其他事情。我现在回来尝试重新学习 STAN。现在教程模型只是schools.stan。我已经运行了相同基本模型的这两个版本,将种子设置为相同的值。我得到两个非常相似但不相同的结果,但 lp__ 的值却截然不同。

8schools.stan 和schools.stan 之间的唯一区别在于模型部分。两个文件的区别是:

据我了解,这两个模型语句是等效的。我使用教程中给出的相同schools_dat 数据集运行这两个模型,使用以下STAN 调用,仅将fit1 更改为fit2 并将STAN 文件从8schools.stan 更改为schools.stan 进行两次运行。

8所学校的结果:

对于schools.stan:

这两个模型的结果非常接近,但并不完全相同,除了 lp__ 完全不同。我怀疑这两个模型的编译方式略有不同,因此种子没有给出相同的值。但这两个模型陈述真的相同吗?除了估计参数的微小差异——在采样预期的可变性范围内(但请注意相同的种子),显着差异在于 lp__ 的值。
这里发生了什么?提前感谢任何可以为我澄清这个问题的人。

0 投票
1 回答
549 浏览

r - 构建非线性指数模型——使用向量还是实数?

我是 Stan 和概率编程的新手。我正在尝试构建一个非线性增长模型。我已经能够在NLS

我使用的 NLS 公式是:Trump_Pct ~ alpha - beta * lambda^Population

我的 NLS 总结是:

换句话说,基本的指数衰减曲线。我正在尝试与 Stan 进行复制。

我的数据如下:

N在数据集中观察到:预测变量是一个县的人口(“人口”),预测的 Y 是对特朗普“Trump_Pct”的投票百分比。

我尝试了两种构建此模型的方法。

  1. 一方面,我将每个组件的数据作为向量传递给模型。

  2. 另一方面,我将每个数据组件保留为一个列表并尝试使用每个数据点。

在任何一种情况下,我都无法让模型成功运行。

这是我的模型:

情况1:

这是对该模型的改编。

在这里,我创建了 Trump_Pct 和 Population 列的矢量化版本。

由于以下原因,该模型未能与指数一致:

`语法错误,来自解析器的消息:

^ 的参数必须是原始的(实数或整数);不能通过块 = 本地中的向量对实数求幂

我试过使用pow(),但找不到前进的方向。有小费吗?

案例二:

在情况 2 中,我无法将参数估计值保持在范围内:

"Informational Message: The current Metropolis proposal is about to be rejected because of the following issue:"
[2] "Exception thrown at line 21: normal_log: Location parameter[2873] is -inf, but must be finite!"

任何人都可以为我的公式提供一个简单的非线性模型的建议吗?

0 投票
1 回答
559 浏览

stan - 关于 Stan 的行为方式以及这告诉我们什么的提示?

如果这很重要,我正在使用 Rstan。

Stan 让我们在变分模式和采样模式下运行,变分模式要快得多。我的问题是变分 Stan 的行为是否可以为我们的模型提供任何线索。

变分模式有几种行为,我想知道它们是否可以提供线索,表明我们的模型有问题,甚至可能是什么。例如:

  1. 我们可以在 eta 适应过程中得到一个错误。

  2. 我们可以在梯度上升过程中得到一个错误,通常是在任何迭代之前,但偶尔会在以后的迭代中。

  3. 我们可以得到梯度上升的分歧——即delta ELBO均值爆炸。

  4. 我们可以使 delta ELBO 均值/中值增加到初始 1.0 以上,然后减小直到收敛。

  5. 我们的 delta ELBO 均值/中位数从 1.0 开始下降,但迭代次数更多或更少。

  6. 我们可以使 delta ELBO 均值或中值或两者都收敛(即低于 0.01)。

我在考虑经验法则。以采样时的示例为例,如果我有一个合理大小的数据集和一个相当简单的模型,但采样时间过长,我的第一个想法是检查我的先验。当我将先验保留为默认值(平坦,不正确的先验)时,我已经看到了这种行为,并且通常通过在事物上放置一个相当模糊的先验以使采样器远离样本空间的不合理部分来解决此问题。

任何人都有平均场模式的经验法则或见解——无论是在它本身的权利上,还是它与采样的关系?

0 投票
1 回答
806 浏览

r - 在 rstan 中转换变量(贝叶斯分析)

我是贝叶斯分析的新手,正在尝试使用 rstan 来估计后验密度分布。该练习试图重新创建我的大学使用 stan 提供给我们的示例,但我对如何正确转换变量有点困惑。我当前的代码运行没有错误,但结果与大学给出的结果不匹配(尽管很接近),为了清楚起见,下图以黑色显示 stan 估计。我通过查阅手册并将随机位拼凑在一起使代码工作,但特别是我不太确定为什么target需要以及伽玛的转换是否确实正确。任何指导将不胜感激!

模型

在此处输入图像描述

斯坦代码

R代码

数据

---更新解决方案---

Ben Goodrich 指出的问题是我从 theta 推导出 gamma,因为它应该是相反的,因为 gamma 是我的随机变量。正确的 stan 代码如下。

0 投票
1 回答
274 浏览

stan - RStan:在 ordered_logistic() 中使用矩阵

我想ordered_logistic()在 RStan 中使用函数。

首先,这是数据(sample):

我使用数据子集:

我的斯坦代码是:

如果我运行此代码,则会收到以下错误:

代码有什么问题?

0 投票
2 回答
1363 浏览

mixture-model - Stan 中的混合模型 - 矢量化

我现在正在学习 Stan,想实现一个简单的混合模型。

在参考手册(stan-reference-2.14.0)中已经有一个解决方案:

下一页描述了外部循环的矢量化是不可能的。但是,我想知道内部循环的并行化是否仍然存在。

所以我尝试了以下模型:

...并且该模型做出错误的估计(与原始模型相反)。

我想知道,我对模型规范的理解是错误的。我想了解语法提供的区别(以及vector[K]和之间的区别real[K]),也许对 Stan 有更深入的了解。