এমসিএমসি মেট্রোপলিস-হেস্টিংস বৈচিত্রগুলির সাথে বিভ্রান্ত: র্যান্ডম-ওয়াক, নন-র্যান্ডম-ওয়াক, ইন্ডিপেন্ডেন্ট, মেট্রোপলিস


15

গত কয়েক সপ্তাহ ধরে আমি এমসিসিএম এবং মেট্রোপলিস-হেস্টিংস অ্যালগরিদম (গুলি) বোঝার চেষ্টা করছি। যতবারই আমি এটি বুঝতে পারি আমি বুঝতে পারি যে আমি ভুল। আমি বেশিরভাগ কোড উদাহরণগুলি অন-লাইনে এমন কিছু বাস্তবায়ন করি যা বর্ণনার সাথে সামঞ্জস্যপূর্ণ নয়। অর্থাত্: তারা বলে যে তারা মেট্রোপলিস-হেস্টিংস বাস্তবায়ন করে তবে তারা প্রকৃতপক্ষে এলোমেলো হাঁটা মহানগরীর প্রয়োগ করে। অন্যরা (প্রায় সর্বদা) নিঃশব্দে হেস্টিংস সংশোধন অনুপাতের বাস্তবায়ন এড়িয়ে যান কারণ তারা প্রতিসাম্প্রতিক প্রস্তাব বিতরণ ব্যবহার করছেন। প্রকৃতপক্ষে, আমি এমন একটি সাধারণ উদাহরণ পাইনি যা অনুপাতটি এখনও পর্যন্ত গণনা করে। এটি আমাকে আরও বিভ্রান্ত করে তোলে। কেউ কি আমাকে নীচের কোডের উদাহরণ (কোনও ভাষায়) দিতে পারেন:

  • হ্যাস্টিংস সংশোধন অনুপাত গণনা সহ ভ্যানিলা নন-র্যান্ডম ওয়াক মেট্রোপলিস-হেস্টিংস অ্যালগরিদম (প্রতিসাম্প্রতিক প্রস্তাব বিতরণ ব্যবহার করার সময় এটি 1 এরও শেষ হবে)।
  • ভ্যানিলা র্যান্ডম ওয়াক মেট্রোপলিস-হেস্টিংস অ্যালগরিদম।
  • ভ্যানিলা ইন্ডিপেন্ডেন্ট মেট্রোপলিস-হেস্টিংস অ্যালগরিদম।

মেট্রোপলিস অ্যালগরিদম সরবরাহ করার দরকার নেই কারণ আমি যদি মেট্রোপলিস এবং মেট্রোপলিস-হেস্টিংসের মধ্যে একমাত্র পার্থক্যটি ভুল না করি তবে প্রথমটি সর্বদা একটি প্রতিসম বিতরণ থেকে নমুনা দেয় এবং এইভাবে তাদের হেস্টিংস সংশোধন অনুপাত থাকে না। অ্যালগরিদমের বিস্তারিত ব্যাখ্যা দেওয়ার দরকার নেই। আমি বেসিকগুলি বুঝতে পারি তবে মহানগর-হেস্টিংস অ্যালগরিদমের বিভিন্ন পরিবর্তনের জন্য আমি সমস্ত ভিন্ন নামের সাথে বিভ্রান্ত হয়েছি কিন্তু আপনি কীভাবে ব্যবহারিকভাবে ভ্যানিলা নন-এলোমেলো-ওয়াক এমএইচ-তে হেস্টিংস সংশোধন অনুপাতটি প্রয়োগ করেছেন তা নিয়েও আমি বিভ্রান্ত। দয়া করে আটকানো লিঙ্কগুলি অনুলিপি করবেন না যা আমার প্রশ্নের আংশিক উত্তর দেয় কারণ সম্ভবত আমি তাদের ইতিমধ্যে দেখেছি। এই লিঙ্কগুলি আমাকে এই বিভ্রান্তির দিকে নিয়ে গিয়েছিল। ধন্যবাদ.

উত্তর:


10

এখানে আপনি যান - তিনটি উদাহরণ। যুক্তিটি আরও পরিষ্কার করার জন্য কোডটি বাস্তব প্রয়োগের চেয়ে অনেক কম দক্ষ করে তুলেছি (আশা করি।)

# We'll assume estimation of a Poisson mean as a function of x
x <- runif(100)
y <- rpois(100,5*x)  # beta = 5 where mean(y[i]) = beta*x[i]

# Prior distribution on log(beta): t(5) with mean 2 
# (Very spread out on original scale; median = 7.4, roughly)
log_prior <- function(log_beta) dt(log_beta-2, 5, log=TRUE)

# Log likelihood
log_lik <- function(log_beta, y, x) sum(dpois(y, exp(log_beta)*x, log=TRUE))

# Random Walk Metropolis-Hastings 
# Proposal is centered at the current value of the parameter

rw_proposal <- function(current) rnorm(1, current, 0.25)
rw_p_proposal_given_current <- function(proposal, current) dnorm(proposal, current, 0.25, log=TRUE)
rw_p_current_given_proposal <- function(current, proposal) dnorm(current, proposal, 0.25, log=TRUE)

rw_alpha <- function(proposal, current) {
   # Due to the structure of the rw proposal distribution, the rw_p_proposal_given_current and
   # rw_p_current_given_proposal terms cancel out, so we don't need to include them - although
   # logically they are still there:  p(prop|curr) = p(curr|prop) for all curr, prop
   exp(log_lik(proposal, y, x) + log_prior(proposal) - log_lik(current, y, x) - log_prior(current))
}

# Independent Metropolis-Hastings
# Note: the proposal is independent of the current value (hence the name), but I maintain the
# parameterization of the functions anyway.  The proposal is not ignorable any more
# when calculation the acceptance probability, as p(curr|prop) != p(prop|curr) in general.

ind_proposal <- function(current) rnorm(1, 2, 1) 
ind_p_proposal_given_current <- function(proposal, current) dnorm(proposal, 2, 1, log=TRUE)
ind_p_current_given_proposal <- function(current, proposal) dnorm(current, 2, 1, log=TRUE)

ind_alpha <- function(proposal, current) {
   exp(log_lik(proposal, y, x)  + log_prior(proposal) + ind_p_current_given_proposal(current, proposal) 
       - log_lik(current, y, x) - log_prior(current) - ind_p_proposal_given_current(proposal, current))
}

# Vanilla Metropolis-Hastings - the independence sampler would do here, but I'll add something
# else for the proposal distribution; a Normal(current, 0.1+abs(current)/5) - symmetric but with a different
# scale depending upon location, so can't ignore the proposal distribution when calculating alpha as
# p(prop|curr) != p(curr|prop) in general

van_proposal <- function(current) rnorm(1, current, 0.1+abs(current)/5)
van_p_proposal_given_current <- function(proposal, current) dnorm(proposal, current, 0.1+abs(current)/5, log=TRUE)
van_p_current_given_proposal <- function(current, proposal) dnorm(current, proposal, 0.1+abs(proposal)/5, log=TRUE)

van_alpha <- function(proposal, current) {
   exp(log_lik(proposal, y, x)  + log_prior(proposal) + ind_p_current_given_proposal(current, proposal) 
       - log_lik(current, y, x) - log_prior(current) - ind_p_proposal_given_current(proposal, current))
}


# Generate the chain
values <- rep(0, 10000) 
u <- runif(length(values))
naccept <- 0
current <- 1  # Initial value
propfunc <- van_proposal  # Substitute ind_proposal or rw_proposal here
alphafunc <- van_alpha    # Substitute ind_alpha or rw_alpha here
for (i in 1:length(values)) {
   proposal <- propfunc(current)
   alpha <- alphafunc(proposal, current)
   if (u[i] < alpha) {
      values[i] <- exp(proposal)
      current <- proposal
      naccept <- naccept + 1
   } else {
      values[i] <- exp(current)
   }
}
naccept / length(values)
summary(values)

ভ্যানিলা স্যাম্পলারের জন্য, আমরা পাই:

> naccept / length(values)
[1] 0.1737
> summary(values)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  2.843   5.153   5.388   5.378   5.594   6.628 

যা স্বীকৃতি স্বল্পতার সম্ভাবনা, তবুও ... প্রস্তাবটি টিউন করা এখানে সহায়তা করবে বা অন্য একটি গ্রহণ করবে। এখানে এলোমেলো পদক্ষেপ প্রস্তাবের ফলাফল:

> naccept / length(values)
[1] 0.2902
> summary(values)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  2.718   5.147   5.369   5.370   5.584   6.781 

অনুরূপ ফলাফল, যেমনটি আশা করা যায় এবং আরও ভাল গ্রহণযোগ্যতার সম্ভাবনা (একটি প্যারামিটার সহ ~ 50% লক্ষ্য করে))

এবং, সম্পূর্ণতার জন্য, স্বাধীনতার নমুনা:

> naccept / length(values)
[1] 0.0684
> summary(values)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  3.990   5.162   5.391   5.380   5.577   8.802 

যেহেতু এটি উত্তরোত্তর আকারের সাথে "অভিযোজিত" হয় না, এটির দরিদ্রতম গ্রহণযোগ্যতা সম্ভাবনা থাকে এবং এই সমস্যার জন্য ভালভাবে কাজ করা সবচেয়ে কঠিন।

নোট করুন যে সাধারণভাবে বলতে গেলে আমরা ফ্যাট লেজযুক্ত প্রস্তাবগুলি পছন্দ করি, তবে এটি সম্পূর্ণ অন্য বিষয়।


প্রশ্নঃনমুনা ভাল পয়েন্ট জন্য উত্তর বিতরণ অনুরূপ হওয়া উচিত। আমি কি সঠিক? বা এমন কোনও পরিস্থিতি রয়েছে যেখানে আমরা এটিকে পছন্দ করব?
ফ্লয়েড

1
@ ফ্লয়েড - এটি বেশ কয়েকটি পরিস্থিতিতে কার্যকর, উদাহরণস্বরূপ, যদি আপনার কাছে বিতরণের কেন্দ্রের অবস্থান সম্পর্কে একটি সঠিক ধারণা থাকে (যেমন, আপনি এমএলই বা এমওএম অনুমান গণনা করেছেন) এবং চর্বিযুক্ত লেজযুক্ত প্রস্তাবটি বেছে নিতে পারেন বিতরণ, বা যদি পুনরাবৃত্তি প্রতি গণনার সময় খুব কম হয় তবে আপনি খুব দীর্ঘ শৃঙ্খলা চালাতে পারবেন (যা স্বীকৃতির হার কমিয়ে দেয়) - ফলে আপনাকে বিশ্লেষণ এবং প্রোগ্রামিং সময় সাশ্রয় করতে পারে যা এমনকি অদক্ষ রানটাইমের চেয়ে অনেক বেশি হতে পারে। এটি প্রথম প্রথম চেষ্টা করার প্রস্তাব হবে না, যদিও এটি সম্ভবত এলোমেলো পদচারনা।
জোবোম্যান

আমার মন্তব্যের জবাব দেওয়ার জন্য সত্যিই আপনাকে অনেক ধন্যবাদ। স্বাধীন মহানগর-হেস্টিংস সম্পর্কে আরও একটি অদ্ভুত বিষয় রয়েছে। দ্যপ্রশ্নঃ কোনও রূপান্তর বিতরণ নয় (কারণ এটি ধ্রুবক), যার অর্থ এটি প্রতিনিধিত্ব করে না পি(এক্সটি+ +1|এক্সটি)যার অর্থ স্বাধীন মেট্রোপলিস-হেস্টিংস এমসিএমসি বা মার্কোভ চেইন নয়। আমি কি সঠিক?
ফ্লয়েড

1
এটা নিশ্চিত. শুধু কারণপি(এক্সটি+ +1|এক্সটি)=পি(এক্সটি+ +1)এর অর্থ এই নয় যে এটি একটি মার্কভ চেইন নয়। এটি কেবলমাত্র একটি যা বর্তমান অবস্থার উপরও নির্ভর করে না, যা অন্তত এমসি বিশ্বে "কেবলমাত্র বর্তমান রাষ্ট্রের উপর নির্ভরশীল" এর একটি বিশেষ ক্ষেত্রে।
জোবোম্যান

1

দেখা:

নির্মাণ করে, অ্যালগরিদম স্বাভাবিককরণ ধ্রুবকের উপর নির্ভর করে না, যেহেতু গুরুত্বপূর্ণ বিষয়গুলি পিডিএফ এর অনুপাত। অ্যালগরিদমের তারতম্য যা প্রস্তাব পিডিএফকুই()হ্যাস্টিং (1970) এর কারণে প্রতিসাম্য নয় এবং এই কারণে অ্যালগরিদমকে প্রায়শই মেট্রোপলিস-হেস্টিংও বলা হয়। অধিকন্তু, এখানে যা বর্ণিত হয়েছে তা হ'ল স্থানীয় মেট্রোপলিস অ্যালগরিদম, স্থানীয়টির বিপরীতে, যেখানে একটি চক্র কেবলমাত্র একটি উপাদানকে প্রভাবিত করেএক্স

Wikipedia নিবন্ধটি একটি ভাল পরিপূরক পঠিত। যেমন আপনি দেখতে পাচ্ছেন, মেট্রোপলিসেও একটি "সংশোধন অনুপাত" রয়েছে তবে উপরে উল্লিখিত হিসাবে, হেস্টিংস এমন একটি পরিবর্তন প্রবর্তন করেছে যা প্রতিসম-প্রস্তাবিত বিতরণ বিতরণের অনুমতি দেয়।

mcmcকমান্ডের অধীনে আর প্যাকেজে মহানগর অ্যালগরিদম প্রয়োগ করা হয়েছে metrop()

অন্যান্য কোড উদাহরণ:

http://www.mas.ncl.ac.uk/~ndjw1/teaching/sim/metrop/

http://pcl.missouri.edu/jeff/node/322

http://darrenjw.wordpress.com/2010/08/15/metropolis-hastings-mcmc-algorithms/


ধন্যবাদ তোমার উত্তরের জন্য. দুর্ভাগ্যক্রমে এটি আমার কোনও প্রশ্নের উত্তর দেয় না। আমি কেবল র্যান্ডম-ওয়াক মেট্রোপলিস, নন-র্যান্ডম-ওয়াক মেট্রোপলিস এবং স্বতন্ত্র এমএইচ দেখি। dnorm(can,mu,sig)/dnorm(x,mu,sig)প্রথম লিঙ্কটির স্বাধীনতার নমুনায় হ্যাস্টিংস সংশোধন অনুপাত 1 এর সমান নয় I আমি ভেবেছিলাম যে প্রতিসম প্রস্তাব বিতরণ ব্যবহার করার সময় এটি 1 এর সমান হবে। এটি কি কারণ এটি একটি ইন্ডিপেনডেইন নমুনা এবং সরল নন-র্যান্ডম-ওয়াক এমএইচ নয়? যদি হ্যাঁ, প্লেইন নন-র্যান্ডম-ওয়াক এমএইচ-এর হেস্টিংসের অনুপাত কী?
অ্যাস্ট্রোনে

@ অস্ট্রন - এমএইচ গ্রহণযোগ্যতা সম্ভাবনার গণনা করার সময় একটি প্রতিসাম্প্রতিক প্রস্তাব বিতরণ ব্যবহার প্রস্তাবটিকে অজ্ঞান করতে যথেষ্ট নয়। আপনার উদাহরণ কেন দেখায়। আপনার যা দরকার তা হ'লপি(বর্তমান|প্রস্তাব)=পি(প্রস্তাব|বর্তমান)অর্থাত্, যদি অনুপাত 1 সমান না হয়, আপনি সেগুলি উপেক্ষা করতে পারবেন না।
jboman
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.