首页 > 解决方案 > STAN - 定义因随机变量的先验

问题描述

背景:我有一个具有未观察到的参数的仿真模型。我使用人工神经网络 (ANN) 创建了一个元模型,因为仿真模型的运行时间很长。我正在尝试使用贝叶斯校准来估计未观察到的参数,其中先验基于当前知识,并且从元模型中估计观察数据的可能性。

查询:我有两个随机变量 X 和 Y,我正在尝试使用 STAN 获得后验分布。X 的先验分布是均匀的U(0,2)。Y 的先验也是一致的,但它总是会超过 X,即Y ~ U(X,2)。由于 Y 与 X 相关联,如何在 STAN 中定义 Y 的先验分布以使约束 Y>X 成立?我是 STAN 的新手,因此我将不胜感激有关如何进行的任何建议或指导。太感谢了!

标签: bayesiancalibrationstanrstan

解决方案


Stan 的有序向量是您所需要的。在块中创建一个长度为 2 的有序向量(我称之为betaparameters,如下所示:

parameters {
  ordered<lower=0,upper=2>[2] beta;
}

有序向量受到约束,使得每个元素都大于前一个元素。beta[1]您对X的估计也是如此,beta[2]您对Y的估计也是如此。

(为了确保我正确理解您的模型:您有两个参数XY,您对它们的唯一先验知识是它们都位于 [0, 2] 和Y > X。XY描述了您的数据分布 - 例如,也许X其他一些随机变量Z的平均值,您对此有观察。我说得对吗?)

beta我相信 Stan 的先验默认情况下是统一的,但是您可以通过在model块中指定先验来确保这一点:

model {
  beta ~ uniform(0, 2);
  ...
}

推荐阅读