使用 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 可以使用相同的列表和相同的列表来绘制直方图。
我在下面编写了代码以使用二项分布 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 可以使用相同的列表和相同的列表来绘制直方图。