如何在rstan中使用包中的分布?

问题描述 投票:1回答:1

我想将R包中实现的分布拟合到rstan中的 rstan. 我知道,如果直接实现自定义分布,可以使用自定义分布。

https:/mc-stan.orgdocs2_18stan-users-guidecustom-probability-functions-chapter.html。

然而,我想知道是否可以使用其他软件包中的分布。例如,我想使用来自的方差-伽马分布。VarianceGamma 包。

dvg(x, vgC , sigma , theta , nu )

如何定义对数密度函数,比如。vg_lpdf() 中已有的实现。dvg(x, vgC , sigma , theta , nu , log = TRUE) 为了能够在实现可能性的过程中调用这个命令,在 target += vg_lpdf(x | vgC , sigma , theta , nu)?

r distribution stan rstan
1个回答
1
投票

那是不可能的,只不过你可以看看R实现的源代码,在你写的Stan函数中利用同样的逻辑。基本上只能调用外部的C++代码,即使如此,外部的C++代码也必须经过模板化处理,才能接受Stan的自定义标量类型,通过自动微分来计算梯度。

此外,方差-伽马分布在Stan中很难实现,因为它的Bessel函数只能在整数阶进行评估。另外,绝对值运算往往会搞乱Stan中的MCMC算法,因为它假设后对数核在任何地方都是可微分的。

我的猜测是,如果你使用Stan的 integrate_1d 函数来整合出具有Gamma分布(或真正的任何分布)的潜伏误差。

https:/mc-stan.orgdocs2_23stan-users-guideintegrate-1d.html。

© www.soinside.com 2019 - 2024. All rights reserved.