问题描述
我正在尝试理解 SciPy 二项式,我在 scipy 手册上没有取得任何进展。
我可以用 NumPy random 模拟抛硬币。
import numpy as np
print('Simulating the result of a single fair coin flip ')
n = 1
p = 0.5
result = np.random.binomial(n,p)
if result == 1:
print('1')
print('Heads')
else:
print('0')
print('tails')
我也遇到过这个 NumPy 代码,它模拟了在 20000 次翻转中连续 6 个正面的随机概率
import numpy as np
simulation = sum(np.random.binomial(6,0.5,20000)==6)/20000
print(simulation)
但是我不想运行随机模拟,我想使用 SciPy 二项式向我显示二项式测试的实际概率,例如0.5 单次抛硬币
当我运行下面的 SciPy 代码时
from scipy.stats import binom
n,p = 1,0.5
result = binom.stats(n,p)
print(result)
我得到了这个结果
(array(0.5),array(0.25))
谁能帮助解释我如何正确使用 SciPy 来获得 0.5 的单次抛硬币结果,以及我需要的任何其他语法来计算如何使用 SciPy 显示 20000 次抛硬币中 5 次正面的二项式概率。>
我意识到还有其他数学方法可以做到这一点,但我正在努力学习 SciPy。
解决方法
您需要的是概率质量函数,pmf。根据{{3}}:
在概率和统计中,概率质量函数 (PMF) 是 给出离散随机变量的概率的函数 完全等于某个值。
因此,在您的示例中,要获得 0 的概率,当结果可以是 0 或 1 时,概率为 0.5:
binom.pmf(0,1,0.5)
0.5