#r #statistics #jags
#r #Статистика #jags
Вопрос:
Я новичок в JAGS, но после поиска я не нашел решения или объяснения такого поведения. В основном, в зависимости от того, если (и где) Я передаю 0
значения в мультиномиальное распределение, прогнозы из этого распределения могут отсутствовать. Я упростил это настолько, насколько смог. Вот модель, которую я хочу запустить:
test.bugs
data{
for(i in 1:2){
N[i] <- sum(counts_known[i, 1:6])
}
}
model {
for(i in 1:2){
pi[i, 1:6] ~ ddirich(alpha[1:6])
counts_known[i, 1:6] ~ dmulti(pi[i, 1:6], N[i])
N_unknown[i] ~ dpois(N[i])
counts_unknown[i, 1:6] ~ dmulti(pi[i, 1:6], N_unknown[i])
# Example of trouble (yes, I could just access N_unknown here but this is a simplified example)
# summation[2] may not exist
summation[i] <- sum(counts_unknown[i, 1:6])
}
}
Моя проблема в том, что в зависимости от того, в каком порядке я передаю данные для столбцов counts_known
, summation[2]
они могут отсутствовать в выходных данных.
R-код для запуска этого:
library(rjags)
# This works fine
data <- list(
alpha = rep(1/6, 6),
counts_known = matrix(c(
2,2,2,2,2,2,
2,2,2,0,0,4
), nrow=2, ncol=6, byrow=TRUE)
)
model <- jags.model("test.bugs", data=data, n.chains=1)
summary(coda.samples(model, variable.names=c("summation", "counts_unknown"), n.iter=1000))
# Output for counts_unknown and summation exist
# Swap columns 5 and 6 to see problem
data <- list(
alpha = rep(1/6, 6),
counts_known = matrix(c(
2,2,2,2,2,2,
2,2,2,0,4,0
), nrow=2, ncol=6, byrow=TRUE)
)
model <- jags.model("test.bugs", data=data, n.chains=1)
summary(coda.samples(model, variable.names=c("summation", "counts_unknown"), n.iter=1000))
# Output for most of the counts_unknown and summation[1] exist; about a half of the time summation[2] and counts_unknown[2, 5:6] are missing
# If you see summation[2] on first try, try running the previous line of code again a few times
Основываясь на странице справки coda.samples
, я знаю, что причина summation[2]
исчезновения во втором примере заключается в том, что у него может быть NAS, которые по умолчанию удаляются при передаче, но это просто приводит к вопросам
- Почему он генерирует NAs в первую очередь?
- В чем разница между двумя примерами, из-за которой первый, по-видимому, работает, когда на практике это одни и те же данные, только переупорядоченные?
Также в качестве примечания, если я запускаю coda.samples
na.rm=FALSE
и смотрю непосредственно на образцы NaN
, которые иногда появляются для этих подозрительных столбцов.
Спасибо за любую помощь, и я использую JAGS 4.3.0.
Комментарии:
1. Это интересный вопрос, но я подозреваю, что немногие люди, читающие этот форум, готовы ответить на него, поскольку он довольно специализированный. Мой совет — попробовать форум, посвященный JAGS, или список рассылки r-help, или, может быть stats.stackexchange.com .
2. Спасибо! Я новичок в размещении вопросов здесь и предположил, что правильно помеченные вопросы в конечном итоге будут видны другим сайтам Stack Exchange, поэтому я попробую это.
3. Нет проблем, удачи.