পক্ষপাতদুষ্ট কয়েন ব্যবহার করে সম্ভাবনার with সহ একটি বার্নোল্লি ভেরিয়েবল সিমুলেট করুন


9

কেউ আমাকে কীভাবে সিমুলেট করার কথা বলতে পারেন , যেখানে , একটি কয়েন টস ব্যবহার করে (যতবার আপনি প্রয়োজন হিসাবে) ?Bernoulli(ab)a,bNP(H)=p

আমি প্রত্যাখ্যানের নমুনা ব্যবহার করার কথা ভাবছিলাম, তবে এটি পেরেক দিতে পারিনি।


1
এটি কি কোর্স বা পাঠ্যপুস্তক থেকে মূলত একটি প্রশ্ন? যদি তা হয় তবে দয়া করে [self-study]ট্যাগটি যুক্ত করুন এবং এর উইকিটি পড়ুন । মনে রাখবেন যে আপনার প্রশ্নের শেষে সাহায্যের জন্য আবেদন করার দরকার নেই - আমরা জানি যে এখানে যারা পোস্ট করেন তারা সাহায্যের জন্য আশা করছেন!
সিলভারফিশ

1
(যদিও আমি মনে করতে পারছিনা যেখানে) @Glen_b দ্বারা একটি চমৎকার পোস্টের এখানে কোথাও নেই কেন একটি "সম্ভাব্যতা সঙ্গে পক্ষপাতমূলক মুদ্রা যেমন জিনিস আছে সম্পর্কে ", কিন্তু আমি জানি এই শুধুমাত্র আপনার প্রশ্নের জন্য একটি পেরিফেরাল বিষয় হল! p
সিলভারফিশ

2
@ ডিএসএক্সটন প্রশ্নটি বলছে "আপনার যতটুকু প্রয়োজন"; এটি সম্ভাব্যতা 1 এর সাথে সীমাবদ্ধ হবে, তবে আবদ্ধ নয় (আপনি কোনও নির্দিষ্ট সংখ্যক টসস ছাড়িয়ে যেতে পারেন) তবে সেই ভিত্তিতে আপত্তি করা জ্যামিতিক উত্পন্ন করার পদ্ধতি হিসাবে "মাথা না পাওয়া পর্যন্ত একটি ন্যায্য মুদ্রা টস" বলার মতো হবে object ( 12
rac

1
@ আব্রাকাডাবরা কি এটি একটি শ্রেণীর জন্য অনুশীলন? যদি তা না হয় তবে কীভাবে এটি উত্থিত হয়?
গ্লেন_বি -রিনস্টেট মনিকা 25'16

1
@ গ্লেন_বি: এটি আমার ক্লাসের অনুশীলন নয়। এই চিন্তার এই শৃঙ্খলে এটি আমার কাছে ঘটেছিল ...: ধ্রুপদী সম্ভাবনা অনুসারে, মুদ্রা নিন, আপনি যেমন সংখ্যা বৃদ্ধি করেন, ratio ratio অনুপাত অর্ধেক হয়ে যায়। সুতরাং এটি অবশ্যই পক্ষপাতদুষ্টদের ক্ষেত্রে সত্য হতে পারে ... এর অর্থ একটি নির্দিষ্ট সংখ্যায় রূপান্তর করার জন্য একটি মুদ্রা অর্জন করা, আপনার সেই সংখ্যাটি হওয়ার জন্য প্রয়োজন । এখন আমি ভাবলাম, আমরা যদি কোনও সংখ্যা তৈরি করতে চাই তবে কী আমাদের একটি অন্য সংখ্যা (পরিচিত বা অজানা) রয়েছে? #Heads#tailsP(H)P(H)
আব্রাকাডাবরা

উত্তর:


8

কারণ অনেকগুলি সমাধান রয়েছে, তাই আসুন একটি কার্যকর সমাধান খুঁজে বার করুন ।

এইটির পিছনে ধারণাটি একটি বার্নোল্লি ভেরিয়েবলটি প্রয়োগ করার একটি স্ট্যান্ডার্ড পদ্ধতিতে শুরু হয়: ইউনিফর্ম র্যান্ডম ভেরিয়েবল সাথে প্যারামিটার সাথে তুলনা করুন । যখন , ফিরে ; অন্যথায়, ফিরে ।Ua/bU<a/b10

আমরা ইউনিফর্ম র্যান্ডম নম্বর জেনারেটর হিসাবে কয়েন ব্যবহার করতে পারিp । একটি সংখ্যা উৎপন্ন করার জন্য কোনো বিরতি মধ্যে অবিশেষে , মুদ্রা টুসকি। যখন এটি শীর্ষস্থানীয় হয় , বিরতিগুলির প্রথম ব্যবধানের প্রথম অংশে একটি অভিন্ন মান উত্পন্ন করে; এটি যখন লেজগুলি হয় তখন বিরতিতে শেষের শেষ অংশ থেকে উত্পন্ন করে । এক পর্যায়ে লক্ষ্য অন্তর এতটাই ছোট হয়ে যাবে যে আপনি এটি থেকে কীভাবে একটি সংখ্যা বাছাই করে তা বিবেচ্য নয়: এইভাবে পুনরাবৃত্তি শুরু হয়। এটি স্পষ্টতই এই পদ্ধতিটি অভিন্ন বৈচিত্র উত্পন্ন করে (কোনও পছন্দসই নির্ভুলতা অবধি), যেমন সহজেই আনয়ন দ্বারা প্রমাণিত হয়।U[x,y)XpX1p

এই ধারণাটি দক্ষ নয়, তবে এটি একটি দক্ষ পদ্ধতির দিকে নিয়ে যায়। যেহেতু প্রতিটি পর্যায়ে আপনি কিছু প্রদত্ত বিরতি থেকে একটি সংখ্যা আঁকতে যাচ্ছেন , তাই প্রথমে আপনাকে এটিকে আঁকার দরকার আছে কিনা তা যাচাই করে নিন না কেন? যদি আপনার লক্ষ্য মানটি এই ব্যবধানের বাইরে থাকে তবে আপনি ইতিমধ্যে এলোমেলো মান এবং লক্ষ্যটির মধ্যে তুলনার ফলাফলটি জানেন know সুতরাং, এই অ্যালগরিদম দ্রুত শেষ হতে ঝোঁক। (এটি প্রশ্নে অনুরোধ করা প্রত্যাখ্যান স্যাম্পলিং পদ্ধতি হিসাবে ধরা যেতে পারে ))[x,y)

আমরা এই অ্যালগরিদমকে আরও অনুকূলিত করতে পারি। যে কোনও পর্যায়ে, আমাদের কাছে দুটি কয়েন রয়েছে যা আমরা ব্যবহার করতে পারি: আমাদের মুদ্রাকে পুনর্বিবেচনা করে আমরা এটিকে এমন এক হিসাবে তৈরি করতে পারি যা সম্ভাবনা সহ মাথা হয় । অতএব, পূর্বনির্দেশ হিসাবে আমরা পুনরাবৃত্তভাবে বেছে নিতে পারি যার যে কোনও রিলেবলিং সমাপ্তির জন্য কম প্রত্যাশিত ফ্লিপের দিকে নিয়ে যায়। (এই গণনাটি ব্যয়বহুল পদক্ষেপ হতে পারে))1p

উদাহরণস্বরূপ, সরাসরি বের্নুলি ভেরিয়েবলটি অনুকরণ করতে এটি সহ একটি মুদ্রা ব্যবহার করতে অক্ষম : এটিতে গড়ে প্রায় দশটি ফ্লপ লাগে। তবে যদি আমরা একটি মুদ্রা ব্যবহার করি তবে কেবলমাত্র দুটি আমরা নিশ্চিত হয়ে যাব এবং প্রত্যাশিত ফ্লিপের সংখ্যা মাত্র ।p=0.9(0.01)p=10.0=0.11.2

বিস্তারিত এখানে।

অর্ধ-খোলা ব্যবধান অন্তরগুলিতে ভাগ করুনI=[x,y)

[x,y)=[x,x+(yx)p)[x+(yx)p,y)=s(I,H)s(I,T).

এটি দুটি রূপান্তর এবং যা অর্ধ-খোলা বিরতিতে কাজ করে।s(,H)s(,T)

পরিভাষার বিষয়টি হিসাবে, যদি কোনও আসল সংখ্যার সেট করি তবে তা প্রকাশ করতে দিনI

t<I

মানে কম জন্য আবদ্ধ হয় : সবার জন্য । একইভাবে, মানে একটি ঊর্ধ্ব জন্য আবদ্ধ হয় ।tIt<xxIt>ItI

লিখুন । (বাস্তবে, যুক্তিযুক্ত পরিবর্তে যদি আসল হয় তবে এটির কোনও তাত্পর্য হবে না; আমাদের কেবল ))a/b=tt0t1

কাঙ্ক্ষিত বার্নোল্লি প্যারামিটার সহ একটি ভেরিয়েটেড উত্পাদন করতে এখানে অ্যালগরিদম রয়েছে :Z

  1. সেট এবং ।n=0In=I0=[0,1)

  2. যদিও {টস মুদ্রা উত্পাদন করতে । সেট করুন বৃদ্ধি ।}(tIn)Xn+1In+1=S(In,Xn+1).n

  3. যদি তবে সেট করুন । অন্যথায়, সেট করুন ।t>In+1Z=1Z=0


বাস্তবায়ন

উদাহরণস্বরূপ, এখানে Rফাংশন হিসাবে অ্যালরিদমের একটি বাস্তবায়ন draw। এর আর্গুমেন্টগুলি লক্ষ্য মান এবং অন্তর , প্রাথমিকভাবে । এটি সহায়ক ফাংশন প্রয়োগকারী ব্যবহার করে । যদিও এটির প্রয়োজন নেই, এটি মুদ্রা টসসের সংখ্যাও ট্র্যাক করে। এটি এলোমেলো পরিবর্তনশীল, টসসের গণনা এবং এটি পরিদর্শন করা শেষ ব্যবধানটি প্রদান করে।t[x,y)[0,1)ss

s <- function(x, ab, p) {
  d <- diff(ab) * p
  if (x == 1) c(ab[1], ab[1] + d) else c(ab[1] + d, ab[2])
}
draw <- function(target, p) {
  between <- function(z, ab) prod(z - ab) <= 0
  ab <- c(0,1)
  n <- 0
  while(between(target, ab)) {
    n <- n+1; ab <- s(runif(1) < p, ab, p)
  }
  return(c(target > ab[2], n, ab))
}

এর নির্ভুলতার ব্যবহার এবং পরীক্ষার উদাহরণ হিসাবে, কেসটি এবং । আসুন , অ্যালগরিদম ব্যবহার করে মান আঁকুন, প্রতিবেদন করুন (এবং এর মান ত্রুটি) এবং ব্যবহৃত ফ্লিপের গড় সংখ্যা নির্দেশ করুন।t=1/100p=0.910,000

target <- 0.01
p <- 0.9
set.seed(17)
sim <- replicate(1e4, draw(target, p))

(m <- mean(sim[1, ]))                           # The mean
(m - target) / (sd(sim[1, ]) / sqrt(ncol(sim))) # A Z-score to compare to `target`
mean(sim[2, ])                                  # Average number of flips

এই সিমুলেশনটিতে ছিল মাথা। যদিও এর লক্ষ্যমাত্রার চেয়ে কম , এর জেড-স্কোরটি তাত্পর্যপূর্ণ নয়: এই বিচ্যুতির সুযোগকে দায়ী করা যেতে পারে। গড় সংখ্যা ছিল দশজনের চেয়ে কিছুটা কম less আমরা যদি মুদ্রা ব্যবহার করে গড়টি হত - এটি লক্ষ্যমাত্রার চেয়ে উল্লেখযোগ্যভাবে আলাদা না গড়পড়তাভাবে কেবল ফ্লিপগুলির প্রয়োজন হত।0.00950.010.51549.8861p0.00941.177


আমি আমার উত্তরটিতে এই সমাধান এবং সমাধান 2 এর মধ্যে সাদৃশ্যগুলি দেখতে সহায়তা করতে পারি না। যদিও আমি একটি নিরপেক্ষ মুদ্রা (পক্ষপাতদুষ্ট মুদ্রা সমস্যার সত্যই আকর্ষণীয় সমাধান) ধরেছি এবং বেস -২-তে সমস্ত গণনা / তুলনা করি, আপনি বেসগুলিতে সমস্ত গণনা / তুলনা করেন 10 আপনার চিন্তা কি?
ক্যাম.ড্যাভিডসন.পিলন

1
@ ক্যাম আমি মনে করি আপনি আমার উদাহরণগুলির দ্বারা প্রতারিত হতে পারেন: যদিও তারা বেস 10 তে খুব ভাল নম্বর ব্যবহার করে তবে নির্মাণের কোনও নির্দিষ্ট বেসের সাথে কিছুই করার নেই।
whuber

2
(+1) খুব ঝরঝরে রেজোলিউশন। অপ্টিমাইজেশান upper- বাধা হয়ে দাঁড়ায় এবং নিম্ন-সীমান্ত মত শক্তির এবং / অথবা । সিমুলেটেড বার্নোলিসের সংখ্যার দিক থেকে অনুকূল দ্বৈতত্ত্ব খুঁজে পাওয়া ভাল লাগবে। a/bpn(1p)m(n+mm)pn(1p)m
শি'আন

5

এখানে একটি সমাধান (কিছুটা অগোছালো, তবে এটি আমার প্রথম ছুরিকা)। আপনি আসলে উপেক্ষা করতে পারেন এবং WLOG অনুমান । কেন? দুটি পক্ষপাতদুষ্ট কয়েন ফ্লিপ থেকে একটি নিরপেক্ষ কয়েন ফ্লিপ উত্পন্ন করতে একটি চতুর অ্যালগরিদম বিদ্যমান । সুতরাং আমরা ধরে নিতে পারি ।P(H)=pP(H)=1/2P(H)=1/2

একটি উত্পন্ন করার জন্য , আমি দুটি সমাধান সম্পর্কে ভাবতে পারি (প্রথমটি আমার নিজস্ব নয়, তবে দ্বিতীয়টি একটি সাধারণীকরণ):Bernoulli(ab)

সমাধান ঘ

নিরপেক্ষ মুদ্রাটি বার বার ফ্লিপ করুন । যদি মাথা উপস্থিত না থাকে তবে আবার শুরু করুন। যদি মাথা হয় বর্তমান, রিটার্ন কিনা প্রথম মুদ্রা একটি মাথা বা না (কারণ )baaP(first coin is heads | a heads in b coins)=ab

সমাধান 2

এটি এর যে কোনও মান পর্যন্ত বাড়ানো যেতে পারে । বাইনারি আকারে লিখুন । উদাহরণস্বরূপ,Bernoulli(p)p0.1=0.0001100110011001100110011...base 2

আমরা কয়েন ফ্লিপ ব্যবহার করে একটি নতুন বাইনারি নম্বর তৈরি করব। দিয়ে শুরু করুন এবং কোন মাথা (1) বা লেজ (0) প্রদর্শিত হবে তার উপর নির্ভর করে অঙ্কগুলি যুক্ত করুন। প্রতিটি ফ্লিপ এ, আপনার নতুন বাইনারি নম্বরটি বাইনারি উপস্থাপনার সাথে একই অঙ্ক পর্যন্ত তুলনা করুন । অবশেষে দুটি বিভক্ত হবে, এবং আপনার বাইনারি সংখ্যার চেয়ে বেশি হলে ফিরে আসবে ।0.p bin(p)

পাইথনে:

def simulate(p):
    binary_p = float_to_binary(p)
    binary_string = '0.'
    index = 3
    while True:
        binary_string += '0' if random.random() < 0.5 else '1'
        if binary_string != binary_p[:index]:
            return binary_string < binary_p[:index]
        index += 1

কিছু প্রমাণ:

np.mean([simulate(0.4) for i in range(10000)])

প্রায় 0.4 (তবে দ্রুত নয়)


উত্তম উত্তর, তবে আপনি কী আপনার যুক্তি দিয়ে ব্যাখ্যা করতে পারবেন 1 অযৌক্তিক পি এর জন্য কীভাবে করবেন?
আব্রাকাডাবরা

2
@ আব্রাচাডাব্রা কেন এর যৌক্তিকতা বিবেচনা করবে? p
গ্লেন_বি -রিনস্টেট মনিকা

@ অ্যাব্রাকাডাব্রা: এর মান যাই হোক না কেন , পাওয়ার সম্ভাবনা এবং একই, যথা , তাই অন্যটির বিপরীতে একটি পাওয়ার সম্ভাবনা । p(0,1)(1,0)p(1p)1/2
শি'আন

4

আমি একটি সহজ সমাধান দেখতে পাচ্ছি, তবে এটি করার অনেক উপায় রয়েছে সন্দেহ নেই, সম্ভবত এটির চেয়ে কিছু সহজ। এই পদ্ধতির দুটি ধাপে বিভক্ত করা যেতে পারে:

  1. সমমানের সম্ভাব্যতার সাথে দুটি ইভেন্ট থেকে উত্পন্ন করে একটি অনন্য কয়েন-টসিং প্রক্রিয়া দেওয়া হয় (নির্দিষ্ট মুদ্রার সংমিশ্রণ এবং পদ্ধতিটি যার দ্বারা এটি সম্ভাব্য দিয়ে মাথা তৈরি করে )। আমরা এই দুটি সমান সম্ভাব্য ইভেন্টগুলি , এবং । [এটির জন্য একটি সহজ পদ্ধতি রয়েছে যার জন্য দুটি সম-সম্ভাব্য ফলাফল তৈরি করতে এবং জোড়া লাগতে হবে, অন্য সমস্ত ফলাফলের সাথে একটি নতুন জুড়ি তৈরি হয় আবার চেষ্টা করার জন্য রোলস]pHTH=(H,T)T=(T,H)

  2. এখন আপনি সিমুলেটেড ফেয়ার কয়েন ব্যবহার করে দুটি শোষণকারী রাষ্ট্রের সাথে একটি এলোমেলো হাঁটা উত্পাদন করুন। উত্স থেকে শোষণকারী রাষ্ট্রগুলির দূরত্বটি বেছে নেওয়ার মাধ্যমে (এর উপরে একটি এবং এর নীচে একটি), আপনি উপরের শোষণকারী রাষ্ট্রটিকে পূর্ণসংখ্যার পছন্দসই অনুপাত হিসাবে বলে শোষণের সুযোগটি সেট করতে পারেন। বিশেষত, আপনি যদি উপরের শোষণকারী বাধাটি এবং নীচে এবং (এবং উত্স থেকে প্রক্রিয়া শুরু করুন), এবং শোষণ না হওয়া পর্যন্ত এলোমেলো হাঁটা চালান, উপরের বাধাটিতে শোষণের সম্ভাবনাটি হ'ল ।a(ba)aa+(ba)=ab

    (এটি দেখানোর জন্য এখানে কিছু গণনা করা দরকার, তবে পুনরাবৃত্ত সম্পর্কের সাথে কাজ করে আপনি সম্ভাব্যতাগুলি খুব সহজেই খুঁজে পেতে পারেন ... বা আপনি অসীম সিরিজগুলি সংক্ষেপণের মাধ্যমে এটি করতে পারেন ... বা অন্য কোনও উপায় রয়েছে))

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.