统计:给定二项分布的序列概率?

时间:2017-11-26 03:24:05

标签: python numpy statistics

我正在尝试在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)

我想我错过了一些明显的东西,但我似乎无法弄明白。谢谢!

2 个答案:

答案 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