我正在尝试在numpy中找到一个函数,它给出了在给定初始二项式概率分布的情况下观察序列的概率。
例如,如果序列是[H,T,H,T,H,T,H,T]和H都有0.5个概率,那么是否有一个函数会给出观察这些H计数的低概率和T(顺序无所谓)?
我试图按照numpy文档中的示例进行操作,但是我的代码在它应该接近50%时给出的概率非常低(5.8%): https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.binomial.html#numpy.random.binomial
import numpy as np
p_H = 0.5
p_T = 1 - p_H
seq = ['H', 'T', 'H', 'T', 'H', 'T', 'H', 'T']
num_H = seq.count('H')
p_obs = sum(np.random.binomial(num_H, p_H, 1000)==num_H)/1000
print('Probability of observing', num_H, 'H:',p_obs)
我想我错过了一些明显的东西,但我似乎无法弄明白。谢谢!
答案 0 :(得分:2)
您希望计算n次试验的观测值k的概率,其中n次试验具有独立概率p:
choose(n, k) * p**k * (1-p)**(n-k)
是二项分布的概率质量函数。它也可以通过
获得 binom.pmf(k)
答案 1 :(得分:2)
你得到的答案是连续4次获得的机会 - 或者大约6%(4次超过1000个样本,p = 0.5)
你想要的是:p_obs = sum(np.random.binomial(len(seq), p_H, 1000)==num_H)/1000