आदर्श मोंटे कार्लो एल्गोरिदम स्वतंत्र क्रमिक यादृच्छिक मूल्यों का उपयोग करता है । MCMC में, क्रमिक मूल्य स्वतंत्र नहीं हैं, जो विधि को आदर्श मोंटे कार्लो की तुलना में धीमा बनाता है; हालाँकि, यह जितनी तेजी से मिक्स होता है, उतनी ही तेजी से निर्भरता क्रमिक पुनरावृत्तियों में तय होती है, और जिस तेजी से यह परिवर्तित होता है।
¹ मैं यहाँ मतलब है कि लगातार मूल्यों जल्दी से प्रारंभिक अवस्था की "लगभग स्वतंत्र", या कहें कि मूल्य दिया जाता है एक बिंदु पर, मूल्यों एक्स ń + कश्मीर की जल्दी से "लगभग स्वतंत्र" बन एक्स एन के रूप में कश्मीर बढ़ता है, इसलिए, जैसा कि कखली टिप्पणियों में कहता है, "श्रृंखला राज्य के एक निश्चित क्षेत्र में नहीं अटकती है"।XnXń+kXnk
संपादित करें: मुझे लगता है कि निम्नलिखित उदाहरण मदद कर सकता है
कल्पना करें कि आप MCMC द्वारा पर एक समान वितरण के माध्यम का अनुमान लगाना चाहते हैं । आप क्रमबद्ध अनुक्रम ( 1 , … , n ) से शुरू करते हैं ; प्रत्येक चरण पर, आपने k > 2 तत्वों को अनुक्रम में चुना और बेतरतीब ढंग से उन्हें फेरबदल किया। प्रत्येक चरण पर, स्थिति 1 पर तत्व दर्ज किया गया है; यह समान वितरण में परिवर्तित होता है। K का मान मिश्रण की कठोरता को नियंत्रित करता है: जब k = 2 , यह धीमा है; जब k = n , क्रमिक तत्व स्वतंत्र होते हैं और मिश्रण तेज होता है।{1,…,n}(1,…,n)k>2kk=2k=n
यहाँ इस MCMC एल्गोरिथ्म के लिए एक आर समारोह है:
mcmc <- function(n, k = 2, N = 5000)
{
x <- 1:n;
res <- numeric(N)
for(i in 1:N)
{
swap <- sample(1:n, k)
x[swap] <- sample(x[swap],k);
res[i] <- x[1];
}
return(res);
}
आइए इसे लिए लागू करें , और MCMC पुनरावृत्तियों के साथ माध्य μ = 50 के क्रमिक अनुमान को प्लॉट करें :n=99μ=50
n <- 99; mu <- sum(1:n)/n;
mcmc(n) -> r1
plot(cumsum(r1)/1:length(r1), type="l", ylim=c(0,n), ylab="mean")
abline(mu,0,lty=2)
mcmc(n,round(n/2)) -> r2
lines(1:length(r2), cumsum(r2)/1:length(r2), col="blue")
mcmc(n,n) -> r3
lines(1:length(r3), cumsum(r3)/1:length(r3), col="red")
legend("topleft", c("k = 2", paste("k =",round(n/2)), paste("k =",n)), col=c("black","blue","red"), lwd=1)
आप यहाँ देख सकते हैं कि (काले रंग में) के लिए, अभिसरण धीमा है; के लिए कश्मीर = 50 (नीले रंग में), यह तेजी से होता है, लेकिन अभी भी साथ की तुलना में धीमी कश्मीर = 99 (लाल रंग में)।k=2k=50k=99
आप निश्चित संख्या के पुनरावृत्तियों के बाद अनुमानित साधनों के वितरण के लिए हिस्टोग्राम की भी साजिश कर सकते हैं, जैसे कि 100 पुनरावृत्तियों:
K <- 5000;
M1 <- numeric(K)
M2 <- numeric(K)
M3 <- numeric(K)
for(i in 1:K)
{
M1[i] <- mean(mcmc(n,2,100));
M2[i] <- mean(mcmc(n,round(n/2),100));
M3[i] <- mean(mcmc(n,n,100));
}
dev.new()
par(mfrow=c(3,1))
hist(M1, xlim=c(0,n), freq=FALSE)
hist(M2, xlim=c(0,n), freq=FALSE)
hist(M3, xlim=c(0,n), freq=FALSE)
k=2k=50k=99
> mean(M1)
[1] 19.046
> mean(M2)
[1] 49.51611
> mean(M3)
[1] 50.09301
> sd(M2)
[1] 5.013053
> sd(M3)
[1] 2.829185