Python 作为统计工作台

机器算法验证 r spss 状态 Python
2022-01-16 10:22:03

许多人使用 Excel 或其他电子表格、SPSS、Stata 或 R 等主要工具来满足他们的统计需求。他们可能会为了非常特殊的需求而转向一些特定的包,但很多事情可以通过简单的电子表格或通用的统计包或统计编程环境来完成。

我一直很喜欢 Python 作为一种编程语言,对于简单的需求,很容易编写一个简短的程序来计算我需要的东西。Matplotlib 允许我绘制它。

有没有人完全从 R 切换到 Python?R(或任何其他统计数据包)具有许多特定于统计数据的功能,并且它具有允许您考虑要执行的统计数据而不是数据的内部表示的数据结构。Python(或其他一些动态语言)的好处是允许我使用熟悉的高级语言进行编程,并且它允许我以编程方式与数据所在的真实世界系统进行交互,或者我可以从中进行测量。但是我还没有找到任何可以让我用“统计术语”表达事物的 Python 包——从简单的描述性统计到更复杂的多变量方法。

如果我想用 Python 作为“统计工作台”来代替 R、SPSS 等,你有什么建议?

根据你的经验,我会得到什么,失去什么?

4个回答

很难忽视 R/CRAN 中提供的大量统计软件包。也就是说,我花了很多时间在 Python 领域,并且永远不会阻止任何人像我一样享受乐趣。:) 以下是一些您可能会发现对统计工作有用的库/链接。

  • NumPy/Scipy你可能已经知道这些了。但是,让我指出Cookbook,您可以在其中阅读许多已经可用的统计工具和示例列表,它是函数(包括数据操作和其他操作)的一个很好的参考。另一个方便的参考是 John Cook 的Distributions in Scipy

  • pandas这是一个非常好的处理统计数据的库——表格数据、时间序列、面板数据。包括许多用于数据汇总、分组/聚合、透视的内置函数。还有一个统计/计量经济学图书馆。

  • larry 标记数组,与 NumPy 配合得很好。提供 NumPy 中不存在的统计函数,并且有利于数据操作。

  • python-statlib最近的一项努力,它结合了许多分散的统计库。如果您不使用 NumPy 或 pandas,则可用于基本和描述性统计。

  • statsmodels统计建模:线性模型、GLM 等。

  • scikits 统计和科学计算包——特别是平滑、优化和机器学习。

  • PyMC 满足您的贝叶斯/MCMC/分层建模需求。强烈推荐。

  • PyMix混合模型。

  • Biopython用于将您的生物数据加载到 python 中,并提供一些基本的统计/机器学习工具进行分析。

如果速度成为问题,请考虑Theano - 深度学习人员使用的成功率很高。

还有很多其他的东西,但这是我发现你提到的最有用的东西。

Python 作为一个数值平台和 MATLAB 的替代品,至少在 2-3 年前就已经成熟,现在在很多方面都比 MATLAB 好很多。大约在那个时候,我试图从 R 切换到 Python,但惨遭失败。我每天使用的 R 包太多,没有 Python 等价物。ggplot2 的缺席足以成为一个亮点,但还有更多。除此之外,R 具有更好的数据分析语法。考虑以下基本示例:

蟒蛇

results = sm.OLS(y, X).fit()

: _

results <- lm(y ~ x1 + x2 + x3, data=A)

你认为什么更有表现力?在 R 中,您可以根据变量进行思考,并且可以轻松地将模型扩展为,例如,

lm(y ~ x1 + x2 + x3 + x2:x3, data=A)

与 R 相比,Python 是一种用于模型构建的低级语言。

如果我对高级统计函数的要求较少,并且已经在一个更大的项目中编写 Python,我会认为 Python 是一个很好的候选者。当需要基本方法时,我也会考虑它,无论是因为速度限制,还是因为 R 包不提供优势。

对于那些现在正在做相对高级统计的人来说,答案是显而易见的,而且是否定的。事实上,我相信 Python 会限制你思考数据分析的方式。为 100 个基本的 R 包生成模块替换将需要几年和许多人年的努力,即便如此,Python 也会感觉像是一种已经绑定了数据分析功能的语言。由于 R 已经在多个领域中占据了应用统计学家的最大相对份额,我认为这种情况不会很快发生。话虽如此,它是一个自由的国家,我知道有人在 APL 和 C 做统计。

首先,让我说我同意 John D Cook 的回答:Python 不像 R 那样是一种特定于领域的语言,因此,在以后的道路上,你可以用它做更多的事情。当然,R 是一种 DSL,这意味着 JASA 中发布的最新算法几乎肯定会出现在 R 中。如果您主要从事临时工作并想尝试最新的 lasso 回归技术,比如说,R 很难被击败。如果您正在做更多的生产分析工作,与现有软件和环境集成,并且关心速度、可扩展性和可维护性,Python 将为您提供更好的服务。

其次,ars 通过良好的链接给出了很好的答案。这里还有一些我认为对 Python 中的分析工作必不可少的包:

  • matplotlib用于漂亮的、出版质量的图形。
  • IPython用于增强的交互式 Python 控制台。重要的是,IPython 为 Python 中的交互式并行计算提供了一个强大的框架。
  • Cython用于在 Python 中轻松编写 C 扩展。这个包允许你获取大量计算密集型 Python 代码,并轻松地将其转换为 C 扩展。然后,您将能够像任何其他 Python 模块一样加载 C 扩展,但代码将运行得非常快,因为它是在 C 中的。
  • PyIMSL Studio收集了数百种数学和统计算法,这些算法得到了彻底的记录和支持。您可以使用几乎相同的 API 从 Python 和 C 调用完全相同的算法,并且您将获得相同的结果。完全披露:我在这个产品上工作,但我也经常使用它。
  • xlrd用于轻松读取 Excel 文件。

如果您想要一个更像 MATLAB 的交互式 IDE/控制台,请查看SpyderEclipse的PyDev插件

我认为没有任何论据表明cranBioconductor中的统计软件包范围远远超过其他语言提供的任何内容,但是,这不是唯一要考虑的事情。

在我的研究中,我尽可能使用 R,但有时 R 太慢了。例如,大型 MCMC 运行。

最近,我结合python和C来解决这个问题。简要总结:使用约 60 个参数拟合大型随机种群模型,并使用 MCMC 推断约 150 个潜在状态。

  1. 在python中读入数据
  2. 使用ctypes在 python 中构造 C 数据结构
  3. 使用 pythonfor循环,调用更新参数并计算可能性的 C 函数。

快速计算表明该程序在 C 函数上花费了 95%。但是,我不必编写痛苦的 C 代码来读取数据或构造 C 数据结构。


我知道还有rpy,python 可以在其中调用 R 函数。这可能很有用,但如果你“只是”做统计,那么我会使用 R。