JAGS中的后验预测检查 - 尺寸失配误差

时间:2017-12-29 15:32:19

标签: r chi-squared jags winbugs goodness-of-fit

我想知道是否有人可以帮我解决问题。我想对下面的泊松对数正态模型进行拟合优度评估(这只是简单的测试模型)。当我注释掉fit< - sum(resi [])和fit.new< - sum(resi.new [])行时,模型会运行,但我显然需要这些值来进行后验预测检查。

有关为什么这可能不起作用的任何想法?我已经包含了错误消息和模型。

感谢您提供的任何指导! 米歇尔

checkForRemoteErrors(val)出错: 3个节点产生错误;第一个错误:RUNTIME错误: 第28行的编译错误。 尺寸不匹配采用resi.new的子集

我还应该提一下,当我从fit和fit.new语句中删除括号时,我得到了一个不同的错误:

checkForRemoteErrors(val)出错: 3个节点产生错误;第一个错误:RUNTIME错误: 第27行的编译错误。 无法评估fit.new的子集表达式

这是模特:

model {

# Priors
for (i in 1:nyear){
alpha[i]~dnorm(0,0.001)
}

beta ~ dnorm(0,0.001)
sigma ~ dunif(0, 10)    
tau <- 1 / (sigma * sigma)

# Likelihood
for (i in 1:n*nyear) {
for (j in 1:J){
y[i,j] ~ dpois(lambda[i,j]) 
log(lambda[i,j]) <- alpha[year[i]] + beta*x[i] + eps[i,j]
eps[i,j] ~ dnorm(0, tau)
resi[i,j] <- pow((y[i,j]-lambda[i,j]),2) / (sqrt(lambda[i,j])+e) 
new.y[i,j] ~ dpois(lambda[i,j])
resi.new[i,j] <- pow((new.y[i,j]-lambda[i,j]),2) / (sqrt(lambda[i,j])+e) 
}
}

fit <- sum(resi[])
fit.new <- sum(resi.new[])

}

1 个答案:

答案 0 :(得分:0)

$services = [0] => array( "name" => "SERVICE-1", "attributes" => array( [0] => array( "attribute" => "Option 1", "qty" => 10 ), [1] => array( "attribute" => "Option 2", "qty" => 20 ), [2] => array( "attribute" => "Option 3", "qty" => 30 ) ) ), [1] => array( "name" => "SERVICE-2", "attributes" => array( [0] => array( "attribute" => "Option 1", "qty" => 40 ) ) ), [2] => array( "name" => "SERVICE-3", "attributes" => array( [0] => array( "attribute" => "Option 4", "qty" => 15 ), [1] => array( "attribute" => "Option 3", "qty" => 10 ) ) ), [3] => array( "name" => "SERVICE-4", "attributes" => array( ) ) resi.new都是j矩阵。如果你试图在所有数据点上得到残差的后验,你可以制作一个临时向量,然后你可以求和。这样的东西应该在模型的末尾适用于你(而不是你目前拥有的两行代码

resi