【问题标题】:In JAGS, how does the stochastic node works?在 JAGS 中,随机节点是如何工作的?
【发布时间】:2020-05-29 21:00:36
【问题描述】:

...与 y[I] ~ dnorm(m[i],tau) vs y[I]

考虑这两行代码:

`for(I in 1:length(y)) {
y[i] ~ dnorm(m[i],tau)  #---> Jags code (stochastic node)
m[i] = alpha + beta*(x[i] - x_bar)
.
.
}
y[i] <- dnorm(n,m[i],tau)?) ---> R`

在 Jags 中,由于未在 dnorm 函数中指定,因此 n 值是多少? (dnorm(m[i],tau))

对于每个 i,dnorm 函数是否计算每个 y 值相对于均值 m[I] 的密度值,该均值 m[I] 具有由确定性节点和 tau(精度)确定的线性关系?

简而言之,我想知道 dnorm 或任何其他密度函数将使用哪些 n 值进行分布(dgamma 或 dbeta)。

【问题讨论】:

    标签: r statistics modeling bayesian jags


    【解决方案1】:

    在此特定实例中,y 是您的响应变量,m 是您的线性预测变量,tau 是精度(方差的倒数)。使用~ 使关系随机化。查看 JAGS 用户手册...

    "关系可以有两种类型。随机关系 (~) 定义一个随机节点,表示模型中的随机变量。确定性关系 (&lt;-) 定义一个确定性 节点,其值完全由其父节点的值确定。等号 (=) 可用于代替左箭头 (&lt;-) 的确定性关系。"

    因此,换句话说,您假设y 中的值来自与mtau 相关的正态分布。

    R 中的dnorm 计算密度,而 JAGS 计算对数密度(根据用户手册)。实际上,这种随机关系允许您使用yx 来估计alphabetatau,在这种情况下,您可以通过对数据生成过程做出分布假设来使用dnorm .

    当然,由于这是贝叶斯分析,您的参数需要先验。您还可以确定性地计算标准偏差而不是精度。一个完整的模型看起来像......

    model{
    # likelihood
    for(I in 1:length(y)) {
    y[i] ~ dnorm(m[i],tau) 
    m[i] <- alpha + beta*(x[i] - x_bar)
    }
    # priors
    tau ~ dgamma(0.001, 0.001)
    sd <- 1/ sqrt(tau)
    alpha ~ dnorm(0, 0.001)
    beta ~ dnorm(0, 0.001)
    }
    
    

    【讨论】:

    • 您好 mfidino,感谢您的回复。但我的问题的核心是——“ dnorm 函数计算 JAGS 中的对数密度时 n 的值是多少?” [dnorm(n, u, sig);但在 Jags 代码中,未指定 n。我浏览了整个 JAGS 手册,对于使用 JAGS 的初学者来说,这个问题没有得到解答或没有明确回答]
    • 未指定n。相反,JAGS 通过循环使用y 中的1:n(在您的示例中为1:length(y))值来估计dnorm 中指定的参数(即alpha、beta 和tau)。 JAGSR 中的 dnorm 函数不一样。
    • 所以如果 y = [7,5,3,9,4,5],对于从 1:5 开始的每次迭代,错误中的 dnorm 将使用 y 值(例如 y[2] = 5) 对于 n?
    • 是的,没错。它正在使用这些数据来参数化您的模型。
    猜你喜欢
    • 1970-01-01
    • 2023-01-31
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2022-07-09
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    相关资源
    最近更新 更多