问题标签 [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.
mcmc - STAN 计算时间如何随迭代次数而变化?
我正在使用 MCMC 来拟合贝叶斯混合模型。我在编码/计算机科学方面没有特别强的背景,我想知道一些对我来说似乎很奇怪的事情。
当我将通过 STAN 的 MCMC 采样的迭代次数设置为 100 时,采样在 20" 内完成,当我将其设置为 1000 时,大约需要一个小时才能达到 100。
是关于采样方法还是什么?
先感谢您
stan - 从 rstan 中的 stanfit 对象中提取 BFMI
在使用 stan 拟合模型后stan()
,如何提取每个链的 BFMI?从这个对话中:https ://groups.google.com/forum/#!topic/stan-dev/uJhsapVwlk8 ,使用打印方法时似乎显示了 BFMI。但是,使用 时不会出现,使用时print(stanfit)
BFMI 也不会出现get_sampler_params(stanfit)
。
有没有办法从 stanfit 对象中获取 BFMI?
rstan 版本:2.14.1
r - Unix 上 R 中 TextConnextion 中的警告
我试图从 R 中调用 stan 的一些输出,但我在 linux 上得到了最奇怪的错误消息:
投掷Couldn't get a file descriptor referring to the console
最奇怪的事情:这不会发生在具有浏览器界面的 R Studio Server 上,其中操作系统是相同的。我很高兴发布一个小的可重现代码片段,但希望答案是我所缺少的显而易见的东西。
r - FUN(X[[i]], ...) 中的错误:Stan 不支持数据中的 NA (in t)
当我遇到这个问题时,我正在尝试在 R 中实现 facebook 的新先知 api。代码如下
在这一行,我收到以下错误
我不知道如何从这里开始。请帮忙!
bayesian - STAN - 使用采样语句与直接增加对数概率时得到不同的结果
我试图通过使用'target += bernoulli_logit_lmpf(y | alpha)'功能直接增加对数概率来在stan中实现模型。完整模型如下:
我的理解是,这应该产生与下面的抽样语句相同的结果:
然而,这两个模型产生了完全不同的结果(即使在 R 和 Stan 中使用相同的种子)。我认为问题可能在于我如何实现直接增量,所以我也尝试了以下模型。
但是,所有三种模型都会产生不同的结果。有趣的是,直接增量的运行速度大约是采样语句的两倍,但似乎没有给出正确的结果。我需要使用直接增量方法,因为我最终会将这个模型转换为混合模型,而据我所知,混合模型需要直接更新对数概率。对此的任何帮助将不胜感激!
问候,蒂姆
r - 使用 stan 从偏态正态分布中绘制
有没有办法从 stan 的偏态正态分布中提取?如果没有,有没有办法从正态分布中提取然后转换为偏斜正态分布?
更新
我y~skew_normal(mu, sigma, alpha)
在 stan 手册中找到了,但是当我使用参数对例如 1000 个值进行采样时
mu=1,
sigma=10,
alpha=-1000
我也得到了一些-inf
价值观。任何想法为什么?
更新 2
我的testing.stan
然后是我的testing.R
文件
运行后sort(object$temp)
我得到一些-inf
值。
r - Stan_glmer 对象分配错误
在等待三个 MC 链运行一周后,对象没有保存,给出错误“错误:is.atomic(x) is not TRUE”。我已经多次运行此代码或其变体,所以它可能不是我的语法,但可能与对象大小或内部 stan_glmer 错误有关?日志如下,感谢您的帮助(关于如何保存中间链的建议也会很有用!)
现在对模型“bernoulli”进行采样(链 1)。
链 1,迭代:1 / 5000 [0%](预热) 链 1,迭代:500 / 5000 [10%](预热)链 1,迭代:1000 / 5000 [20%](预热)链 1,迭代: 1500 / 5000 [ 30%](热身)链 1,迭代:2000 / 5000 [40%](热身)链 1,迭代:2500 / 5000 [50%](热身)链 1,迭代:3000 / 5000 [60 %](热身)链 1,迭代:3500 / 5000 [70%](热身)链 1,迭代:4000 / 5000 [80%](热身)链 1,迭代:4500 / 5000 [90%](热身)链 1,迭代:5000 / 5000 [100%](预热)经过时间:394305 秒(预热)0 秒(采样)394305 秒(总计)
现在对模型“bernoulli”进行采样(链 2)。
链 2,迭代:1 / 5000 [ 0%](预热) 链 2,迭代:500 / 5000 [ 10%](预热) 链 2,迭代:1000 / 5000 [ 20%](预热)链 2,迭代: 1500 / 5000 [ 30%](热身)链 2,迭代:2000 / 5000 [40%](热身)链 2,迭代:2500 / 5000 [50%](热身)链 2,迭代:3000 / 5000 [60 %](热身)链 2,迭代:3500 / 5000 [70%](热身)链 2,迭代:4000 / 5000 [80%](热身)链 2,迭代:4500 / 5000 [90%](热身)链 2,迭代:5000 / 5000 [100%](预热)经过时间:434251 秒(预热)0 秒(采样)434251 秒(总计)
现在对模型“bernoulli”进行采样(链 3)。
链 3,迭代:1 / 5000 [ 0%](预热) 链 3,迭代:500 / 5000 [ 10%](预热) 链 3,迭代:1000 / 5000 [ 20%](预热)链 3,迭代: 1500 / 5000 [ 30%](热身)链 3,迭代:2000 / 5000 [40%](热身)链 3,迭代:2500 / 5000 [50%](热身)链 3,迭代:3000 / 5000 [60 %](热身)链 3,迭代:3500 / 5000 [70%](热身)链 3,迭代:4000 / 5000 [80%](热身)链 3,迭代:4500 / 5000 [90%](热身)链 3,迭代:5000 / 5000 [100%](预热)经过时间:345070 秒(预热)0 秒(采样)345070 秒(总)
错误:is.atomic(x) 不是 TRUE
保存错误(stan.T.mod,file = paste0(outpath,“stan.GCMfixedmods”)):
找不到对象“stan.T.mod”stan.T.mod 错误:找不到对象“stan.T.mod”
distribution - Stan中的多元偏斜法线
我正在尝试估计 Rstan 中的贝叶斯层次模型,并希望在我的模型中包含一个多元偏态正态分布。这不是 Stan 中已经定义的分布,但文档似乎表明可以使用 Cholesky 因子来实现它。例如,Stan 2.15.0 文档在第 333-334 页上说:
“根据标准正态变量对多元正态分布的重新参数化可以扩展到其他多元分布,这些分布可以被概念化为多元正态的污染,例如多元学生 t 和偏斜多元正态分布。”
有谁知道如何实际做到这一点?我考虑过自己在 Stan 中实现偏斜多元法线,但看起来并没有一个很好的封闭形式的分布可以直接实现......
r - 如何在 brms::marginal_effects() 生成的图中指定 y 限制?
这是我的示例代码。我想制作同一个图的几个变体,因此强制执行相同的 y 限制对于视觉比较很重要。
我的首选结果是最后 3 行中的每一行都生成具有不同 Y 限制的图。
vector - stan:向量数组的输入数据
我对 stan 很陌生,我正在尝试为我的模型读取一些数据。我按照相应的 stan 手册中的建议定义了一个向量数组,但我不知道如何写下我的输入数据。我需要的数据参数如下所示:
对于法线向量 vector[k],我的输入如下所示:
但我只是不知道如何为我拥有的那种向量做到这一点。像这样的东西不适用于 N <- 4
有什么建议么?