Numpy二项分布的参数和形状有什么区别?

2024-05-17 23:32:03 发布

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

我在做一个用Python做贝叶斯统计的项目,我在使用Numpy随机二项式函数。然而,在输入关键字参数/参数时,我对其背后的一些基本理论有点困惑。我的设置如下:

trial = np.random.binomial(n, .10, 1)

(其中n=1000)

问题:假设你掷了一枚有偏见的硬币(p=.10)。你知道吗

问题:一次投出0.10概率的1000个球与一次投出0.10概率的1000个球有区别吗?哪个更好?一个比另一个计算效率高吗?你知道吗

即,如果有,以下两者之间的区别是什么:

np.random.binomial(1000, .10, 1)

以及

np.random.binomial(1, .10, 1000)

或者,换一种说法,分布参数和形状之间有什么区别?你知道吗

我读过发现的Numpy二项式文档here

如果有人能解释这背后的理论或基本直觉,那将是非常有帮助的!你知道吗


Tags: 项目函数numpy参数np硬币random关键字
2条回答

考虑到这个例子

In [51]: for i in range(10): print (np.random.binomial(10, 0.3))
2
3
5
2
4
2
5
3
1
2

如果p=0.3,n=10,这是相等的,也就是说,有偏的硬币是有偏的(有0.3的机会得到头部),试验的次数是10次,10次中有多少次我会得到头部?当然,它不会一直精确到3,(事实上,你甚至可能在10次投掷中有10个头部,尽管概率很小),正如这里在循环中运行10次所示。你知道吗

然而在numpy中,我们通常不会在循环中运行东西。如果我们想生成10个这样的数字,我们可以为调用提供一个额外的size参数

In [53]: np.random.binomial(10, 0.3, size=10)
Out[53]: array([3, 5, 4, 1, 2, 3, 2, 3, 3, 4])

当单个随机试验的结果是概率为p的“成功”时,我们称之为参数为p的Bernoulli试验,也称为Bernoulli(p)。如果我们用相同的p运行n个独立的Bernoulli试验,二项式分布评估获得特定数量“成功”的概率。我们称之为参数为n和p的二项式分布,也称为二项式(n,p)。按照约定,Bernoulli的成功编码为1,失败编码为0。因此,Bernoulli(p)和二项式(1,p)是相同的。你知道吗

如果我们从一个二项式(n,p)中生成值,那么结果就是在n个试验中观察到的成功次数的计数。因此,成功的次数是n个伯努利结果的总和。你知道吗

现在轮到努比了。调用np.random.binomial(1000, .10, 1)生成一个n=1000,p=0.1的二项式实现。使用np.random.binomial(1, .10, 1000)生成n=1和p=0.1的二项式的1000个实现,即1000个伯努利(0.1)。这些不是同一件事,但是如果使用sum(np.random.binomial(1, .10, 1000))对伯努利值求和,结果将具有与np.random.binomial(1000, .10, 1)相同的分布。你知道吗

其中一个比另一个好吗?虽然从分布的角度来看,它们是可互换的,但除了生成n个Bernoullis并对它们求和之外,还有more efficient computational methods to generate binomials。假设NumPy的实现者是称职的,那么最好使用np.random.binomial(1000, .10, 1)。你知道吗

相关问题 更多 >