এন বার্নোল্লি ট্রায়ালের ক্রম অনুসারে কে সাফল্যের সফলতার সম্ভাবনা


13

আমি 25 টি ট্রায়ালের একটি ব্লকে একটি সারিতে 8 টি ট্রায়াল পাওয়ার সম্ভাবনাটি সন্ধান করার চেষ্টা করছি, এক সারিতে 8 টি ট্রায়াল সঠিক হওয়ার জন্য আপনার কাছে মোট 8 টি ব্লক (25 টি ট্রায়ালের) রয়েছে। অনুমানের ভিত্তিতে কোনও পরীক্ষা সঠিক হওয়ার সম্ভাবনা ১/৩, একটায় আটটি পাওয়ার পরে ব্লকগুলি সমাপ্ত হবে (সুতরাং এক সারিতে 8 টিরও বেশি প্রাপ্তি প্রযুক্তিগতভাবে সম্ভব নয়)। আমি কীভাবে এই ঘটনার সম্ভাবনা সন্ধান করতে যাব? আমি একটি সারিতে 8 পাওয়ার সম্ভাবনা হিসাবে (1/3) ^ 8 ব্যবহারের রেখাগুলি ধরে ভাবছিলাম, আমি যদি ২ 17 টি গুণ করি তবে 25 টি ট্রায়ালের ব্লকে একসাথে 8 পাওয়ার 17 সম্ভাবনা রয়েছে I সম্ভাব্য * 8 টি ব্লক আমি 136 পেয়েছি, 1- (1- (1/3) ^ 8) ^ 136 আমাকে এই পরিস্থিতিতে একসাথে 8 পাওয়ার সম্ভাবনা দেবে বা আমি এখানে মৌলিক কিছু অনুভব করছি?


1
আমি বিশ্বাস করি যে যুক্তি দিয়ে সমস্যাটি হ'ল বিবেচিত ঘটনাগুলি স্বাধীন নয়। উদাহরণস্বরূপ, একটি একক ব্লক বিবেচনা করুন। আমি যদি বলি (ক) সেখানে আট কোনও রান অবস্থান 6 আরম্ভ, (খ) যে যে হয় অবস্থানে 7 এবং (গ) কোন অবস্থানে 8 থেকে শুরু রান এ শুরু একটি রান, কি যে আপনার সম্পর্কে বলুন পজিশনে শুরু হয়ে রান হওয়ার সম্ভাবনা, বলুন, 9 থেকে 15?
কার্ডিনাল

উত্তর:


14

জিনিসগুলি ট্র্যাক করে আপনি একটি সঠিক সূত্র পেতে পারেন ।

যাক সাফল্য এবং সম্ভাব্যতা হতে = 8 একটি সারিতে আপনি গণনা করতে চান সাফল্যের সংখ্যা হতে। এগুলি সমস্যার জন্য স্থির রয়েছে। চলক মানগুলি হ'ল এম , ব্লকে থাকা পরীক্ষার সংখ্যা; এবং জে , ক্রমাগত সাফল্যের সংখ্যা ইতিমধ্যে পর্যবেক্ষণ করা হয়েছে। অবশেষে অর্জনের সম্ভাবনা যাক সামনে পরপর সফলতা মি বিচারের ক্লান্ত লেখা যেতে হয় পি , ( , মি ) । আমরা চাইতে 1 / 3 , 8 (p=1/3k=8mjkmfp,k(j,m)f1/3,8(0,25)

ধরুন আমরা আমাদের দেখেছি সঙ্গে একটি সারিতে সাফল্য মিটার > 0 বিচারের যান। পরবর্তী বিচারের হয় একটি সাফল্য, সম্ভাবনা সঙ্গে রয়েছেন পি যা --in ক্ষেত্রে বৃদ্ধি করা হয় + + 1 -; অথবা অন্যথায় এটি ব্যর্থতা, সম্ভাব্যতা 1 - পি - যার ক্ষেত্রে j 0 এ পুনরায় সেট করা হয়েছে । উভয় ক্ষেত্রেই এম 1 হ্রাস পায় । কোথা হইতেjthm>0pjj+11pj0m1

fp,k(j,m)=pfp,k(j+1,m1)+(1p)fp,k(0,m1).

শুরু অবস্থার হিসেবে আমরা সুস্পষ্ট ফলাফল জন্য মি 0 ( অর্থাত , আমরা ইতিমধ্যে দেখেছি পরপর) এবং পি , ( , মি ) = 0 জন্য - j > মি ( অর্থাত্ , কে পেতে পর্যাপ্ত ট্রায়াল বাকি নেই)fp,k(k,m)=1m0kfp,k(j,m)=0kj>mkএকটি সারিতে)। এটি এখন দ্রুত এবং সোজা (গতিশীল প্রোগ্রামিং ব্যবহার করে বা, কারণ এই সমস্যার প্যারামিটারগুলি এত ছোট, পুনরাবৃত্তি) গণনা করার জন্য

fp,8(0,25)=18p817p945p16+81p1736p18.

যখন এই উৎপাদনের 80897 / 43046721 0,0018793p=1/380897/430467210.0018793

Rএটি অনুকরণ করার জন্য তুলনামূলকভাবে দ্রুত কোড

hits8 <- function() {
    x <- rbinom(26, 1, 1/3)                # 25 Binomial trials
    x[1] <- 0                              # ... and a 0 to get started with `diff`
    if(sum(x) >= 8) {                      # Are there at least 8 successes?
        max(diff(cumsum(x), lag=8)) >= 8   # Are there 8 successes in a row anywhere?
    } else {
        FALSE                              # Not enough successes for 8 in a row
    }
}
set.seed(17)
mean(replicate(10^5, hits8()))

গণনার 3 সেকেন্ড পরে, আউটপুট । যদিও এটি উচ্চ দেখায়, এটি কেবলমাত্র 1.7 স্ট্যান্ডার্ড ত্রুটিগুলি বন্ধ রয়েছে। আমি অন্য 10 6 টি পুনরাবৃত্তি চালিয়েছি , যা 0.001867 ফলন করেছে : কেবলমাত্র 0.3 স্ট্যান্ডার্ড ত্রুটি প্রত্যাশার চেয়ে কম। (ডাবল-চেক হিসাবে, কারণ এই কোডটির পূর্ববর্তী সংস্করণটিতে একটি সূক্ষ্ম বাগ ছিল, আমি ম্যাথমেটিকাতেও 400,000 পুনরাবৃত্তি চালিয়েছিলাম , 0.0018475 এর অনুমান পেয়েছি ))0.002131060.0018670.30.0018475

এই ফল কম এক দশমাংশ হিসেব চেয়ে প্রশ্নে। কিন্তু সম্ভবত আমি সম্পূর্ণরূপে এটা বোঝা না: এর "আপনি 8 মোট ব্লক ... 8 বিচারের একটি সারির সংশোধন পেতে আছে" অন্য ব্যাখ্যা যে উত্তর হচ্ছে সমান চাওয়া 1 - ( 1 - 1 / 3 , 8 ( 0 , 25 ) ) 8 ) = 0,0149358 ...1(1(1/3)8)1360.02051(1f1/3,8(0,25))8)=0.0149358...


13

যদিও @ whuber এর চমৎকার গতিশীল প্রোগ্রামিং সমাধান ভাল মূল্য একটি পঠন, তার রানটাইম হয় বিচারের মোট সংখ্যা সম্মান সঙ্গে আছি আর কাঙ্খিত বিচারের দৈর্ঘ্য যেহেতু ম্যাট্রিক্স exponentiation পদ্ধতি হে ( 3 লগ ( মি ) ) । যদি মি চেয়ে অনেক বড় , নিম্নলিখিত পদ্ধতি দ্রুততর।O(k2m)mkO(k3log(m))mk

উভয় সমাধানই সমস্যাটিকে মার্কোভ চেইন হিসাবে বিবেচনা করে যেখানে রাষ্ট্রগুলি এ পর্যন্ত স্ট্রিংয়ের শেষে সঠিক পরীক্ষার সংখ্যা এবং একটি সারিতে পছন্দসই সঠিক পরীক্ষাগুলি অর্জনের জন্য একটি রাষ্ট্রকে প্রতিনিধিত্ব করে। ট্রানজিশন ম্যাট্রিক্সটি এমন যে সম্ভাবনার সাথে ব্যর্থতা দেখে আপনাকে 0 অবস্থায় আবার প্রেরণ করে এবং অন্যথায় সম্ভাব্যতা 1 - পি আপনাকে পরবর্তী রাজ্যে অগ্রসর করে (চূড়ান্ত রাষ্ট্রটি একটি শোষণকারী রাষ্ট্র)। এই ম্যাট্রিক্সটিকে n তম পাওয়ার থেকে বাড়িয়ে , প্রথম সারিতে মান এবং শেষ কলামটি হ'ল এক সারিতে k = 8 মাথা দেখার সম্ভাবনা । পাইথনে:p1pnk=8

import numpy as np

def heads_in_a_row(flips, p, want):
    a = np.zeros((want + 1, want + 1))
    for i in range(want):
        a[i, 0] = 1 - p
        a[i, i + 1] = p
    a[want, want] = 1.0
    return np.linalg.matrix_power(a, flips)[0, want]

print(heads_in_a_row(flips=25, p=1.0 / 3.0, want=8))

পছন্দসই হিসাবে 0.00187928367413 দেয়।


10

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

: আমাদেরএখনও একটানা 8 টি সঠিক ট্রায়াল হয়নি, এবং শেষ বিচারটি এফ ছিল।A8F

: আমাদেরএখনও একটানা 8 টি সঠিক ট্রায়াল হয়নি, এবং শেষ দুটি ট্রায়াল এফ ডাব্লু ছিলB8FW

: আমাদেরএখনও একটানা 8 টি সঠিক ট্রায়াল হয়নি, এবং শেষ তিনটি ট্রায়াল এফ ডাব্লু ডব্লিউ ছিলC8FWW

: আমাদেরএখনও একটানা 8 টি সঠিক ট্রায়াল হয়নি, এবং শেষ আটটি ট্রায়াল এফ ডাব্লু ডাব্লু ডাব্লু ডাব্লু ডাব্লু ডাব্লু ডাব্লু ছিলH8FWWWWWWW

: আমাদেরএকটানা 8 টি সঠিক ট্রায়াল হয়েছিল!I8

রাষ্ট্র থেকে সরানোর সম্ভাবনা রাষ্ট্র থেকে একটি হল পি = 1 / 3 এবং সম্ভাব্যতা সঙ্গে 1 - পি = 2 / 3 আমরা রাষ্ট্র থাকতে একজন । রাষ্ট্র থেকে বি , রাষ্ট্র থেকে সরানোর সম্ভাবনা সি হল 1 / 3 এবং সম্ভাব্যতা সঙ্গে 2 / 3 আমরা ফিরে সরানো একজন । ইত্যাদি। আমরা যদি প্রথম অবস্থায় থাকি তবে আমরা সেখানে থাকি।BAp=1/31p=2/3ABC1/32/3AI

9×9 MM1M

M=(2/32/32/32/32/32/32/32/301/30000000001/30000000001/30000000001/30000000001/30000000001/30000000001/30000000001/31)

nMnjinI1II1IAn=25M25M9125M25Rexpm

library(expm)

k <- 8   # desired number of correct trials in a row
p <- 1/3 # probability of getting a correct trial
n <- 25  # Total number of trials 

# Set up the transition matrix M

M <- matrix(0, k+1, k+1)

M[ 1, 1:k ] <- (1-p)

M[ k+1, k+1 ] <- 1

for( i in 2:(k+1) ) {

  M[i, i-1] <- p

}

# Name the columns and rows according to the states (A-I)

colnames(M) <- rownames(M) <- LETTERS[ 1:(k+1) ]

round(M,2)

     A    B    C    D    E    F    G    H I
A 0.67 0.67 0.67 0.67 0.67 0.67 0.67 0.67 0
B 0.33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0
C 0.00 0.33 0.00 0.00 0.00 0.00 0.00 0.00 0
D 0.00 0.00 0.33 0.00 0.00 0.00 0.00 0.00 0
E 0.00 0.00 0.00 0.33 0.00 0.00 0.00 0.00 0
F 0.00 0.00 0.00 0.00 0.33 0.00 0.00 0.00 0
G 0.00 0.00 0.00 0.00 0.00 0.33 0.00 0.00 0
H 0.00 0.00 0.00 0.00 0.00 0.00 0.33 0.00 0
I 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.33 1

# Calculate M^25

Mn <- M%^%n
Mn[ (k+1), 1 ]
[1] 0.001879284

AI0.001879284


3

এখানে কিছু আর কোড রয়েছে যা আমি এটি অনুকরণ করতে লিখেছিলাম:

tmpfun <- function() {
     x <- rbinom(25, 1, 1/3)  
     rx <- rle(x)
     any( rx$lengths[ rx$values==1 ] >= 8 )
}

tmpfun2 <- function() {
    any( replicate(8, tmpfun()) )
}

mean(replicate(100000, tmpfun2()))

আমি আপনার সূত্রের চেয়ে কিছুটা ছোট মান পাচ্ছি, সুতরাং আমাদের মধ্যে কারও কারও কোনও ভুল হয়েছে।


আপনার ফাংশনটিতে কি এমন পরীক্ষাগুলি অন্তর্ভুক্ত রয়েছে যেখানে ডান সারিতে 8 টি পাওয়া অসম্ভব, উদাহরণস্বরূপ যেখানে ট্রায়াল 20 এ "রান" শুরু হয়েছিল?
মিশেল

সম্ভবত আমার, আমার আর সিমুলেশনটি আমাকে আরও ছোট মান দিচ্ছে। যদি কেউ কোনও সিমুলেশন নিয়ে বিরোধিতা করে তবে একটি সাধারণ সম্ভাবনার সমস্যা হিসাবে এটি সমাধান করার জন্য বীজগণিতের সমাধান থাকলে আমি কেবল কৌতূহলী।
এসিডনিয়েক্স

1
আমি মনে করি যে উত্তরটি আপনি প্রাপ্ত আউটপুট সরবরাহ করে উন্নত হবে যাতে এটি তুলনা করা যায়। অবশ্যই, এর সাথে হিস্টোগ্রামের মতো কিছু অন্তর্ভুক্ত করা আরও ভাল হবে! কোডটি প্রথম নজরে আমার কাছে ঠিক দেখাচ্ছে। চিয়ার্স। :)
কার্ডিনাল

3

10

M = Table[e[i, j] /. {
    e[9, 1] :> 0,
    e[9, 9] :> 1,
    e[_, 1] :> (1 - p),
    e[_, _] /; j == i + 1 :> p,
    e[_, _] :> 0
  }, {i, 1, 9}, {j, 1, 9}];

x = MatrixPower[M, 25][[1, 9]] // Expand

18p817p945p16+81p1736p18

এ মূল্যায়ন করা হচ্ছেp=1.03.0

x /. p -> 1/3 // N

0.00187928

এটি বিল্টিন Probabilityএবং DiscreteMarkovProcess ম্যাথমেটিকা ফাংশন ব্যবহার করে সরাসরি মূল্যায়ন করা যেতে পারে :

Probability[k[25] == 9, Distributed[k, DiscreteMarkovProcess[1, M /. p -> 1/3]]] // N

0.00187928

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