如何根据 python 中的观测数据计算预期相对频率

How to calculate expected relative frequency from observed data in python

我有一个数据集,均值 = 40,sd = 5,class 间隔为 20,从 30 开始,所以第一个频率 class 是 (30 -50)。我已经使用下面的代码

计算了第一个 class 的预期相对累积频率(正态分布)
scipy.stats.norm.cdf((50-mean)/sd)-scipy.stats.norm.cdf((30-mean)/sd)

那么我如何通过定义函数来计算最多 10 个 class 的期望值,以便第二个 class 的期望值为

scipy.stats.norm.cdf((70-mean)/sd)-scipy.stats.norm.cdf((50-mean)/sd)

非常感谢有关此问题的任何帮助。

您可以使用一个简单的 for 循环:

cdf = scipy.stats.norm.cdf # just a shortcut
for i in range(10):
    lo = 30 + 20*i
    hi = lo + 20
    freq = cdf((hi-mean)/sd)-cdf((lo-mean)/sd)
    print 'interval', lo, 'to', hi, 'freq', freq

或者您可以使用数组(也称为 向量化)计算它:

start, interval = 30, 20
count = 10
lo = start + numpy.arange(count) * interval
hi = lo + interval
print cdf((hi-mean)/sd)-cdf((lo-mean)/sd)

正如预期的那样,较高的区间远在正态分布的尾部并且全为零。

如果第一种方法给您带来了问题,我建议您搜索一个通用的 Python 教程并进行学习。