我试图在numpy中找到一个函数,它给出在给定初始二项式概率分布下观察序列的概率。在
例如,如果序列是[H,T,H,T,H,T,H,T]并且H都有0.5的概率,那么是否有一个函数可以给出观察H和T这些计数的低概率函数(顺序无关紧要)?在
我试图遵循numpy文档中的示例,但是我下面的代码给出了一个非常低的概率(5.8%),当它应该接近50%: 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)
我想我错过了一些显而易见的东西,但我似乎想不出来。谢谢!在
你得到的答案是连续获得4个样本的概率——或者说大约6%(4个样本在1000个样本中取了4个,p=0.5)
你想要的是:
p_obs = sum(np.random.binomial(len(seq), p_H, 1000)==num_H)/1000
你想计算一个观察值k的概率,给定n个试验,独立概率p为:
二项分布的概率质量函数。也可以通过
^{pr2}$相关问题 更多 >
编程相关推荐