问题标签 [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 回答
185 浏览

r-package - 使用 rstan::rstan.package.skeleton 添加到现有的 R 包

我已经使用 devtools 创建了我的包骨架,然后添加了一堆 R 代码、元数据、文档等。我想在这个包中使用 rstan。我知道 rstan::rstan.package.skeleton 创建了一个包骨架来促进这一点。那么,使用该包中使用 rstan 所需的结构来增强现有包的最佳实践是什么?谢谢你。

0 投票
2 回答
1536 浏览

stan - Stan 错误将参数转换为 int

我正在尝试使用 STAN 进行切换点分析。我有一个数据向量y,它有两个不同的高斯随机变量序列。目标是找到可能发生转变的时间的后验分布。我正在使用RStan它来运行它,但错误在于 STAN。

这是 STAN 代码;

解析器(Rstudio 附带)给出以下错误;

为什么它不能处理进行铸造的变量分配?STAN 是否需要不同的模式来进行此类分析。我试图在其中创建一个整数变量,parameters但 STAN 似乎不支持随机整数变量,只有连续变量。

0 投票
1 回答
791 浏览

stan - Stan:观测变量和潜在变量上的 Copula

考虑观察到的数据 y1 和 y2。y1 以连续刻度测量,y2 以二进制刻度测量。假设连续潜变量 z 生成 y2 为:y2 = I(z > 0)。(如果 z 是正常的,那么 y2 是二进制概率)。此外,使用 copula 对 y1 和 z 之间的依赖关系进行建模。该模型可以分层编写(有一些符号滥用)为:

y2 = I(z > 0)
(y1, z) ~ C(F_y1( |w), F_z( |w) | phi)
w, phi ~ 先验

其中 w 是 y1 和 z 的边际参数向量,F_y1 和 F_z 分别是 y1 和 z 的边际 cdf,phi 是 copula 参数。

这怎么能在 Stan 中建模呢?我编写了一个自定义概率函数来从 copula 产生的二元似然中采样 y1 和 z。我不知道如何解释(生成?)潜在变量 z,以及如何指定 y2 和 z 之间的关系。

我已经在 stan 中查看了使用数据增强的 Probit 回归,但这似乎没有帮助,因为我的模型中有 copula。

编辑:我可能误认为上面的链接没有用。我已经编写了以下代码,如果它看起来正确(理论上),将不胜感激。

0 投票
2 回答
234 浏览

r - 将转换后的参数添加到 stanfit 对象

我有一个stanfit调用fit返回的对象rstan::stan(...)来推断参数theta。我现在可以theta使用 eg进行分析rstan::summary(fit, pars="theta")

后来我意识到我对推断 的平方更感兴趣theta。我应该transformed parameters在 STAN 模型中包含一个块以theta_squared作为参数包含在输出中。

是否可以将转换后的参数添加theta_squared <- theta^2到现有stanfit对象中,就好像它是在一个transformed parameters块中计算的一样?

0 投票
1 回答
1830 浏览

apache-spark - Spark 上的 MC-Stan?

我希望在Spark上使用MC-Stan,但 Google 似乎没有搜索到相关页面。

我想知道这种方法在 Spark 上是否可行,因此如果有人让我知道,我将不胜感激。

此外,我还想知道在 Spark 上使用 MCMC 的广泛使用方法是什么。我听说 Scala 被广泛使用,但我需要一些具有像样的 MCMC 库的语言,例如 MC-Stan。

0 投票
1 回答
813 浏览

stan - 拟合逻辑模型时出现 stan 错误“未定义的值”

新的 stan 用户在这里。这个特定的模型(基本上是混合效应逻辑回归)有时会运行,但经常会出现错误“以下变量具有未定义的值:log_lik[182]”等。“dev”或“log_lik”值总是有问题. 它被捕获的索引有时在区域之间的过渡处,但在某些运行中也出现在随机位置。

斯坦型号:

数据看起来像这样(数据框“SDF”):

这些调用在 R 中使用:

0 投票
1 回答
10139 浏览

r - 在 JAGS 中以“计数过程”形式表示参数生存模型

我正在尝试在 JAGS 中建立一个允许时变协变量的生存模型。我希望它是一个参数模型——例如,假设生存遵循 Weibull 分布(但我想允许风险变化,所以指数太简单了)。因此,这本质上是可以在flexsurv包中完成的贝叶斯版本,它允许参数模型中的时变协变量。

因此,我希望能够以“计数过程”形式输入数据,其中每个主题都有多行,每行对应于其协变量保持不变的时间间隔(如本 pdf此处所述。这是或包装允许的(start, stop]配方。survivalflexurv

不幸的是,关于如何在 JAGS 中进行生存分析的每一种解释似乎都假设每个主题只有一行。

我尝试采用这种更简单的方法并将其扩展到计数过程格式,但该模型无法正确估计分布。

失败的尝试:

这是一个例子。首先我们生成一些数据:

然后我们将数据分成每个受试者 2 个观察值。我只是在时间 = 300 时拆分每个主题(除非他们没有达到时间 = 300,他们只得到一个观察结果)。

现在我们可以设置 JAGS 模型了。

根据分割点的位置,模型估计基础分布的非常不同的参数。如果数据没有被拆分到计数过程表格中,它只会获取正确的参数。似乎这不是为此类问题格式化数据的方法。

如果我遗漏了一个假设,并且我的问题与 JAGS 的关系不大,而与我如何制定问题的方式更相关,那么非常欢迎提出建议。我可能对时变协变量不能用于参数生存模型(并且只能用于 Cox 模型之类的模型感到绝望,该模型假设风险恒定且实际上并不估计潜在分布)——然而,作为我在上面提到过,flexsurvregR 中的包确实适应了(start, stop]参数模型中的公式。

如果有人知道如何用另一种语言(例如 STAN 而不是 JAGS)构建这样的模型,那也将不胜感激。

编辑:

Chris Jackson 通过电子邮件提供了一些有用的建议:

我认为这里需要 JAGS 中用于截断的 T() 构造。基本上对于每个人活着但协变量不变的时期 (t[i], t[i+1]),生存时间在时期开始时被左截断,并且可能在结尾。所以你会写类似的东西y[i] ~ dweib(shape, scale[i])T(t[i], )

我尝试按如下方式实施此建议:

不幸的是,这并不能解决问题。使用旧代码,模型主要是正确地获得了比例参数,但在形状参数上做得非常糟糕。使用这个新代码,它非常接近正确的形状参数,但始终高估了比例参数。我注意到,高估的程度与分裂点出现的时间有关。如果分割点早(cens_point = 50),则实际上没有任何高估;如果来晚了(cens_point = 350),那么有很多。

我想这个问题可能与“重复计算”观察结果有关:如果我们在 t=300 看到一个删失的观察结果,那么来自同一个人,在 t=400 的一个未经删失的观察,对我来说,这个人似乎很直观为我们对 Weibull 参数的推断贡献了两个数据点,而实际上它们应该只贡献一个点。因此,我尝试为每个人加入随机效应;然而,这完全失败了,参数估计值很大(在 50-90 范围内)nu。我不确定为什么会这样,但也许这是一个单独的帖子的问题。由于我不是问题是否相关,您可以在此处找到整篇文章的代码,包括该模型的 JAGS代码

0 投票
1 回答
486 浏览

bayesian - ETAS 模型的 stan 编程

我是 STAN 的新手。我正在研究时间 ETAS 模型,这是一种用于模拟地震的模型。地震发生时间 t[i] 的强度被建模为 -

其中 t 是时间,p,c,mu 是三个参数。我正在使用 Rstan。我为模型编写了以下 stan 代码:

我知道我没有将时间指定为向量。你能帮我在模型部分写下可能性吗?我面临写强度的问题。我认为我过去在 R 中写入时间 t[i] 的强度的方式不是在 STAN 中执行此操作的写入方式。

A small part (containing 20 times only) of the data is as follows: dat=list(0.0000,310.1907,948.4677,1007.2617,1029.7996,1065.7343,1199.8650, 1234.6809,1298.0234,1316.0350,1381.8400,1413.4311,1546.2059,1591.1326, 1669.5084, 1738.9363,1745.5503,1797.9980,1895.6705,1936.3146)

0 投票
2 回答
186 浏览

python - 返回系数以适应 Python 以用于其他语言的最有效方法?

所以,我有以下用 Python 绘制的数据。 温度与天

数据是我正在使用的微分方程系统中强制项的输入。因此,我需要为这些数据拟合一个连续函数,这样我就不必处理逐步函数的不连续性可能带来的稳定性问题。不幸的是,这是一个相当大的数据集。

我试图最终得到一个拟合函数,它是可能的,并且不太繁琐,无法翻译成 Stan,这是我编写微分方程的语言,所以更喜欢分段多项式形式的东西,最多只有几个我可以手动编码的部分。

polyfit从 from开始numpy,这不是很好。使用UnivariateSplinefromscipy给了我一个不错的选择,但它并没有给我一些看起来易于翻译成 Stan 的东西。因此,我一直在寻找其他适合的建议,我可以尝试返回更容易翻译成其他语言的函数?查看我的数据的形状,是否有可能有用的周期性样条拟合?

0 投票
0 回答
128 浏览

python - pystan OS X El capitan malloc: *** 对象 0x117e956e0 错误

尝试拟合简单模型时,我在控制台中收到以下错误消息:

尝试使用 conda 和/或 pip 安装 pystan。

蟒蛇 3.5

OS X El 首领 10.11.4

试过 Pystan 2.8.0.0 和 2.9.0.0

这是从 Jupyter 复制粘贴的完整代码