【问题标题】:How to calculate expected relative frequency from observed data in python如何从python中观察到的数据计算预期的相对频率
【发布时间】:2015-11-17 01:32:27
【问题描述】:

我有一个平均值 = 40,sd = 5 的数据集,从 30 开始,类间隔为 20,所以第一个频率类是 (30 -50)。我已经使用下面的代码计算了头等舱的预期相对累积频率(正态分布)

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

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

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

非常感谢您对这个问题的任何帮助。

【问题讨论】:

  • 这个问题很难阅读,我仍然不确定你在问什么。您是否要计算这 10 个类别的“预期值”(您是指该类别中的预期频率吗?):(30..50, 50..70, 70..90, 90..110, .. .)?如果是,有什么问题?你已经得到了前两个。你在寻求帮助编写一个 for 循环吗?
  • @maxy 对不起,我的英语不太好,是的,你明白我的问题。我手动计算了十节课。我的问题是如何为这个问题制作循环?这样我们就不必为每个类手动做

标签: statistics normal-distribution


【解决方案1】:

你可以使用一个简单的 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

或者您可以使用数组(也称为 vectorized)来计算它:

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 教程并通过它来学习。

【讨论】:

  • 非常感谢您的大力帮助 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2014-12-28
  • 2017-04-30
  • 2016-09-11
  • 2017-04-29
  • 2019-10-17
  • 2021-01-13
相关资源
最近更新 更多