代码之家  ›  专栏  ›  技术社区  ›  CRP

JAGS随机效应模型预测

  •  3
  • CRP  · 技术社区  · 8 年前

    我正在尝试用指数作为响应(D47),温度作为预测(Temp),并考虑离散变量(Material)的随机影响,对贝叶斯回归进行建模。我发现了关于非层次回归的非常好的信息,一些帖子甚至包括这些模型的预测策略。尽管如此,我在模型中预测D47值时发现了一个显著的问题,主要是因为随机截距。

    在预测JAGS回归过程中,有没有办法处理随机截距?

    谢谢你的回答,

    model1<-"model {
    # Priors
    mu_int~dnorm(0, 0.0001) # Mean hyperparameter for random intercepts
    sigma_int~dunif(0, 100) # SD hyperparameter for random intercepts
    tau_int <- 1/(sigma_int*sigma_int)
    for (i in 1:n) {
    alpha[i]~dnorm(mu_int, tau_int) # Random intercepts
    }
    beta~dnorm(0, 0.01) # Common slope
    sigma_res~dunif(0, 100) # Residual standard deviation
    tau_res <- 1/(sigma_res*sigma_res)
    # Likelihood
    for (i in 1:n) {
    mu[i] <- alpha[Mat[i]]+beta*Temp[i] # Expectation
    D47[i]~dnorm(mu[i], tau_res) # The actual (random) responses
    }
    }"
    
    1 回复  |  直到 4 年前
        1
  •  4
  •   mfidino    7 年前

    当然,你可以用随机截距进行预测,你所需要做的就是把它指定为某种派生量。

    尝试向模型中添加类似的内容。

    for(i in 1:(n)){
    D47_pred[i] <- dnorm(mu[i], tau_res)
    }
    

    然后跟踪D47_pred作为参数。

    编辑:

    此外,您需要更改如何指定随机截距的先验。这将需要几个步骤(从注释中更新代码)。

    您需要在数据列表中添加一个新的常量,它表示向量Mat中唯一组的数量。在这种情况下,我将其标记为M(例如Mat中的4个组,M=4)

    for (j in 1:(M)){ 
    alpha[j] ~ dnorm(mu_int, tau_int) # Random intercepts
    }
    

    此规范只为您的模型生成正确的随机截取数