我在做一个用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
如果有人能解释这背后的理论或基本直觉,那将是非常有帮助的!你知道吗
考虑到这个例子
如果p=0.3,n=10,这是相等的,也就是说,有偏的硬币是有偏的(有0.3的机会得到头部),试验的次数是10次,10次中有多少次我会得到头部?当然,它不会一直精确到3,(事实上,你甚至可能在10次投掷中有10个头部,尽管概率很小),正如这里在循环中运行10次所示。你知道吗
然而在numpy中,我们通常不会在循环中运行东西。如果我们想生成10个这样的数字,我们可以为调用提供一个额外的size参数
当单个随机试验的结果是概率为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)
。你知道吗相关问题 更多 >
编程相关推荐