【问题标题】:Are the initial values used for each parameter the same for each chain in rjags? I am using coda.samples for samplingrjags 中每个链的每个参数使用的初始值是否相同?我正在使用 coda.samples 进行采样
【发布时间】:2021-10-29 22:40:26
【问题描述】:

我有几个参数,不希望手动指定 n=3 链的初始值。我想知道 RJAGS 是否会为每条链提供不同的初始值。 JAGS 的manual 表示每个链都使用相同的初始值,但是当我尝试在没有任何调整的情况下获取一些样本时,初始值似乎不同。谢谢。

【问题讨论】:

    标签: r mcmc jags rjags


    【解决方案1】:

    看起来jags.model() 如果您不提供它们将使用相同的初始值。由于 MCMC 采样中固有的随机性,这些样本将彼此不同,因此这并不表示使用了不同的初始值。您可以使用state() 函数查看初始化后模型的状态,这将给出所有初始值。这是一个简单的例子。当我们不为mu 提供初始值时,它们都是0。

    jd <- list(x = runif(100))
    jm <- "
    model{
    for(i in 1:100){
     x[i] ~ dnorm(mu, 1)
    }
    mu ~ dnorm(0,3)
    }
    "
    cat(jm, file="tmp.mod")
    jm <- jags.model("tmp.mod", data=jd, n.chains=2)
    jm$state()
    # [[1]]
    # [[1]]$mu
    # [1] 0
    # 
    # 
    # [[2]]
    # [[2]]$mu
    # [1] 0
    

    当我们提供初始值时,state() 函数会识别它们实际上是我们提供的值。

    jm2 <- jags.model("tmp.mod", 
                     data=jd, 
                     n.chains=2, 
                     inits = list(list(mu=2), list(mu=-2)))
    
    jm2$state()
    # [[1]]
    # [[1]]$mu
    # [1] 2
    # 
    # 
    # [[2]]
    # [[2]]$mu
    # [1] -2
    

    【讨论】:

      猜你喜欢
      • 2021-03-08
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      相关资源
      最近更新 更多