问题标签 [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.
r-package - 使用 rstan::rstan.package.skeleton 添加到现有的 R 包
我已经使用 devtools 创建了我的包骨架,然后添加了一堆 R 代码、元数据、文档等。我想在这个包中使用 rstan。我知道 rstan::rstan.package.skeleton 创建了一个包骨架来促进这一点。那么,使用该包中使用 rstan 所需的结构来增强现有包的最佳实践是什么?谢谢你。
stan - Stan 错误将参数转换为 int
我正在尝试使用 STAN 进行切换点分析。我有一个数据向量y
,它有两个不同的高斯随机变量序列。目标是找到可能发生转变的时间的后验分布。我正在使用RStan
它来运行它,但错误在于 STAN。
这是 STAN 代码;
解析器(Rstudio 附带)给出以下错误;
为什么它不能处理进行铸造的变量分配?STAN 是否需要不同的模式来进行此类分析。我试图在其中创建一个整数变量,parameters
但 STAN 似乎不支持随机整数变量,只有连续变量。
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。
编辑:我可能误认为上面的链接没有用。我已经编写了以下代码,如果它看起来正确(理论上),将不胜感激。
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
块中计算的一样?
stan - 拟合逻辑模型时出现 stan 错误“未定义的值”
新的 stan 用户在这里。这个特定的模型(基本上是混合效应逻辑回归)有时会运行,但经常会出现错误“以下变量具有未定义的值:log_lik[182]”等。“dev”或“log_lik”值总是有问题. 它被捕获的索引有时在区域之间的过渡处,但在某些运行中也出现在随机位置。
斯坦型号:
数据看起来像这样(数据框“SDF”):
这些调用在 R 中使用:
r - 在 JAGS 中以“计数过程”形式表示参数生存模型
我正在尝试在 JAGS 中建立一个允许时变协变量的生存模型。我希望它是一个参数模型——例如,假设生存遵循 Weibull 分布(但我想允许风险变化,所以指数太简单了)。因此,这本质上是可以在flexsurv
包中完成的贝叶斯版本,它允许参数模型中的时变协变量。
因此,我希望能够以“计数过程”形式输入数据,其中每个主题都有多行,每行对应于其协变量保持不变的时间间隔(如本 pdf或此处所述。这是或包装允许的(start, stop]
配方。survival
flexurv
不幸的是,关于如何在 JAGS 中进行生存分析的每一种解释似乎都假设每个主题只有一行。
我尝试采用这种更简单的方法并将其扩展到计数过程格式,但该模型无法正确估计分布。
失败的尝试:
这是一个例子。首先我们生成一些数据:
然后我们将数据分成每个受试者 2 个观察值。我只是在时间 = 300 时拆分每个主题(除非他们没有达到时间 = 300,他们只得到一个观察结果)。
现在我们可以设置 JAGS 模型了。
根据分割点的位置,模型估计基础分布的非常不同的参数。如果数据没有被拆分到计数过程表格中,它只会获取正确的参数。似乎这不是为此类问题格式化数据的方法。
如果我遗漏了一个假设,并且我的问题与 JAGS 的关系不大,而与我如何制定问题的方式更相关,那么非常欢迎提出建议。我可能对时变协变量不能用于参数生存模型(并且只能用于 Cox 模型之类的模型感到绝望,该模型假设风险恒定且实际上并不估计潜在分布)——然而,作为我在上面提到过,flexsurvreg
R 中的包确实适应了(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代码。
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)
python - 返回系数以适应 Python 以用于其他语言的最有效方法?
数据是我正在使用的微分方程系统中强制项的输入。因此,我需要为这些数据拟合一个连续函数,这样我就不必处理逐步函数的不连续性可能带来的稳定性问题。不幸的是,这是一个相当大的数据集。
我试图最终得到一个拟合函数,它是可能的,并且不太繁琐,无法翻译成 Stan,这是我编写微分方程的语言,所以更喜欢分段多项式形式的东西,最多只有几个我可以手动编码的部分。
我polyfit
从 from开始numpy
,这不是很好。使用UnivariateSpline
fromscipy
给了我一个不错的选择,但它并没有给我一些看起来易于翻译成 Stan 的东西。因此,我一直在寻找其他适合的建议,我可以尝试返回更容易翻译成其他语言的函数?查看我的数据的形状,是否有可能有用的周期性样条拟合?
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 复制粘贴的完整代码