R과 JAGS를 사용하여 메타 분석을 위해 다소 복잡한 계층 적 베이지안 모델을 만들고 있습니다. 비트를 단순화하면 모형의 두 가지 주요 수준은 α j = ∑ h γ h ( j ) + ϵ j입니다. 여기서 y i j 는 끝점 의 i 번째 관측치입니다 (이 경우 · 연구에 GM 대 비 GM 작물 수확량) J , α j는 학습에 대한 효과 J 는 γ
나는 주로 의 값을 추정하는데 관심이 있습니다. 이는 모델에서 스터디 수준 변수를 삭제하는 것이 좋은 옵션이 아님을 의미합니다.
여러 연구 수준 변수 사이에 높은 상관 관계가 있으며 이것이 MCMC 체인에서 큰 자기 상관을 생성한다고 생각합니다. 이 진단 플롯은 연쇄 궤적 (왼쪽)과 결과 자기 상관 (오른쪽)을 보여줍니다.
자기 상관의 결과로, 각각 10,000 개 샘플의 4 개 체인에서 60-120의 효과적인 샘플 크기를 얻고 있습니다.
두 가지 질문이 있습니다. 하나는 분명히 객관적이고 다른 하나는 더 주관적입니다.
희석, 체인 추가 및 샘플러 실행 시간 외에이 자기 상관 문제를 관리하는 데 어떤 기술을 사용할 수 있습니까? "관리"는 "합리적인 시간 내에 합리적으로 좋은 견적을 작성합니다"를 의미합니다. 컴퓨팅 성능 측면에서 MacBook Pro에서 이러한 모델을 실행하고 있습니다.
이 정도의 자기 상관은 얼마나 심각합니까? 모두 토론 여기 와 존 Kruschke의 블로그는 우리가 충분히 모델을 실행하는 경우, (Kruschke을) "를 큰 덩어리의 자기 상관이 아마 평균화 된"것을 제안하고, 그래서 정말 큰 문제가 아니다.
누군가가 세부 사항을 살펴볼만큼 관심이있는 경우를 대비하여 위의 플롯을 생성 한 모델의 JAGS 코드는 다음과 같습니다.
model {
for (i in 1:n) {
# Study finding = study effect + noise
# tau = precision (1/variance)
# nu = normality parameter (higher = more Gaussian)
y[i] ~ dt(alpha[study[i]], tau[study[i]], nu)
}
nu <- nu_minus_one + 1
nu_minus_one ~ dexp(1/lambda)
lambda <- 30
# Hyperparameters above study effect
for (j in 1:n_study) {
# Study effect = country-type effect + noise
alpha_hat[j] <- gamma_countr[countr[j]] +
gamma_studytype[studytype[j]] +
gamma_jour[jourtype[j]] +
gamma_industry[industrytype[j]]
alpha[j] ~ dnorm(alpha_hat[j], tau_alpha)
# Study-level variance
tau[j] <- 1/sigmasq[j]
sigmasq[j] ~ dunif(sigmasq_hat[j], sigmasq_hat[j] + pow(sigma_bound, 2))
sigmasq_hat[j] <- eta_countr[countr[j]] +
eta_studytype[studytype[j]] +
eta_jour[jourtype[j]] +
eta_industry[industrytype[j]]
sigma_hat[j] <- sqrt(sigmasq_hat[j])
}
tau_alpha <- 1/pow(sigma_alpha, 2)
sigma_alpha ~ dunif(0, sigma_alpha_bound)
# Priors for country-type effects
# Developing = 1, developed = 2
for (k in 1:2) {
gamma_countr[k] ~ dnorm(gamma_prior_exp, tau_countr[k])
tau_countr[k] <- 1/pow(sigma_countr[k], 2)
sigma_countr[k] ~ dunif(0, gamma_sigma_bound)
eta_countr[k] ~ dunif(0, eta_bound)
}
# Priors for study-type effects
# Farmer survey = 1, field trial = 2
for (k in 1:2) {
gamma_studytype[k] ~ dnorm(gamma_prior_exp, tau_studytype[k])
tau_studytype[k] <- 1/pow(sigma_studytype[k], 2)
sigma_studytype[k] ~ dunif(0, gamma_sigma_bound)
eta_studytype[k] ~ dunif(0, eta_bound)
}
# Priors for journal effects
# Note journal published = 1, journal published = 2
for (k in 1:2) {
gamma_jour[k] ~ dnorm(gamma_prior_exp, tau_jourtype[k])
tau_jourtype[k] <- 1/pow(sigma_jourtype[k], 2)
sigma_jourtype[k] ~ dunif(0, gamma_sigma_bound)
eta_jour[k] ~ dunif(0, eta_bound)
}
# Priors for industry funding effects
for (k in 1:2) {
gamma_industry[k] ~ dnorm(gamma_prior_exp, tau_industrytype[k])
tau_industrytype[k] <- 1/pow(sigma_industrytype[k], 2)
sigma_industrytype[k] ~ dunif(0, gamma_sigma_bound)
eta_industry[k] ~ dunif(0, eta_bound)
}
}