এখানে অটোমেশনের একটি পদ্ধতি রয়েছে। মতামত অনেক প্রশংসা। মানক অনুশীলনের সাথে তাল মিলিয়ে প্রাথমিক ভিজ্যুয়াল ইন্সপেকশনকে গণনার সাথে প্রতিস্থাপনের চেষ্টা করা হবে এবং এরপরে ভিজ্যুয়াল পরিদর্শন করা হবে।
এই সমাধানটিতে দুটি সম্ভাব্য সমাধান অন্তর্ভুক্ত করা হয়, প্রথমে কিছু থ্রেশহোল্ড পৌঁছানোর আগে শৃঙ্খলার দৈর্ঘ্য অপসারণ করতে বার্ন-ইন গণনা করুন এবং তারপরে পাতলা ব্যবধান গণনা করার জন্য স্বতঃসংশ্লিষ্ট ম্যাট্রিক্স ব্যবহার করে।
- সকল ভেরিয়েবলের জন্য গেমম্যান-রুবিন কনভার্জেনশন ডায়াগোনস্টিক সঙ্কুচিত ফ্যাক্টর (জিআরএসএফ) এর একটি ভেক্টর গণনা করুন
- সমস্ত ভেরিয়েবল জুড়ে grsf কিছুটা দোরের নীচে চলে গেছে এমন ন্যূনতম সংখ্যার সন্ধান করুন, উদাহরণস্বরূপ ১.১, সম্ভবত অনুশীলনে কম
- এই বিন্দু থেকে চেইনের শেষ অবধি শৃঙ্খলাগুলি উপ নমুনা করুন
- সর্বাধিক স্বতঃসংশ্লিষ্ট চেইনের স্বতঃসংশ্লিষ্ট ব্যবহার করে চেইনটি পাতলা করুন
- দর্শনীয়ভাবে ট্রেস, স্বতঃসংশোধন এবং ঘনত্ব প্লটগুলির সাথে সংযোগটি নিশ্চিত করুন
এমএমসিসি অবজেক্টটি এখানে ডাউনলোড করা যাবে: jags.out.Rdata
# jags.out is the mcmc.object with m variables
library(coda)
load('jags.out.Rdata')
# 1. calculate max.gd.vec,
# max.gd.vec is a vector of the maximum shrink factor
max.gd.vec <- apply(gelman.plot(jags.out)$shrink[, ,'median'], 1, max)
# 2. will use window() to subsample the jags.out mcmc.object
# 3. start window at min(where max.gd.vec < 1.1, 100)
window.start <- max(100, min(as.numeric(names(which(max.gd.vec - 1.1 < 0)))))
jags.out.trunc <- window(jags.out, start = window.start)
# 4. calculate thinning interval
# thin.int is the chain thin interval
# step is very slow
# 4.1 find n most autocorrelated variables
n = min(3, ncol(acm))
acm <- autocorr.diag(jags.out.trunc)
acm.subset <- colnames(acm)[rank(-colSums(acm))][1:n]
jags.out.subset <- jags.out.trunc[,acm.subset]
# 4.2 calculate the thinning interval
# ac.int is the time step interval for autocorrelation matrix
ac.int <- 500 #set high to reduce computation time
thin.int <- max(apply(acm2 < 0, 2, function(x) match(T,x)) * ac.int, 50)
# 4.3 thin the chain
jags.out.thin <- window(jags.out.trunc, thin = thin.int)
# 5. plots for visual diagnostics
plot(jags.out.thin)
autocorr.plot(jags.win.out.thin)
--হালনাগাদ--
আর-তে বাস্তবায়িত হয়েছে অটোকোরেলিকেশন ম্যাট্রিক্সের গণনাটি কিছুটা হলেও আকাঙ্ক্ষিত (> কিছু ক্ষেত্রে 15 মিনিট) এর চেয়ে ধীর গতির, তাই জিআর সঙ্কোচনের কারণের গণনা। কিভাবে Stackoverflow উপর ধাপ 4 গতি বাড়াতে সম্পর্কে একটি প্রশ্ন আছে এখানে
- আপডেট অংশ 2--
অতিরিক্ত উত্তর:
রূপান্তরকরণের নির্ণয় করা সম্ভব নয়, কেবল রূপান্তরতার অভাব নির্ণয় করার জন্য (ব্রুকস, জিউডিসি এবং ফিলিপ, 2003)
প্যাকেজ রানজাগগুলি থেকে ফাংশন অটোরুন.জ্যাগগুলি রান দৈর্ঘ্য এবং কনভার্জেন্সি ডায়াগনস্টিকের গণনা স্বয়ংক্রিয় করে দেয়। গেলম্যান রুবিন ডায়াগনস্টিকটি 1.05 এর নীচে না হওয়া পর্যন্ত এটি চেইনটি পর্যবেক্ষণ শুরু করে না; এটি রাফারি এবং লুইস ডায়াগনস্টিক ব্যবহার করে চেইনের দৈর্ঘ্য গণনা করে।
গেলম্যান এট আল (গেলম্যান 2004 বায়েশিয়ান ডেটা অ্যানালাইসিস, পৃষ্ঠা 295, গেলম্যান অ্যান্ড শর্লি, ২০১০ ) লিখেছেন যে তারা শৃঙ্খলার 1 ম অর্ধকে বাতিল করার একটি রক্ষণশীল পন্থা ব্যবহার করে। যদিও তুলনামূলকভাবে সহজ সমাধান, বাস্তবে এটি আমার মডেল এবং ডেটাগুলির নির্দিষ্ট সেটগুলির জন্য সমস্যাটি সমাধান করার পক্ষে যথেষ্ট।
#code for answer 3
chain.length <- summary(jags.out)$end
jags.out.trunc <- window(jags.out, start = chain.length / 2)
# thin based on autocorrelation if < 50, otherwise ignore
acm <- autocorr.diag(jags.out.trunc, lags = c(1, 5, 10, 15, 25))
# require visual inspection, check acceptance rate
if (acm == 50) stop('check acceptance rate, inspect diagnostic figures')
thin.int <- min(apply(acm2 < 0, 2, function(x) match(TRUE, x)), 50)
jags.out.thin <- window(jags.out.trunc, thin = thin.int)