np.random.binomial中n和size参数之间的差异(n,p,size = 1000)

时间:2014-12-25 06:02:30

标签: numpy statistics

我无法理解np.random.binomial中n和size参数之间的区别。

N = 1200
p =0.53
q = 1000

np.random.binomial(N, p, size = q) 
np.random.binomial(1, p, size = q)
np.random.binomial(N,p, size= q)

N是试验次数,但是上述公式中的大小是多少。也善意地解释了三个版本的二项式的vabove。

6 个答案:

答案 0 :(得分:19)

  1. np.random.binomial(N,p,size = q)
  2. np.random.binomial(1,p,size = q)
  3. np.random.binomial(N,p,size = q)
  4. 我可以看到,第一和第三是相似的。这两个是二项式随机数发生器

    并且,第二个是bernoulli随机数发生器


    二项式的解释:

    二项式随机变量计算特定事件在固定次数的尝试或试验中发生的频率。

    下面,

    • n =试验次数
    • p =在任何一次试验中发生感兴趣的概率事件
    • size =您要运行此实验的次数

    假设,你想检查如果掷骰子10次你会得到6次。 在这里,

    • n = 10,
    • p =(1/6)#每卷六次的概率

    但是,你必须多次做这个实验。

    让, 在第一个实验中,你得到3六个

    在第二次展示中,你得到2 6

    在第3次实验中,你得到2 6个

    在Pth实验中,你得到2六,这里P是大小


    bernoulli的解释:

    假设您执行了两个可能结果的实验​​:成功或失败。成功发生在概率p,而失败发生在概率1-p。在成功的情况下取值为1且在失败的情况下取0的随机变量称为伯努利随机变量。

    下面,

    • n = 1,因为您需要检查一次是成功还是失败
    • p =成功概率
    • size =您将检查此次的次数

    您还可以阅读此内容numpy.random.binomial

    此外,Difference between Binomial and Bernoulli

    enter image description here

答案 1 :(得分:6)

np描述了发布本身。 size给出结果的数量(和形状)。最好通过手册中的示例进行说明:

>>> n, p = 10, .5 # number of trials, probability of each trial
>>> s = np.random.binomial(n, p, 1000)
# result of flipping a coin 10 times, tested 1000 times.

您将获得一个1000个数字的向量,每个数字来自(10,0.5)二项分布。

答案 2 :(得分:2)

n =一项实验中的试验;
大小=您要执行多少次实验

为什么需要尺寸?以实现预测的准确性。如您所知,更多的实验意味着我们拥有更多的数据。还是很困惑?不用担心,让我详细介绍一下示例。


例如: 我想知道有多少次发生正面爆炸的机会,如果我现在只抛10次硬币,如果我现在抛10次硬币,现在会抛头10次,可能是正面发生7或2或5次,所以对于准确的结果,我有进行多次实验,所以我拥有大量的数据集,从中我可以知道我的准确结果。

在这个二项式预测中,我告诉random.binomial,进行<1000(大小)次实验,并且在每个实验中进行10次试验(n),并想告诉您每个试验的成功率(p)试用率为0.5(50%)。

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.binomial(n=10, p=0.5, size=1000), hist=True, kde=True)

现在您可以在following graph中看到,发生5次硬币正面成功的机会是0.6(60%),发生4次硬币正面成功的机会是50%,依此类推。 x轴显示“值”,y轴显示“该值的成功机会”。

答案 3 :(得分:0)

在概率论和统计中,参数n和p的二项式分布是成功次数的离散概率分布(这是函数的输出,测试1次后为np.random.binomial)在n个独立实验的序列(在您的公式中为n),每个实验都是一个肯定的问题,每个都有自己的布尔值结果:成功/是/正确/一个(概率为p)或失败/否/错误/零(概率为q = 1-p)。
  测试不过是我们要运行此实验多少次,test = 10会产生10条输出-(所有代表不同的“没有时间得到肯定”)

答案 4 :(得分:0)

对于一个视觉示例,请考虑以下情节

enter image description here

此分布中可能值的范围似乎是一组包含(0,1,2)的整数。 0表示两次试验均未成功的次数。 1表示两次试验获得50%成功的次数,这意味着两次试验中只有一次成功。 2代表所有试验成功的次数,在这种情况下,我们看到2/2次试验成功了大约250次。

数字1出现的次数似乎是该图的y轴上显示的最高次数,大约是500。x轴表示可能的结果,并且测试总数为1000当我们分别将条形高度分别加到1、2、3时。这意味着在给定了几次试验以及所有这些试验发生的可能性之后,我们可以像这样绘制分布。

因为在这种情况下,试验数量为2,因此在所有2个试验中,每个试验都有50%的机会发生,因此,要使所有试验成功,这意味着您需要1号和#号试验2成功是25%,因为P(Trial)= .5且P(Trial)* P(Trial)= .25或25%。要在所有试验中都取得成功,您还只能获得25%的测试时间的结果。 我们所剩下的是50%的试验将会成功,而50%的试验不会成功。 在上图中用1表示。换句话说,在1000次中有500次,我们进行了2次试验,而这2次试验中只有1次成功,所以500/1000 = 1/2时,我们获得了500次成功。

现在,我可以向您显示该绘图的代码:

import numpy as np
import matplotlib.pyplot as plt

distro = np.random.binomial(2, .5, 1000)
plt.hist(distro, 100)

这实际上是在说:“为我创建一个分布,这样我将进行2个试验,每个试验成功的概率为50%,并运行1000个案例”-这些案例不是试验。从技术上讲,您可以在第一个参数中输入100,而这不会改变分布的总体情况,改变的是密度或值的范围,即图中的条形数量,但遵循相同的分布。

另一个例子:

enter image description here

您认为在这种情况下的审判次数是多少?

答案大约是10,正如我们在x轴上看到的,大约有10次试验,而且概率分布似乎不是50%。

您认为我们测试这种情况的次数是多少?

答案是100,如果将所有钢筋高度相加,则结果恰好是100。

事实证明,第二个图的概率分布也确实是50%,这意味着我们应该获得均匀分布,即获得5/10次试验将是50%,4/10和6/10都将有40%的机会,3/10和7/10都有30%的机会,2/10和8/10都有20%的机会,依此类推。但是我们之所以看不到分布均匀的原因是测试数量仅限于100。这是相同的概率分布,但是测试数量更多,比如说10,000。

如您所见,我们得到的分布非常均匀,非常接近我们的概率函数,这就是说,在10个试验中有5个总体应该成功,这意味着在10,000次试验中,有10个试验有50%的成功机会理想的结果。

总而言之,所有图像具有相同的概率分布,只是当测试用例数量增加时(条形高度的总和),我们可以更清楚地看到它。增加试验次数只会增加条形图结果的潜在宽度,但相对概率与我们在第一个图中看到的相同,即从2个试验中获得1个的概率与最后一个图像相同在10次成功中,我们获得5次。

答案 5 :(得分:0)

此函数仅适用于二项式结果。此函数返回成功的次数。成功代表事件的两种结果之一。任何一个输出都可能是成功的。为了便于理解,让我们说,Heads 就是成功。

案例 1:假设您想抛 1 次公平的硬币。

这里 n = 1(当我们抛硬币时),

p = 0.5(公平硬币的每一面,正面或反面的概率为 0.5),并且

size = 1(我们想抛一次这个硬币)

结果数 = n*size = 1

np.random.binomial(n = 1, p = 0.5 , size = 1)

输出:

array([1])

这个输出意味着,有一次成功。这意味着我们得到了 Heads 作为结果。

案例 2:假设您想掷 2 次公平的硬币。

这里 n = 1(当我们抛硬币时),

p = 0.5(公平硬币的每一面,正面或反面的概率为 0.5),并且

size = 2(我们想抛一次这个硬币)

结果数 = n*size = 2

np.random.binomial(n = 1, p = 0.5 , size = 2)

输出:

array([1, 0])

一次成功,一次失败。 IE;首先我们得到正面,然后是尾巴。这里是每个事件的输出数组中的成功计数。同样,任一输出都可能成功。

案例 3:假设您想掷 3 个公平的硬币 15 次。

这里 n = 3(因为我们掷了 3 个硬币),

p = 0.5 ,

size = 15(我们要抛 3 个硬币,15 次)

结果数 = n*size = 45

np.random.binomial(n = 3, p = 0.5 , size = 15)

输出:

array([1, 0, 0, 3, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 0])

在输出中,

第一个元素表示有 1 个头和 2 个尾

第二个元素表示有 0 个头和 3 个尾

第三个元素表示有 0 个头和 3 个尾

第四个元素表示有 3 个 Heads & 0 个 Tail

................

最后一个元素表示有 0 个头和 3 个尾