এন সাফল্য না পাওয়া পর্যন্ত আমি কীভাবে মডেলগুলি ফ্লিপ করতে পারি?


17

আপনি এবং আমি এমন একটি গেম খেলার সিদ্ধান্ত নিয়েছি যেখানে আমরা মুদ্রা উল্টিয়ে পাল্টে ফেলি। সর্বমোট 10 টি মাথা ফ্লিপকারী প্রথম খেলোয়াড় গেমটি জিতল। স্বভাবতই, কার পক্ষে প্রথমে যাওয়া উচিত সে সম্পর্কে একটি বিতর্ক রয়েছে।

এই গেমের সিমুলেশনগুলি দেখায় যে প্লেয়ারকে ফ্লিপ করতে প্লেয়ার দ্বিতীয় প্লেয়ারের চেয়ে প্রথম খেলায় 6% বেশি জয়ী হয় (প্রথম প্লেয়ার প্রায় 53% সময় জিতেছে)। আমি বিশ্লেষণাত্মকভাবে এটির মডেলিং করতে আগ্রহী।

এটি দ্বিপদী র‌্যান্ডম পরিবর্তনশীল নয়, কারণ এখানে কোনও নির্দিষ্ট সংখ্যক বিচারের ব্যবস্থা নেই (কেউ 10 টি মাথা না পাওয়া পর্যন্ত ফ্লিপ করুন)। আমি এটি কিভাবে মডেল করতে পারি? এটা কি নেতিবাচক দ্বিপদী বিতরণ?


যাতে আমার ফলাফলগুলি পুনরায় তৈরি করতে সক্ষম হতে পারে, এখানে আমার অজগর কোডটি রয়েছে:

import numpy as np
from numba import jit


@jit
def sim(N):

    P1_wins = 0
    P2_wins = 0

    for i in range(N):

        P1_heads = 0
        P2_heads = 0
        while True:

            P1_heads += np.random.randint(0,2)

            if P1_heads == 10:
                P1_wins+=1
                break

            P2_heads+= np.random.randint(0,2)
            if P2_heads==10:
                P2_wins+=1
                break
    return P1_wins/N, P2_wins/N


a,b = sim(1000000)

3
যখন আপনি r ব্যর্থ না হওয়া পর্যন্ত একটি মুদ্রা টস করেন এবং তারপরে এই জাতীয় পরীক্ষা শেষ করার আগে ঘটে যাওয়া সাফল্যের সংখ্যার বন্টনের দিকে তাকান, তখন এটি সংজ্ঞা দ্বারা নেতিবাচক দ্বিপদী বিতরণ হয়
টিম

2
আমি 2% মানের পুনরুত্পাদন করতে পারি না। আমি দেখতে পেলাম যে প্রথম খেলোয়াড় 53.290977425133892% সময় জিতেছে ।
হোবার

1
@ হ্যাঁ, আমি বিশ্বাস করি আপনি ঠিক বলেছেন you আমি আমার সিমুলেশনটি আমার চেয়ে কম সময় চালিয়েছি। আমার ফলাফলগুলি আপনার সাথে সামঞ্জস্যপূর্ণ।
দেমেট্রি পানানোস

1
যদি একটি সময় 53% জিততে পারে, অন্যটি 47% হওয়া উচিত, সুতরাং বিবরণটি "প্রথম প্লেয়ার দ্বিতীয় খেলোয়াড়ের তুলনায় 6% বেশি জিততে", "অর্ধবারের চেয়ে 3% বেশি" জড়িত হবে না? নয় (বর্তমানে এটি যেমনটি বলেছে) "যে খেলোয়াড় দ্বিতীয় ফ্লপ করেছেন তার তুলনায় 3% বেশি"
জেসিএম

3
আপনি এই প্রশ্নটি ফাইভটি থ্রি রিটলার এক্সপ্রেস থেকে পেয়েছেন ?
foutandabout

উত্তর:


19

অর্জনের আগে মুদ্রার উলটা পিঠ সংখ্যা বিতরণের মাথা হয় ঋণাত্মক বাইনমিয়াল পরামিতি সঙ্গে 10 এবং 1 / 2 । যাক সম্ভাব্যতা ফাংশন এবং হতে জি বেঁচে থাকার ফাংশন: প্রত্যেকের জন্য এন 0 , ( এন ) , প্লেয়ার এর সুযোগ এন মুদ্রার উলটা পিঠ সামনে 10 মাথা এবং জি ( এন ) , প্লেয়ার এর সুযোগ এন বা একাধিক মুদ্রার উলটা পিঠ সামনে 1010101/2fGn0f(n)n10G(n)n10 মাথা।

কারণ খেলোয়াড়দের স্বাধীনভাবে পাকানো সুযোগ ঠিক ঘূর্ণায়মান প্রথম প্লেয়ার ধিক্কার জানাই মুদ্রার উলটা পিঠ সুযোগ দ্বিতীয় খেলোয়াড় রোলস যে সুযোগ গুন দ্বারা প্রাপ্ত হয় এন বা একাধিক মুদ্রার উলটা পিঠ, এর সমান ( এন ) জি ( এন )nnf(n)G(n)

সমস্ত সম্ভাব্য সমষ্টি প্রথম প্লেয়ারের বিজয়ী সম্ভাবনা দেয়n

n=0f(n)G(n)53.290977425133892%.

এটি প্রায় 3% অর্ধবারের চেয়ে বেশি।

সাধারণভাবে, পরিবর্তে কোনও ধনাত্মক পূর্ণসংখ্যা মি10m , একটি হাইপারজেমেট্রিক ফাংশনের ক্ষেত্রে উত্তর দেওয়া যেতে পারে: এটি সমান

1/2+22m12F1(m,m,1,1/4).

একটি সুযোগ এর মাথা সহ একটি পক্ষপাতমূলক মুদ্রা ব্যবহার করার সময় , এটি সাধারণীকরণ করেp

12+12(p2m)2F1(m,m,1,(1p)2).

এখানে Rমিলিয়ন মিলিয়ন গেমের সিমুলেশন রয়েছে। এটি অনুমানের প্রতিবেদন করে । এটি তাত্ত্বিক ফলাফলের সাথে তুলনা করার জন্য একটি দ্বিপদী অনুমানের পরীক্ষার একটি Z- স্কোর রয়েছে - 0.843 , যা একটি তুচ্ছ পার্থক্য।0.53250.843

n.sim <- 1e6
set.seed(17)
xy <- matrix(rnbinom(2*n.sim, 10, 1/2), nrow=2)
p <- mean(xy[1,] <= xy[2,])
cat("Estimate:", signif(p, 4), 
    "Z-score:", signif((p - 0.532909774) / sqrt(p*(1-p)) * sqrt(n.sim), 3))

1
ঠিক যেমনটি একটি নোট যেমন এক নজরে সুস্পষ্ট নাও হতে পারে, আমাদের উত্তরগুলি সংখ্যায় সম্মত হয়: (.53290977425133892 - .5) * 2 মূলত আমার দেওয়া সম্ভাবনাটি।
ডগল

1
@ ডুগাল এটি উল্লেখ করার জন্য আপনাকে ধন্যবাদ। আমি আপনার উত্তরের দিকে নজর দিয়েছি, দেখেছি এবং জেনেছি যে এটি প্রশ্নের অনুরোধ করা উত্তরের ফর্মের সাথে একমত নয়, আমি বুঝতে পারি নি যে আপনি সঠিকভাবে গণনা করেছেন uted সাধারণভাবে অনুরোধ করা ফর্মের যে কোনও প্রশ্নের উত্তর ফ্রেম করা ভাল ধারণা, যদি সম্ভব হয়: এটি যখন সঠিক এবং উত্তরগুলির তুলনা করা সহজ হয় তখন এটি সনাক্ত করা সহজ করে তোলে। 6.6%
হোয়বার

1
@ যেহেতু আমি "এই গেমের সিমুলেশনগুলি দেখায় যে দ্বিতীয় খেলায় যে খেলোয়াড়ের চেয়ে দ্বিতীয় খেলেন তার চেয়ে প্রথম খেলায় খেলোয়াড়রা 2% (আরও গেমস সিমুলেট করার পরে আরও 3% বেশি) জিতায়" এই বাক্যটির প্রতিক্রিয়া জানছিলাম। আমি ব্যাখ্যা চাই "2% জেতে আরো" যেমন ; সঠিক মানটি প্রকৃতপক্ষে 6.6%% "2% আরও জিতেছে" এর অর্থ দেওয়ার উপায় সম্পর্কে আমি নিশ্চিত নই, এর অর্থ "সময়ের 52% জয়", যদিও স্পষ্টতই এর উদ্দেশ্য ছিল। Pr(A wins)Pr(B wins)=2%
ডুগল

@ ডাওগাল আমি সম্মত হই যে ওপি'র বিবরণ বিভ্রান্তিকর এবং এমনকি ভুল wrong তবে কোড এবং তার ফলাফলটি স্পষ্ট করে দিয়েছে যে তার অর্থ "অন্যান্য খেলোয়াড়ের তুলনায় 3% বেশি" চেয়ে "অর্ধেক সময়ের চেয়ে 3% বেশি" meant
হোয়বার

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

15

আমরা গেমটির মতো মডেল করতে পারি:

  • A1,A2, until they get a total of 10 heads. Let the time index of the 10th heads be the random variable X.
  • Player B does the same. Let the time index of the 10th heads be the random variable Y, which is an iid copy of X.
  • If XY, Player A wins; otherwise Player B wins. That is,
    Pr(A wins)=Pr(XY)=Pr(X>Y)+Pr(X=Y)Pr(B wins)=Pr(Y>X)=Pr(X>Y).

The gap in the win rates is thus

Pr(X=Y)=kPr(X=k,Y=k)=kPr(X=k)2.

As you suspected, X (and Y) are distributed essentially according to a negative binomial distribution. Notations for this vary, but in Wikipedia's parameterization, we have heads as a "failure" and tails as a "success"; we need r=10 "failures" (heads) before the experiment is stopped, and success probability p=12. Then the number of "successes," which is X10, has

Pr(X10=k)=(k+9k)210k,
and the collision probability is
Pr(X=Y)=k=0(k+9k)222k20,
which Mathematica helpfully tells us is 7649952511622614676.6%.

Thus Player B's win rate is Pr(Y>X)46.7%, and Player A's is 619380496116226146753.3%.


the heads need not be in a row, just 10 total. I assume that is what you are fixing.
Demetri Pananos

6
(+1) I like this approach better than the one I posted because it is computationally simpler: it requires only the probability function, which has a simple expression in terms of binomial coefficients.
whuber

1
I've submitted an edit replacing the last paragraph questioning the difference from the other answer with an explanation of how their results are actually the same.
Monty Harder

1

Let Eij be the event that the player on roll flips i heads before the other player flips j heads, and let X be the first two flips having sample space {hh,ht,th,tt} where h means heads and t tails, and let pijPr(Eij).

Then pij=Pr(Ei1j1|X=hh)Pr(X=hh)+Pr(Ei1j|X=ht)Pr(X=ht)+Pr(Eij1|X=th)Pr(X=th)+Pr(Eij|X=tt)Pr(X=tt)

Assuming a standard coin Pr(X=)=1/4 means that pij=1/4[pi1j1+pi1j+pij1+pij]

solving for pij, =1/3[pi1j1+pi1j+pij1]

But p0j=p00=1 and pi0=0, implying that the recursion fully terminates. However, a direct naive recursive implementation will yield poor performance because the branches intersect.

An efficient implementation will have complexity O(ij) and memory complexity O(min(i,j)). Here's a simple fold implemented in Haskell:

Prelude> let p i j = last. head. drop j $ iterate ((1:).(f 1)) start where
  start = 1 : replicate i 0;
  f c v = case v of (a:[]) -> [];
                    (a:b:rest) -> sum : f sum (b:rest) where
                     sum = (a+b+c)/3 
Prelude> p 0 0
1.0
Prelude> p 1 0
0.0
Prelude> p 10 10
0.5329097742513388
Prelude> 

UPDATE: Someone in the comments above asked whether one was suppose to roll 10 heads in a row or not. So let Ekl be the event that the player on roll flips i heads in a row before the other player flips i heads in a row, given that they already flipped k and l consecutive heads respectively.

Proceeding as before above, but this time conditioning on the first flip only, pk,l=11/2[pl,k+1+pl,0] where pil=pii=1,pki=0

This is a linear system with i2 unknowns and one unique solution.

To convert it into an iterative scheme, simply add an iterate number n and a sensitivity factor ϵ:

pk,l,n+1=1/(1+ϵ)[ϵpk,l,n+11/2(pl,k+1,n+pl,0,n)]

Choose ϵ and pk,l,0 wisely and run the iteration for a few steps and monitor the correction term.

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