ধরে নিচ্ছি যে আপনি এন, পি (এন) এর জন্য কোনও বিতরণ বেছে নিতে চান আপনি বেয়েস আইন প্রয়োগ করতে পারেন।
আপনি জানেন যে কে ঘটনাচক্রে ঘটেছে এর সম্ভাবনাটি দ্বি দ্বি বিতরণ দ্বারা নিয়ন্ত্রিত হয়েছে given
পি ( কে | এন ) = (এনট)পিট( 1 - পি)( এন - কে )
আপনি যে জিনিসটি সত্যই জানতে চান সেটি হ'ল এন ইভেন্টগুলি হওয়ার সম্ভাবনা হ'ল আপনি যদি কে পর্যবেক্ষণ করেছেন। বাইয়েস লিখেছেন:
p ( n | k ) =পি ( কে | এন ) পি ( এন )পি ( কে )
মোট সম্ভাবনার উপপাদ্য প্রয়োগ করে আমরা লিখতে পারি:
p ( n | k ) =পি ( কে | এন ) পি ( এন )Σএন'পি ( কে |)এন') পি (এন')
সুতরাং বিতরণ সম্পর্কে আরও তথ্য ছাড়াই আপনি সত্যিকার অর্থে আর যেতে পারবেন না।পি ( এন )
যাইহোক, আপনি জন্য একটি বিতরণ বাছাই করতে চান তাহলে , যার জন্য একটি মান আছে বৃহত্তর চেয়েও , অথবা পর্যাপ্ত শূন্য পাসে, তাহলে আপনি একটি বিট ভালো করতে পারে। উদাহরণস্বরূপ, ধরে নিন যে এর বিতরণ পরিসীমা এ সমান । এই ক্ষেত্রে:পি ( এন )এনপি ( এন ) = 0এন[ 0 ,এনআমি একটি এক্স]
p ( n ) =1এনআমি একটি এক্স
বায়েশিয়ান সূত্রগুলি এটিকে সরল করে:
p ( n | k ) =পি ( কে | এন )Σএন'পি ( কে |)এন')
সমস্যার চূড়ান্ত অংশ হিসাবে, আমি সম্মত হই যে সর্বোত্তম পন্থা হল ওপরে একটি সংশ্লেষক সমষ্টি সম্পাদন করা, ক্রমবর্ধমান সম্ভাব্যতা বন্টন কার্য তৈরি করা এবং 0.95 সীমা না পৌঁছানো পর্যন্ত পুনরাবৃত্তি করা।পি ( এন | কে )
এই প্রশ্নটি এসও থেকে স্থানান্তরিত হয়েছে, পাইথনের খেলনা নমুনা কোডটি নীচে সংযুক্ত করা হয়েছে
import numpy.random
p = 0.8
nmax = 200
def factorial(n):
if n == 0:
return 1
return reduce( lambda a,b : a*b, xrange(1,n+1), 1 )
def ncr(n,r):
return factorial(n) / (factorial(r) * factorial(n-r))
def binomProbability(n, k, p):
p1 = ncr(n,k)
p2 = p**k
p3 = (1-p)**(n-k)
return p1*p2*p3
def posterior( n, k, p ):
def p_k_given_n( n, k ):
return binomProbability(n, k, p)
def p_n( n ):
return 1./nmax
def p_k( k ):
return sum( [ p_n(nd)*p_k_given_n(nd,k) for nd in range(k,nmax) ] )
return (p_k_given_n(n,k) * p_n(n)) / p_k(k)
observed_k = 80
p_n_given_k = [ posterior( n, observed_k, p ) for n in range(0,nmax) ]
cp_n_given_k = numpy.cumsum(p_n_given_k)
for n in xrange(0,nmax):
print n, p_n_given_k[n], cp_n_given_k[n]