Серьезная углубленная проблема вероятностей подбрасывания монет


10

Допустим, я делаю 10 000 бросков монеты. Я хотел бы знать вероятность того, сколько сальто потребуется, чтобы получить 4 или более последовательных головы подряд.

Счет будет работать следующим образом: один последовательный раунд бросков будет считаться только головами (4 головы или более). Когда хвост поражает и ломает полосу голов, счет начинается снова со следующего броска. Это будет повторяться для 10000 сальто.

Я хотел бы знать вероятность не только 4 или более голов подряд, но 6 или более и 10 или более. Чтобы уточнить, будет ли достигнута полоса из 9 голов, она будет подсчитана как 1 полоса 4 или более (и / или 6 или более), а не 2 отдельные полосы. Например, если монета пришла THTHTHTHHHHH /// THAHTHT .... счет будет 13 и начнется снова на следующих хвостах.

Допустим, данные оказываются сильно искаженными вправо; среднее значение составляет 40 сальто в среднем, что требуется для достижения полосы 4 или более, а распределение составляет u = 28. Очевидно, перекос.

Я делаю все возможное, чтобы найти способ понять смысл описательных данных, за исключением того, что на данный момент я ничего не нашел.

Я хочу найти какой-то способ извлечь из этого разумную вероятность. Как нормальная кривая, где +/- 1 SD составляет 68% и т. Д. Я посмотрел на нормализацию логов, и это действительно используется только для параметрического тестирования, которое не является моей целью.

Мне рассказали о бета-дистрибутивах, но каждое мое предложение было довольно запутанным. Я задал этот вопрос год назад и получил некоторое представление, но, к сожалению, у меня до сих пор нет ответа. Спасибо всем, у кого есть идеи.


Я, наверное, должен немного уточнить. 1) Я ищу прочь, чтобы иметь смысл описательных данных о количестве последовательных головок выше 4 в 1000 сальто (что-то вроде вероятности нормальной кривой +/- 1 SD = 68%) из искаженного набора данных. 2) Рекомендуется использовать бета-дистрибутив, но ЛЮБОЕ другое предложение было бы здорово!
Дан

1
Дэн, я только что заметил, что твой пример набора голов и хвостов включает "A".
Glen_b

Внесенные вами изменения являются большим улучшением, но нам нужно внести еще некоторые изменения. Где вы говорите «а распределение - это = 28», что именно вы имеете в виду? Вы говорите о медиане?
Glen_b

@ Возможно, бета-версия могла бы учитывать эту проблему только в том случае, если вы использовали байесовский подход и оценивали вероятность появления головок, а затем применяли это распределение (и связанную с ним неопределенность) к математическому результату указанной вами задачи.
AdamO

Ответы:


12

Если я правильно понял, то проблема состоит в том, чтобы найти распределение вероятностей для времени, в которое заканчивается первый прогон или более голов.n

Изменить Вероятности можно точно и быстро определить с помощью умножения матриц, а также можно аналитически вычислить среднее значение как а дисперсию - как где , но, вероятно, не существует простой замкнутой формы для самого распределения. Выше определенного числа подбрасываний монет распределение по сути является геометрическим распределением: имеет смысл использовать эту форму для больших .σ 2 = 2 n + 2 ( μ - n - 3 ) - μ 2 + 5 μ μ = μ - + 1 тμ=2n+11σ2=2n+2(μn3)μ2+5μμ=μ+1t

Эволюция во времени распределения вероятностей в пространстве состояний может быть смоделирована с использованием матрицы переходов для состояний, где количество последовательных подбрасываний монет. Состояния следующие:n =k=n+2n=

  • Штат , без головыH0
  • Государство , возглавляю, i 1 i ( n - 1 )Hii1i(n1)
  • Штат , или более глав nHnn
  • Состояние , или более голов, за которыми следует хвост nHn

Как только вы попадете в состояние вы не сможете вернуться ни в одно из других состояний.H

Вероятности перехода состояний в состояния следующие

  • Состояние : вероятность из ,1H0 Hя12Hi , т.е. включает себя, но не состояние H ni=0,,n1Hn
  • Состояние : вероятность 1Hi изHi-112Hi1
  • Состояние : вероятность 1Hn изHn-1,Hn, т.е. из состояния сn-1головами и самого себя12Hn1,Hnn1
  • Состояние : вероятность 1H изHnи вероятность 1 изH(сама по себе)12HnH

Так, например, для это дает матрицу переходаn=4

X={H0H1H2H3H4HH01212121200H11200000H20120000H30012000H400012120H0000121}

Для случая начальный вектор вероятностей p равен p = ( 1 , 0 , 0 , 0 , 0 , 0 ) . В общем случае исходный вектор имеет p i = { 1 i = 0 0 i > 0n=4pp=(1,0,0,0,0,0)

pi={1i=00i>0

Вектор - это распределение вероятностей в пространстве для любого заданного времени. Требуемый cdf представляет собой cdf во времени и представляет собой вероятность того, что по крайней мере n бросков монет завершится к моменту времени t . Его можно записать как ( X t + 1 p ) k , отмечая, что мы достигаем состояния H 1 временного шага после последнего в ходе последовательных бросков монет.pnt(Xt+1p)kH

Требуемое значение pmf во времени может быть записано как . Однако численно это включает в себя удаление очень маленького числа из гораздо большего числа ( 1 ) и ограничение точности. Поэтому в расчетах лучше установить X k , k = 0, а не 1. Тогда писать X для полученной матрицы X = X | X k , k = 0(Xt+1p)k(Xtp)k1Xk,k=0XX=X|Xk,k=0, pmf равен . Это то, что реализовано в простой программе R ниже, которая работает для любого n 2 ,(Xt+1p)kn2

n=4
k=n+2
X=matrix(c(rep(1,n),0,0, # first row
           rep(c(1,rep(0,k)),n-2), # to half-way thru penultimate row
           1,rep(0,k),1,1,rep(0,k-1),1,0), # replace 0 by 2 for cdf
         byrow=T,nrow=k)/2
X

t=10000
pt=rep(0,t) # probability at time t
pv=c(1,rep(0,k-1)) # probability vector
for(i in 1:(t+1)) {
  #pvk=pv[k]; # if calculating via cdf
  pv = X %*% pv;
  #pt[i-1]=pv[k]-pvk # if calculating via cdf
  pt[i-1]=pv[k] # if calculating pmf
}

m=sum((1:t)*pt)
v=sum((1:t)^2*pt)-m^2
c(m, v)

par(mfrow=c(3,1))
plot(pt[1:100],type="l")
plot(pt[10:110],type="l")
plot(pt[1010:1110],type="l")

Верхний график показывает pmf между 0 и 100. Нижние два графика показывают pmf между 10 и 110, а также между 1010 и 1110, иллюстрируя самоподобие и тот факт, что, как говорит @Glen_b, распределение выглядит так, как будто оно может быть аппроксимируется геометрическим распределением после периода успокоения.

введите описание изображения здесь

Xtpt+1c(n)ptc(n)2n+1cn(c1)+1=0ntnp100n=2t

введите описание изображения здесь

Я подозреваю (ed), что может быть закрытой формой, доступной для распределения, потому что средние значения и отклонения, как я рассчитал их следующим образом

nMeanVariance2724315144431736563339261271472072556169685112534409102310291201020474151296

t=100000n=2,,10

pi,tHitq,tHt

  • tpi,t,0inq,ti
  • p,tt

t+1t

p0,t+1=12p0,t+12p1,t+12pn1,t=12i=0n1pi,t=12(1pn,tq,t)
H0Hn1n1pn1,t+n1=12n1p0,t
pn1,t+n=12n(1pn,tq,t)
Hnt+1
pn,t+1=12pn,t+12pn1,t=12pn,t+12n+1(1pn,tnq,tn)()
q,t+1q,t=12pn,tpn,t=2q,t+12q,t
2q,t+22q,t+1=q,t+1q,t+12n+1(12q,tn+1+q,tn)
tt+n
2q,t+n+23q,t+n+1+q,t+n+12nq,t+112n+1q,t12n+1=0

n=4n=6n=6t=1:994;v=2*q[t+8]-3*q[t+7]+q[t+6]+q[t+1]/2**6-q[t]/2**7-1/2**7

введите описание изображения здесь

Изменить Я не вижу, куда идти, чтобы найти закрытую форму из этого отношения повторения. Тем не менее, это возможно , чтобы получить замкнутую форму для среднего.

()p,t+1=12pn,t

pn,t+1=12pn,t+12n+1(1pn,tnq,tn)()2n+1(2p,t+n+2p,t+n+1)+2p,t+1=1q,t
t=0E[X]=x=0(1F(x))p,t
2n+1t=0(2p,t+n+2p,t+n+1)+2t=0p,t+1=t=0(1q,t)2n+1(2(112n+1)1)+2=μ2n+1=μ
H

E[X2]=x=0(2x+1)(1F(x))

t=0(2t+1)(2n+1(2p,t+n+2p,t+n+1)+2p,t+1)=t=0(2t+1)(1q,t)2t=0t(2n+1(2p,t+n+2p,t+n+1)+2p,t+1)+μ=σ2+μ22n+2(2(μ(n+2)+12n+1)(μ(n+1)))+4(μ1)+μ=σ2+μ22n+2(2(μ(n+2))(μ(n+1)))+5μ=σ2+μ22n+2(μn3)+5μ=σ2+μ22n+2(μn3)μ2+5μ=σ2

Средство и отклонения могут быть легко созданы программно. Например, чтобы проверить средства и отклонения из таблицы выше, используйте

n=2:10
m=c(0,2**(n+1))
v=2**(n+2)*(m[n]-n-3) + 5*m[n] - m[n]^2

Наконец, я не уверен, что вы хотели, когда вы написали

когда хвост поражает и ломает полосу голов, отсчет начинается снова со следующего броска.

nn

μ1μ+1Xk,k,=0X1,k=1H0Hn=4

probabilityH00.48484848H10.24242424H20.12121212H30.06060606H40.06060606H0.03030303
H=1/0.03030303=33=μ+1

Приложение : программа Python, используемая для генерации точных вероятностей n= количества последовательных Nхедс-бросков.

import itertools, pylab

def countinlist(n, N):
    count = [0] * N
    sub = 'h'*n+'t'
    for string in itertools.imap(''.join, itertools.product('ht', repeat=N+1)):
        f = string.find(sub)
        if (f>=0):
            f = f + n -1 # don't count t, and index in count from zero 
            count[f] = count[f] +1
            # uncomment the following line to print all matches
            # print "found at", f+1, "in", string
    return count, 1/float((2**(N+1)))

n = 4
N = 24
counts, probperevent = countinlist(n,N)
probs = [count*probperevent for count in counts]

for i in range(N):
    print '{0:2d} {1:.10f}'.format(i+1,probs[i]) 
pylab.title('Probabilities of getting {0} consecutive heads in {1} tosses'.format(n, N))
pylab.xlabel('toss')
pylab.ylabel('probability')
pylab.plot(range(1,(N+1)), probs, 'o')
pylab.show()

7

Я не уверен, что бета, скорее всего, будет особенно подходящим способом решения этой проблемы - «Количество игр до ...» - это, безусловно, подсчет. Это целое число, и нет верхнего предела значений, где вы получаете положительную вероятность.

В отличие от этого, бета-распределение является непрерывным и находится на ограниченном интервале, поэтому это может показаться необычным выбором. Если вы в данный момент сопоставляете масштабированную бета-версию, кумулятивные функции распределения, возможно, не так плохо аппроксимируются в центральной части распределения. Тем не менее, какой-то другой выбор, вероятно, будет значительно лучше в любом хвосте.

Если у вас есть либо выражение для вероятностей, либо моделирование из распределения (которое вам, вероятно, нужно для того, чтобы найти приближающуюся бета-версию), почему бы вам не использовать их напрямую?


Если вы заинтересованы в поиске выражений для вероятностей или в распределении вероятностей требуемого числа бросков, возможно, самая простая идея - работать с функциями, генерирующими вероятность. Они полезны для получения функций из рекурсивных отношений между вероятностями, которые в свою очередь (pgf) позволяют нам извлекать любые вероятности, которые нам требуются.

Вот пост с хорошим ответом, использующий алгебраический подход, который объясняет и трудности, и хорошо использует pgfs и рекуррентные отношения. У него есть конкретные выражения для среднего значения и дисперсии в случае «два успеха подряд»:

/math/73758/probability-of-n-successes-in-a-row-at-the-k-th-bernoulli-trial-geometric

p=12

-

Если вы просто хотите получить числовые ответы, моделирование относительно простое. Оценки вероятности могут быть использованы напрямую, или в качестве альтернативы было бы разумно сгладить смоделированные вероятности.

Если вам нужно использовать приближенный дистрибутив, вы, вероятно, можете выбрать что-то, что работает довольно хорошо.

Возможно, разумным будет сочетание отрицательных биномов (версия «количество испытаний», а не «количество успехов»). Следует ожидать, что два или три компонента дадут хорошее приближение во всем, кроме крайнего хвоста.

Если вы хотите одно непрерывное распределение для аппроксимации, может быть лучший выбор, чем бета-распределение; было бы что исследовать.


Хорошо, с тех пор я выполнил небольшую алгебру, немного поиграл с рекуррентными отношениями, немного симулировал и даже немного подумал.

В очень хорошем приближении, я думаю, вы можете обойтись без простого указания первых четырех ненулевых вероятностей (что легко), вычисления следующих нескольких горстей значений через повторение (также легко), а затем с помощью геометрического хвоста, как только отношение повторения сглаживал изначально менее плавную прогрессию вероятностей.

Похоже, что вы можете использовать геометрический хвост с очень высокой точностью после k = 20, хотя, если вы беспокоитесь только о точности четырехзначного числа, вы можете ввести его раньше.

Это должно позволить вам вычислить pdf и cdf с хорошей точностью.

Я немного обеспокоен - мои расчеты показывают, что среднее число бросков составляет 30,0, а стандартное отклонение - 27,1; если я понял, что вы имеете в виду под «х» и «и», вы получите 40 и 28 в своем броске. 28 выглядит хорошо, но 40 кажется довольно далеко от того, что я получил ... что заставляет меня беспокоиться, что я сделал что-то не так.

====

ПРИМЕЧАНИЕ: Учитывая сложности между первым и последующим временем, с которым мы столкнулись, я просто хочу быть абсолютно уверенным, что теперь мы рассчитываем одно и то же.

Вот короткая последовательность с помеченными концами последовательностей «4 или более H» (указывающих на разрыв между переворотами сразу после последнего H)

       \/                     \/
TTHHHHHHTTHTTTTTHHTTHTTHHTHHHHHT...
       /\                     /\

Между этими двумя отметками я считаю 23 сальто; то есть, как только предыдущая последовательность (6 в данном случае) H заканчивается, мы начинаем считать сразу после T, а затем считаем до конца последовательности 5 H (в данном случае), которая заканчивает следующую последовательность , давая подсчет 23 в этом случае.

Ты так их считаешь?


Учитывая вышеприведенное верно, вот как выглядит функция вероятности количества бросков после завершения одного цикла, по крайней мере, из 4 голов до тех пор, пока не завершится следующий цикл, состоящий по крайней мере из 4 голов:

Монетные пробники

На первый взгляд кажется, что он плоский для первых нескольких значений, затем имеет геометрический хвост, но это впечатление не совсем точное - требуется некоторое время, чтобы привыкнуть к эффективно геометрическому хвосту.

Я работаю над тем, чтобы придумать подходящее приближение, которое вы можете использовать, чтобы ответить на любые ваши вопросы о вероятностях, связанных с этим процессом, с хорошей точностью, которая в то же время максимально проста. У меня есть довольно хорошее приближение, которое должно работать (которое я уже проверил по моделированию бросков в миллиард монет), но есть некоторое (небольшое, но последовательное) смещение в вероятностях, которые дает приближение в части диапазона, и я хотел бы посмотрим, смогу ли я получить дополнительную цифру точности из этого.

Может случиться так, что лучший способ сделать это - просто дать вам таблицу функции вероятности и cdf до точки, за которой можно использовать геометрическое распределение.

Тем не менее, было бы полезно, если бы вы могли дать представление о диапазоне вещей, для которых нужно использовать приближение.


Я надеюсь выполнить подход pgf, но, возможно, кто-то еще будет более опытным с ними, чем я, и сможет выполнить не только 4-случай, но и другие случаи.


Чтобы, возможно, уточнить вещи дальше. Распределение, которое регулирует или оценивает симуляцию, которая учитывает колебание 4 более успешных голов, было бы идеальным. Например, если среднее значение populatoin составляет 150 сальто для 4 последовательных голов. Если 4 или более голов пришли на 8-м броске. Маловероятно, что еще 4 или более голов не появятся еще через 20 или около того сальто (я просто догадываюсь) и, возможно, будут ближе к среднему. То, что дало бы мне вероятность того, что его вероятные 4 последовательные головы будут происходить в пределах определенного диапазона бросков, было бы ИЗУМИТЕЛЬНО.
Дан

Если у вас только 4 головы, если вы получаете 5-ю голову, последний набор из 4 считается как другой набор из 4 или сбрасывается, так что вы начинаете снова с первой головы (как только увидите один)?
Glen_b

(До сих пор я предполагал, что если вы сгенерируете много последовательностей из четырех, то перекрытия не будет - как только вы получите 4, число S сбрасывается до 0.)
Glen_b -Восстановить Монику

Его 4 головы или больше, как только вы получите хвост после 4 голов, полоса прекратится. Затем счет будет перезапущен до тех пор, пока вы снова не увидите 4 головы или более.
Дан

4 головы или больше - я вижу, что это действительно то, что говорится в вопросе, я просто не совсем понял это. Таким образом, 9 голов не считаются двумя лотами по 4 головы. Это полностью меняет расчеты, которые я делал. Отношение повторения, которое я использовал, неверно. Основная концепция - что у него должен быть геометрический хвост - это все равно будет сохраняться.
Glen_b

0

Вы хотите геометрическое распределение . Из Википедии:

X

XX=4X

P(X=x)=(1p)x1p

Y=X1

P(Y+1=x)=(1p)x1pP(Y=x1)=(1p)x1pP(Y=y)=(1p)yp

y=0,1,2,3...p=0.5

P(Y=y)=(0.5)y(0.5)=0.5y+1

nnα

α=i=0n1P(Y=i)

YZ

P(Z=z)=1α(1p)zp=1i=0n1(1p)ip(1p)zp

p=0.5

P(Z=z)=1i=0n10.5i+10.5z+1=110.5n0.5z+1=0.5z+110.5n

nZY


2
Я думаю, что есть некоторые детали вопроса, который вы, возможно, пропустили. Если я не неправильно понял вопрос, он не просто геометрический.
Glen_b

Я обновил его, чтобы обрабатывать конечное п. И да, теперь я вижу, что он хотел переместить окно, а не точный подсчет. Мой работает только для цепей, а не время между ними.
clintonmonk

Хороший первый шаг - взгляните на график в посте @ Glen_b и посмотрите, сможете ли вы повторить это. Я также добавил написанную мной программу Python, чтобы проверить точные вероятности. Если вы можете запустить это, раскомментируйте строку, которая печатает совпадения, уменьшив Nее где-то между 5 и 7, и вы получите хорошее представление о событиях, которые требуются (примечание pylabтребуется только для построения графика).
TooTone

πi

Да, если с помощью стационарного решения вы говорите о соотношении последовательных вероятностей в хвосте, сходящемся к константе, то стационарное решение действительно геометрическое, как сказали оба предыдущих ответа.
Glen_b
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.