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

2024-06-07 00:57:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想我错过了一些显而易见的东西,但我似乎想不出来。谢谢!在


Tags: 函数文档numpy顺序np序列random概率
2条回答

你得到的答案是连续获得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为:

   choose(n, k) * p**k * (1-p)**(n-k)

二项分布的概率质量函数。也可以通过

^{pr2}$

相关问题 更多 >