【问题标题】:difference between n and size parameters in np.random.binomial(n,p, size = 1000)np.random.binomial(n,p, size = 1000) 中的 n 和 size 参数之间的差异
【发布时间】:2015-02-23 00:39:15
【问题描述】:

我无法理解 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 是试验次数,但在上述公式中大小是多少。还请解释一下上面三个版本的二项式。

【问题讨论】:

    标签: numpy statistics


    【解决方案1】:
    1. np.random.binomial(N, p, size = q)
    2. np.random.binomial(1, p, size = q)
    3. np.random.binomial(N,p, size= q)

    第 1 和第 3 是相似的,我可以看到。这两个是二项式随机数生成器

    第二个是伯努利随机数生成器


    二项式的解释:

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

    这里,

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

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

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

    但是,您必须多次进行此实验。

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

    在第二次实验中,你得到 2 个六

    在第三个实验中,你得到 2 个六

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


    伯努利的解释:

    假设您进行的实验有两种可能的结果:成功或失败。成功以概率 p 发生,而失败以概率 1-p 发生。成功时取值为 1,失败时取值为 0 的随机变量称为伯努利随机变量。

    这里,

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

    你也可以阅读这个,numpy.random.binomial

    另外,Difference between Binomial and Bernoulli

    【讨论】:

    • return [np.mean(np.random.binomial(1, p, size = N)) for x in xrange(M)] ,在这个例子中如果 M = 18 轮询,p = 0.53 , N = 1200。我得到一个由 0 和 1 组成的向量,长度为 1200。但是如果我执行 np.random.binomial(N, p, size =1),我得到一个数组值 ([652])。这就是我感到困惑的地方。
    • 在第一种情况下,1200 大小的数组.. 从第一个 18 元素开始,1 的数量等于您的第二种情况的第一个元素.. 对吗?
    • let, m= 10, (1 0 1 0 1 1 1 0 1 0) -> 这是您的第一种情况。在第二种情况下,每个大小为 10 的插槽中的 1 的数量是实际的结果..
    • 其实二项式就是伯努利轨迹的总和。
    • 在这种情况下:np.random.binomial(1, p, size =N)。其中 N = 1200,据了解,我生成随机 0 和 1 1200 次。我做了 18 次(M 值)。我说的对吗??
    【解决方案2】:

    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) 二项分布。

    【讨论】:

      【解决方案3】:

      n = 一个实验中的试验;
      size = 你想执行这个实验多少次

      我们为什么需要大小? 以实现预测的准确性。如您所知,更多的实验意味着我们拥有更多的数据。还在迷茫吗?别着急,让我用一些细节和例子来解释。


      例如: 如果我掷硬币 10 次,我想知道正面出现 4 次的机会有多少。现在,如果我只掷硬币 10 次,可能会出现 7 或 2 次或 5 次正面,所以为了获得准确的结果,我必须多次执行这个实验,以便我有一个庞大的结果数据集,从中我可以知道我的准确结果。

      在这个二项式预测中,我告诉random.binomial,做 1000(大小)次实验,在每个实验中做 10 次试验(n),每次试验的成功机会(p),即获得正面是 1/ 2 = 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 轴显示“该值的成功机会”。

      【讨论】:

        【解决方案4】:

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

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

        数字 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 次试验中只有一次成功,这给了我们 500 次成功,即 500/1000 = 1/2。

        现在我可以向你展示这个情节的代码:

        import numpy as np
        import matplotlib.pyplot as plt
        
        distro = np.random.binomial(2, .5, 1000)
        plt.hist(distro, 100)
        

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

        另一个例子:

        您认为这种情况下的试验次数是多少?

        答案大约是 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 次试验中有 50% 的成功机会,测试 10,000 次给了我们想要的结果。

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            此函数仅适用于二项式结果。此函数返回成功的次数。成功代表事件的两个结果之一。任何一种输出都可能是成功的。为了便于理解,让我们说,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 Head & 2 Tails

            第二个元素意味着有 0 头和 3 尾

            第三个元素意味着有 0 头和 3 尾

            第四个元素意味着有3个头和0个尾

            .......

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-03-19
              • 1970-01-01
              • 2018-10-05
              • 2010-09-18
              • 2018-08-12
              相关资源
              最近更新 更多