使用 scipy.stats.binom.cdf 的二项分布 CDF

Binomial distribution CDF using scipy.stats.binom.cdf

我在下面编写了代码以使用二项分布 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()

但我不知道为什么我的情节 returns 是空的,我收到以下错误,请有人帮忙!

TypeError: 'NoneType' object is not iterable

您打印了您的值,但没有 return 它们。默认的 return 值为 None,这导致了您的错误。

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

您忘记了 return 计算值...所以您 returning 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()

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