【问题标题】:Binomial distribution CDF using scipy.stats.binom.cdf使用 scipy.stats.binom.cdf 的二项式分布 CDF
【发布时间】:2018-03-22 13:29:40
【问题描述】:

我编写了下面的代码以使用二项分布 CDF(通过使用 scipy.stats.binom.cdf)来估计在 100 次投掷中没有超过 k 个正面的概率,其中 k = 0、10、20、30, 40、50、60、70、80、90、100。 然后我尝试使用hist() 绘制它。

import scipy
import matplotlib.pyplot as plt
def binomcdf():
    p = 0.5
    n = 100
    x = 0
    for a in range(10):
        print(scipy.stats.binom.cdf(x, n, p))
        x += 10

plt.hist(binomcdf())
plt.show()

但我不知道为什么我的情节返回空,我收到以下错误,谁能帮忙!

TypeError: 'NoneType' 对象不可迭代

【问题讨论】:

    标签: python plot scipy histogram cdf


    【解决方案1】:

    您打印了您的值,但没有返回它们。默认返回值是None,它产生了您的错误。

    【讨论】:

    • 我应该返回什么?因为即使我在函数末尾添加了 return 我也会得到同样的错误!
    • @Hazmat:你想用hist() 绘制什么?你应该把它退回来。
    【解决方案2】:

    我会将 x 和每个关联 x 的相应 cdf 输出保存到一个列表中,然后返回该列表。然后使用列表中的数据进行绘图。

    【讨论】:

    • 您能否编辑您的问题并在代码中添加您的逻辑,因为我对 python 很陌生,所以我需要代码方面的建议
    • 类似mylist = []
    【解决方案3】:

    您忘记返回计算值...所以您返回 None 应该像这样工作-见下文-如果我的意图正确:)

    import scipy
    import matplotlib.pyplot as plt
    def binomcdf():
        p = 0.5
        n = 100
        x = 0
        result = []
        for a in range(10):
            result.append(scipy.stats.binom.cdf(x, n, p))
            x += 10
        return result
    
    plt.hist(binomcdf())
    plt.show()
    

    【讨论】:

    【解决方案4】:

    要为每个 k 绘制二项分布,您需要将每个 cdf 存储在一个列表中并返回相同的列表,并且可以使用相同的列表来绘制直方图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-25
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多