如何根据 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 教程并进行学习。
我有一个数据集,均值 = 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 教程并进行学习。