मैं R और JAGS का उपयोग करके मेटा-विश्लेषण के लिए एक जटिल जटिल पदानुक्रमित बायेसियन मॉडल का निर्माण कर रहा हूं। थोड़ा सरल बनाने, मॉडल के दो प्रमुख स्तर है α j = Σ ज γ ज ( जे ) + ε j जहां y मैं j है मैं endpoint की वें अवलोकन (इस मामले में जीएम बनाम गैर-जीएम फसल की पैदावार) के एक अध्ययन में j , α जे अध्ययन के लिए प्रभाव है j , γ
मैं मुख्य रूप से के मूल्यों का आकलन में दिलचस्पी रखता हूँ रों। इसका मतलब है कि मॉडल से अध्ययन-स्तर के चर को छोड़ना एक अच्छा विकल्प नहीं है।
अध्ययन-स्तर के कई चरों के बीच उच्च सहसंबंध है, और मुझे लगता है कि यह मेरी MCMC श्रृंखलाओं में बड़े ऑटोकरेक्लेशन पैदा कर रहा है। यह डायग्नोस्टिक प्लॉट श्रृंखला प्रक्षेपवक्र (बाएं) और परिणामी ऑटोकैरेलेशन (दाएं) को दिखाता है:
स्वतःसंबंध के परिणामस्वरूप, मुझे प्रत्येक 10,000 नमूनों में से 4 श्रृंखलाओं से 60-120 के प्रभावी नमूने आकार मिल रहे हैं।
मेरे दो प्रश्न हैं, एक स्पष्ट रूप से वस्तुनिष्ठ और दूसरा व्यक्तिपरक।
पतले होने के अलावा, अधिक श्रृंखलाओं को जोड़ना, और लंबे समय तक नमूना चलाने वाला, मैं इस ऑटोकॉर्लेशन समस्या का प्रबंधन करने के लिए किन तकनीकों का उपयोग कर सकता हूं? "प्रबंधन" से मेरा मतलब है "उचित समय में उचित अनुमान का उत्पादन करना।" कंप्यूटिंग शक्ति के संदर्भ में, मैं इन मॉडलों को मैकबुक प्रो पर चला रहा हूं।
स्वायत्तता की यह डिग्री कितनी गंभीर है? जॉन क्रूसके के ब्लॉग पर यहाँ और दोनों पर चर्चा से पता चलता है कि, यदि हम अभी मॉडल को बहुत पहले चलाते हैं, तो "क्लैपी ऑटोकरेलेशन संभवतः सभी को छोड़ दिया गया है" (क्रूसके) और इसलिए यह वास्तव में एक बड़ी बात नहीं है।
यहां उस मॉडल के लिए 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)
}
}