【问题标题】:What programming languages are good for statistics? [closed]哪些编程语言适合统计? [关闭]
【发布时间】:2011-01-13 02:45:54
【问题描述】:

我最近对一些事情进行了更多的统计分析,我很好奇是否有任何编程语言特别适合此目的。我知道 R,但我更喜欢更通用的东西(或者 R 非常通用?)。

你们有什么建议?是否有任何语言的语法/语义特别面向此?或者是否有任何语言具有非常好的库?

【问题讨论】:

  • 有趣的问题,因为通用性的限制。当您想要做的事情的一部分在该域中时,DSL 可以成为一个可以使用的 PITA。
  • Jason 的通用性约束,如对 Dirk 回答的评论中所述,实际上似乎非常适合 R 的优势。将 R 与 SAS、Stata、Matlab 或其他任何不相比较是错误的(在这方面)。

标签: programming-languages r statistics libraries


【解决方案1】:

pystats library(用于 Python)非常适合统计分析。

【讨论】:

  • 项目文件似乎自 2005 年以来就没有更新过。这通常是一个非常糟糕的迹象。
  • 我有一辆 2005 年的吉普车,它仍然运行良好!
  • 我有一点 2005 年的奶酪!
  • @AJ - 可能不足以有所作为。但是,这可能意味着自 2005 年以来没有人维护过该库,因此可能很难获得帮助/修复错误。诚然,情况可能并非总是如此,但如果可以的话,我会倾向于避免此类项目。
  • 现代 python 数据人们通常使用scipymatplotlibpandasstatsmodelsscikit-learn 等的组合,具体取决于您在做什么。 rpy2 也是 R 的一个很好的接口,当你需要一些在 python 中没有实现的东西时。
【解决方案2】:

Matlab 也擅长统计。不过,它并不是完全免费的。

Octave 是一个免费克隆,它也可以满足您的需求。

【讨论】:

    【解决方案3】:

    您是否考虑过使用 MatLab 之类的东西?它具有许多执行数据分析的高级功能,您可以在环境中进行一些编程。

    【讨论】:

      【解决方案4】:

      我的一个专注于市场统计的朋友使用SAS。我对此了解不多——它看起来不像是一种“真正的”语言,但可能值得一试。

      我完全支持带有 R 绑定的 Python。

      【讨论】:

      • SAS 非常昂贵。如果你想要一个付费的统计软件,有更多的选择(也有更便宜的),比如:spss、jmp、mathlab 等等。就个人而言,我更喜欢 R :)
      • +1,Python 和 R 一起是梦想成真。查看 rpy2:rpy.sourceforge.net/rpy2.html
      【解决方案5】:

      我会说 R,因为我所在大学的大多数统计课程都使用 R,我参加过此类课程的大多数朋友都对它的范围和覆盖面非常满意。

      我什至尝试过 MATLAB,发现它非常好用。

      干杯

      【讨论】:

        【解决方案6】:

        APL 显然是用于统计工作的最佳语言之一。虽然它不是通用的......

        它确实需要特殊的键盘和字体,因为它不使用 ascii。

        请参阅Conway's Game of Life in one line of APL,了解可以用它做什么的概述。

        【讨论】:

        • APL 和其他任何东西一样通用,只是更难学习。 +1 怀旧
        • 如果您正在考虑 APL,那么为什么不使用 J 或 K 代替,后者更实用但使用相同的基本方法?
        【解决方案7】:

        Stata 呢?我有一个朋友是经济学博士生,他一直对 Stata 赞不绝口。我个人对Mathematica 有好感。

        【讨论】:

          【解决方案8】:

          查看ROOTRooFit 包。它被例如使用。用于数据分析的粒子物理学家。

          ROOT 是一个C++ 框架,还带有 python 和 ruby​​ 绑定。它还包括一个有限的交互式C++ 解释器。

          【讨论】:

            【解决方案9】:

            没有竞争——R 作为 S 的主要实现(而且恰好是适当的开源和 GNU 项目)。

            不仅因为 S 语言 正是为此目的而设计的(参见 John Chambers 的书籍),而且在 CRAN 对特定领域包的相当丰富的支持是首屈一指的:over 2000 个经过适当质量控制的软件包,通常由该领域的专家编写。

            ACM 在 1998 年将 ACM Software Systems Award 提供给 John Chambers 时也有同样的看法,下面是 citation

            约翰·M·钱伯斯

            对于 S 系统,它拥有永远 改变了人们分析、可视化、 和操作数据。

            作为参考,该奖项的其他获奖者是 TeX、Smalltalk、Postscript、RPC、'the web'、Mosaic、Tcl/Tk、Java、Make,...... 不错的公司。

            现在,如果您“只想”收集和总结一些数据,那么任何程序或函数语言都可以。但是,如果您想要为数据编程而设计的东西,那么 R 作为主要的 S 实现它就是。

            【讨论】:

            • 我完全理解 R 作为统计语言的强大功能。但是,除了统计数据(解析日志文件和访问 sqlite 数据库)之外,我还需要做一些事情。 R能做到吗?
            • 是的!有例如RSQLite 包,它包含读取/写入 SQLite 文件所需的一切。此外,它使用 DBI 接口,因此您可以在不同的后端重复使用您的代码。至于解析,R 包含几个正则表达式引擎,包括基本的、扩展的和 Perl——参见帮助(正则表达式)——所以它也做得很好。您可以通过 Windows、OS X、Linux 上的“Rscript”可执行文件以及 OS X 和 Linux 上的“r”(“littler”)来使用 R 编写脚本。 [我共同编写/维护更小]。
            • 可以在 R 中做任何你想做的事,但你可能不想这样做。我的建议是学习 R 和其他与 R 配合得很好的语言。如果您正在构建重型应用程序,可能是 Java 或 Scala。如果您正在构建主要围绕 R 封装的中型系统,可能是 Python 或 Ruby。然后,当您需要复杂的数据和统计工作时,使用人们编写的各种库从您的其他语言调用 R。
            • 你知道那句话,“有一个应用程序吗?”。当谈到 R 时,“有一个包”。甚至幸运饼干!
            • “CRAN 是首屈一指的:超过 2000 个具有适当质量控制的软件包” 显然,您对数值数学软件进行适当质量控制的标准与我的不同。委婉地说,许多 CRAN 包都非常(在数值上)不健壮。
            【解决方案10】:

            看看Incanter,基于clojure。 “Incanter 是一个基于 Clojure 的、类似 R 的统计计算和图形平台。” Clojure 是一种在 JVM 之上实现的基于 lisp 的语言。它可以轻松访问 java 库。没有比这更通用的了。

            【讨论】:

            • +1 表示 Incanter。它还没有 R 开发得那么好,但是由于您获得了所有 Java/Clojure 库和功能,因此如果您想同时进行统计通用开发,它非常有用。跨度>
            【解决方案11】:
            如果所有你正在做的是统计数据,

            R 就很棒。它有一个很好的交互式界面和可视化工具。但是,它很难用作通用语言,因为它的语法和语义针对统计数据进行了高度优化。如果您想要一种更通用的语言,带有 SciPy 的 Python 将是一个不错的选择,尽管我使用过它并且发现其中的统计例程有些不成熟。它们通常效率低下或在极端情况下失败。

            如果您正在对大型数据集进行数据挖掘,重视性能,并且/或者您不介意使用 alpha-ish 工具,那么 D 编程语言和 dstats library 可能会非常好。 D 是一种通用语言,但恕我直言,dstats 非常易于使用,因为模板元编程即使在静态编译、接近金属的语言中也可以轻松设计出漂亮的 API。 (完全披露:我写了大部分 dstats,所以我当然认为它很好。)

            【讨论】:

            • R 非常适合通用编程——例如,CRANberries html 和 rss 的 CRAN 更改摘要背后的代码不到 200 行 ... R。同样,越来越多的R 用于构建 R、运行测试、从类似乳胶的元格式更新文档的幕后脚本现在在 R 中。没有其他语言能比得上 CRAN 及其 2000 多个包。
            • @Dirk:我想这很主观,但我发现大多数面向数学的语言(R、Matlab 等)对于通用编程来说非常尴尬和奇怪,而不仅仅是 R。
            • 许多比较都是主观的。此外,R != Matlab,这种比较通常不是一个好的比较。其次,我为您提供了 R 作为通用编程环境的具体示例。由于大量的 POSIX 调用、文件系统/操作系统级别调用的包装、正则表达式库等 pp,这很有可能。所以我仍然谴责你的“如果 all 你正在做的只是统计数据”。
            • 我不同意这一点,R 很快取代了 Perl,成为我大多数通用编程任务的首选武器。
            【解决方案12】:

            正如 Dirk 所说,R 毫无疑问是最好的统计语言。我只想补充几点:

            首先,我认为您应该使用 R 的主要原因是社区。在这个阶段,学术界和工业界的专家如此大量地使用它,以至于没有其他语言可以与 CRAN 的财富相媲美。

            其次,应该承认,使用 R 语言是一种乐趣。它是我的主要语言,在尝试过替代语言后,我没有打算很快放弃它。但它也没有垄断它在数据编程方面的实力,这种说法可能太过分了。所有的 Lisp 和函数式语言都擅长数据编程。毕竟,Lisp 源自“列表编程”,正是 Lisp 对 R 的影响使该语言成为现在的样子。

            R 社区的一些成员(例如 Ross Ihaka)实际上将 Lisp 视为未来的统计语言(请参阅“回到未来”论文以获取参考),因为在R 语言(例如,没有多线程)。

            因此,尽管 R 无疑是统计计算的最佳语言,但我认为熟悉 OCaml、Haskell 或(可能)Clojure/Incanter 等另一种语言具有一定的价值。

            【讨论】:

              【解决方案13】:

              您可以查看程序 sage,它是对 python 解释器的重新实现,允许您使用 python 语法调用不同的编程语言进行统计(R、matlab、octave 等)。 .

              编写统计程序时的一个主要问题是,您最终可能会拥有许多不同的小脚本,每个小脚本都执行一项单独的任务,并且最终可能会导致文件夹混乱和结果混乱。

              因此,除了选择一种编程语言(我认为其他人已经回答了您的问题)之外,您还需要一种语法来定义脚本管道:您可以使用程序“gnu/make”来制作它(例如阅读@ 987654322@) 或者用这个sage,或者还有其他解决方案。

              【讨论】:

                【解决方案14】:

                根据我的经验,R 在以下领域是一种非常强大的语言:

                1. 数据的操作和转换。

                2. 统计分析。

                3. 图形。

                R 绝不是三招小马。我还将该语言应用于不完全属于上述类别的任务。一些例子是:

                • 通过识别和匹配不同架构的静态和动态库,然后通过lipo 运行生成的组,帮助创建 OSX 通用二进制文件的脚本。

                • 从网页中抓取信息的脚本。

                • 一组用于创建地理参考图像的脚本,使用GDAL 将图像切割成图块集,形成描述输出的JSON 清单,并将结果上传到网站以供OpenLayers 立即显示。

                我最喜欢使用R 的部分是我说话的频率:

                哇!有一个包可以做到THAT?!

                【讨论】:

                  【解决方案15】:

                  我也想为 R +1。它可能不像 STATA 甚至 SPSS 那样容易处理,尤其是对于非程序员而言。虽然我猜一般的 stackoverflower 比我更像一个程序员。

                  话虽如此,我想做一个简短的概述,因为我已经看到了一些来自用户(经济学家(观点)的统计数据包。

                  STATA 仍然是大多数经济学家的选择,而且确实有一些优点。 STATAs GUI 有助于管理大量选项和统计功能。此外,STATA 似乎是唯一一个具有至少有点接近基准的邮件列表的包:独一无二的 R 邮件列表。仍然可以编写复杂的 .do 文件或从网上下载一些文件。 STATA 可能不像 R 那样接近编程语言,但仍然为统计目的提供了一种很好的编程语言。根据数据集的大小,您应该检查所需的许可证。

                  您还可以使用 SPSS,它比 STATA 更​​像是一种 GUI 工具,但对经济计量工作(例如 TOBIT 模型或面板回归,尤其是离散选择模型)的综合性稍差。

                  还有 Eviews - 不幸的是,我已经忘记了大部分内容,只在我的研究中将它用于几个简单的回归。因此,我只是在这里命名。 GAUSS 也是如此,它看起来比其他包更具数学性。最近我听说了 Octave,它也更加数学化。

                  就我个人而言,R 比其他任何东西都重要。有时我会在 Python 中配对它,或者将它连接到 MySQL 或 PostgreSQL 数据库,它们也能很好地工作。 R 确实可以帮助您学习统计数据,因为您需要了解更多才能做某事,而不是点击 SPSS 之类的东西。虽然如果您需要 GUI,您可以尝试 RKward 或考虑在 Windows 上安装 Komodo / Sciviews-R 或 Tinn-R。后者不是 GUI,而是或多或少支持代码突出显示和代码建议的编辑器,这也有助于完成它。 R 中的 Farnsworth Econometrics 是一本不错的读物。啊,我不能忘记提到阴谋。 Hadley Wickham 的 ggplot2 包刚刚摆脱困境。只要您不需要它们进行交互,这是创建图形的最佳方式。归根结底,R 确实是最灵活的软件包:您甚至可以将它安装在网络服务器上并构建一些漂亮的网络界面 - 没有限制。

                  【讨论】:

                  • 使用 python 进行解析,将你的东西写入本地 SQL 数据库,创建一些漂亮的视图,然后使用 RMySQL。值得一试!
                  【解决方案16】:

                  因为我是统计学的学生。我发现 R 在所有其他统计相关软件中是最好的。也许它有能力对统计数据做任何事情。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2010-10-16
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-07-25
                    • 2016-05-30
                    • 2011-07-17
                    • 1970-01-01
                    相关资源
                    最近更新 更多