在使用一些统计分析工具时,我发现至少有 3 种 Python 方法可以计算平均值和标准差(不包括“自己动手”技术):
-
np.mean()
, np.std()
(ddof=0 或 1)
-
statistics.mean()
, statistics.pstdev()
(和/或statistics.stdev
)
-
scipy.statistics
package
这让我摸不着头脑。应该有一种明显的方法可以做到这一点,对吗?:-) 我发现了一些较旧的帖子。一、性能优势对比np.mean()
vs statistics.mean()
。它还强调了求和运算符的差异。那篇文章在这里:为什么统计数据这么慢 https://stackoverflow.com/questions/37533666
我正在与numpy
数组数据,并且我的值落在一个小范围内(-1.0到1.0,或0.0到10.0),所以numpy
函数似乎是我的应用程序的明显答案。对于我将要处理的数据,它们在速度、准确性和易于实施性方面取得了良好的平衡。
看来statistics
模块主要适用于那些具有列表(或其他形式)数据或广泛变化范围的数据的模块[1e+5, 1.0, 1e-5]
。这仍然是一个公平的说法吗?有没有numpy
解决求和运算符差异的增强功能?最近的发展是否带来了其他优势?
数值算法通常有积极和消极的方面:有些更快,或更准确,或者需要更小的内存占用。当面临 3-4 种计算方法的选择时,开发人员的责任是为他/她的应用程序选择“最佳”方法。一般来说,这是竞争优先级和资源之间的平衡行为。
我的目的是征求具有统计分析经验的程序员的回复,以深入了解上述方法(或其他/更好的方法)的优点和缺点。 [我对没有事实支持的猜测或观点不感兴趣。] 我会根据我的设计需求自己做出决定。
为什么 NumPy 重复 SciPy 的功能?
来自 SciPy 常见问题解答NumPy 和 SciPy 有什么区别? https://www.scipy.org/scipylib/faq.html#what-is-the-difference-between-numpy-and-scipy:
在理想的情况下,NumPy 除了数组数据类型和最基本的操作之外什么都不包含:索引、排序、整形、基本元素函数等。所有数字代码都将驻留在 SciPy 中。然而,NumPy 的重要目标之一是兼容性,因此 NumPy 尝试保留其前身支持的所有功能。
它建议使用 SciPy 而不是 NumPy:
无论如何,SciPy 包含功能更齐全的线性代数模块版本,以及许多其他数值算法。如果您使用 Python 进行科学计算,您可能应该同时安装 NumPy 和 SciPy。大多数新功能属于 SciPy 而不是 NumPy。
我什么时候应该使用统计库?
来自统计库文档 https://docs.python.org/3/library/statistics.html:
该模块无意成为第三方库(例如 NumPy、SciPy)或针对专业统计学家(例如 Minitab、SAS 和 Matlab)的专有全功能统计包的竞争对手。它针对的是图形和科学计算器的水平。
因此,我不会将它用于严肃的(即资源密集型)计算。
statsmodels 和 SciPy 之间有什么区别?
来自统计模型关于页面 https://www.statsmodels.org/stable/about.html:
scipy.stats 的 models 模块最初由 Jonathan Taylor 编写。有一段时间它是 scipy 的一部分,但后来被删除。在 Google Summer of Code 2009 期间,statsmodels 得到了纠正、测试、改进并作为新包发布。此后,statsmodels 开发团队不断添加新模型、绘图工具和统计方法。
因此,您可能有 SciPy 无法满足的要求,或者专用库可以更好地满足您的要求。
例如 SciPy 文档scipy.stats.probplot https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.probplot.html注意到
Statsmodels 具有更广泛的此类功能,请参阅statsmodels.api.ProbPlot
.
因此,在这种情况下,您将需要求助于 SciPy 之外的统计库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)