是否有可能让 scipy.stats.binom.pmf(x, n, p) 返回已知概率、成功次数 (x) 和成功概率 (p) 的试验次数 (n)?

示例问题:

为了有 90% 的把握至少击中目标 10 次,Alex 需要 throw 多少次?

在哪里:

  • 概率 = 0.90
  • p = 0.50
  • x = 10
  • 最佳答案

    你可以做这样的事情。您要计算的是 scipy.stats 调用的生存函数( sf ),即 1-cdf 。由于您对大于或等于 10 次成功感兴趣——即 10 次或更多成功的概率之和,这正是 1-cdfsf 函数可以使用一个 numpy 数组作为参数,因此我们为 n 传入一个数组(改变试验次数)。然后我们寻找给我们一个大于定义的 confidence 值的试验次数。

    import numpy as np
    import scipy.stats
    import matplotlib.pyplot as plt
    
    
    # Defining model parameters
    p = 0.5
    k = 10
    confidence = 0.9
    n = np.arange(k, 5*k)
    
    # Generating survival function distribution and computing the number of required trials
    binomSurvivalDist = scipy.stats.binom.sf(k, n, p)
    nrequired = n[binomSurvivalDist >= confidence][0]
    
    # Plotting the results to Verify that this works
    fig, ax = plt.subplots(1, 1, figsize=(12, 10))
    x = np.arange(0, nrequired+1, 1)
    ax.plot(x, scipy.stats.binom.sf(x, nrequired, p), lw=2)
    ax.set_xlabel("Number of Successes", fontsize=16)
    ax.set_ylabel("Probability of Getting At Least this Many Success", fontsize=16)
    ax.set_title("Distribution for %i Trials" % nrequired, fontsize=18)
    
    print(nrequired)
    plt.show()
    

    该图对于计算不是必需的,但允许我们验证该过程确实给了我们正确的答案。

    关于python - 如何使用库函数 scipy.stats.binom.pmf 返回给定概率的二项式分布中的试验次数 (n)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59360763/

    10-12 20:07