gpt4 book ai didi

bayesian - 使用 Stan 的分层模型的 Hyperpriors

转载 作者:行者123 更新时间:2023-12-02 01:08:50 25 4
gpt4 key购买 nike

我正在寻找拟合模型来估计 Stan 的二项式数据的多重概率。我对每个概率都使用 beta 先验,但我一直在阅读有关使用超先验来汇集信息并鼓励估计收缩的信息。

我看过这个在 pymc 中定义超先验的例子,但我不确定如何用 Stan 做类似的事情

@pymc.stochastic(dtype=np.float64)
def beta_priors(value=[1.0, 1.0]):
a, b = value
if a <= 0 or b <= 0:
return -np.inf
else:
return np.log(np.power((a + b), -2.5))

a = beta_priors[0]
b = beta_priors[1]

然后将 a 和 b 用作 beta 先验的参数。

谁能给我一些关于如何用 Stan 做类似事情的建议?

最佳答案

要正确对其进行归一化,您需要帕累托分布。例如,如果你想要一个分布p(a, b) ∝ (a + b)^(-2.5),你可以使用

a + b ~ pareto(L, 1.5);

其中 a + b > L。无法通过支持所有大于或等于零的值来标准化密度——它需要一个有限的 L 作为下限。讨论了仅使用此先验作为单纯形的分层先验的计数组件。

如果 ab 是参数,它们要么都被约束为正数,要么你可以让 a 不受约束并声明

real<lower = L - a> b;

确保 a + b > LL 可以是一个小常量,或者根据您对 ab 的了解更合理的值。

你应该小心,因为这不会识别a + b。我们将此构造用作单纯形的分层先验:

parameters {
real<lower = 1> kappa;
real<lower = 0, upper = 1> phi;
vector<lower = 0, upper = 1>[K] theta;

model {
kappa ~ pareto(1, 1.5); // power law prior
phi ~ beta(a, b); // choose your prior for theta
theta ~ beta(kappa * phi, kappa * (1 - phi)); // vectorized

在我的重复二元试验的 Stan 案例研究中有一个扩展示例,可以从 Stan web site 上的案例研究页面访问。 (案例研究目录目前链接在用户选项卡的文档链接下)。

关于bayesian - 使用 Stan 的分层模型的 Hyperpriors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46173223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com