什么是一些有价值的统计分析开源项目?


69

目前有哪些有价值的统计分析开源项目可用?

编辑:正如Sharpie所指出的那样,有价值可能意味着帮助您更快或更便宜地完成工作。


5
可能是有争议和主观的发贴子。至少需要定义“有价值”。
Sharpie

2
也许重点不应该放在每个项目的“有价值”上,而应该在“优点”和“缺点”上?
狮子2010年

甚至甚至“ X如何帮助您更快地完成Y /更便宜并杀死引起口臭的细菌”。
Sharpie

Answers:


88

R项目

http://www.r-project.org/

R是有价值的,而且意义重大,因为R是第一个被广泛接受的开放源代码的大型包装替代品。它已经成熟,得到了良好的支持,并且是许多科学界的标准。


是的,R很不错-但是为什么它“很有价值”。
Sharpie

11
它已经成熟,得到了良好的支持,并且在某些科学社区(例如,在我们的AI部门中很受欢迎)中成为标准
Menno 2010年

10
它是可扩展的,没有统计技术无法做到。
aL3xa

20

为了在Python中执行各种MCMC任务,有PyMC,我已经使用了很多。我没有遇到过在BUGS中可以做的任何事情,而在PyMC中无法做到,因此指定模型和引入数据的方式对我来说似乎更加直观。


18

这可能会被淘汰,但我很高兴使用Matlab克隆Octave多年。八度伪造中有相当不错的库,可以根据不同的分布,统计检验等生成随机变量,尽管显然它与R相形见.。相对于R而言,一个可能的优势是Matlab / octave是数值分析人员,优化研究人员中的通用语言。 ,以及一些应用数学家的子集(至少在我上学的时候),而据我所知,我系中没有人使用R.我的损失。尽可能学习两者!


4
真实的评论。但是,作为一名经验丰富的程序员,每次使用Matlab / Octave时,我都会感到肮脏,这是一种经过严格设计的语言(如果真的设计过的话)。当然,我也很喜欢SAS,后者显然是为打孔卡设计的。
韦恩

1
@韦恩足够真实。我记得曾经听过鲍勃·哈珀(Bob Harper)称Matlab语言为“怀疑的语义”;)与许多语言一样,一旦使用了足够多的语言,就会学会应付它的怪异之处。
shabbychef 2011年

17

我想到了两个项目:

  1. 错误 -从贝叶斯统计中消除(部分)痛苦。它允许用户将更多的精力放在模型上,而在MCMC上则少一些。
  2. 生物导体 -也许是生物信息学中最受欢迎的统计工具。我知道这是一个R存储库,但是有很多人想为Bioconductor学习R。可用于前沿分析的软件包数量之多,使其无与伦比。

1
安德鲁·
盖尔曼(

4
我想改写“生物信息学中最流行的统计工具” ...进行微阵列分析的生物信息学家广泛使用它,是的。但是生物信息学不仅限于此;)
Nicojo 2010年

15

Weka用于数据挖掘-包含许多Java分类和聚类算法。


效果如何?(只要看到单词“ Java”,我都会大喊大叫...)
shabbychef

@shabbychef从我所听到的内容来看似乎还不错,但通常将Weka用作测试几种算法并查看它们在给定数据集(或其子集)上的性能的第一步,然后将核心程序的一部分重新编码为有时在C或Python中优化其效率(例如,使用需要交叉验证或引导的高维数据)。
chl 2010年

2
@shabbychef:Java程序不必太慢了。我承认编写良好的C代码几乎总是比Java中类似的实现更快,但是编写良好的Java代码很可能不会超级慢。再加上用Java开发具有许多明显的优点。
posdef,2011年


14

Incanter是基于Clojure的R类平台(环境+库),用于统计计算和图形。


再次-为什么?我将如何说服老板将其用于Excel。
Sharpie


1
@詹姆斯+ j.mp/9fVmtVj.mp/aNDyf2j.mp/9Gzzri :-)
CHL

14

还有一些由FSF发起或根据GNU通用公共许可证重新分发的项目,例如:

  • PSPP旨在成为SPSS的免费替代品
  • GRETL,主要致力于回归和计量经济学

甚至有一些应用程序作为教科书的配套软件发布,例如JMulTi,但仍很少有人使用。

我仍然打xlispstat,不时,虽然Lisp有由R(见简·德·莱乌对概述在很大程度上取代了Lisp的对比[R杂志统计软件)。有趣的是,R语言的创始人之一Ross Ihaka相反地认为统计软件的未来是... Lisp:回到未来:Lisp作为统计计算系统的基础。@Alex已经指出了基于Clojure的统计环境Incanter,所以也许我们会在不久的将来看到基于Lisp的软件的复兴?:-)



9

首先,让我告诉您,我认为到目前为止,最好的工具是R,它具有大量的库和实用程序,在此不做列举。

让我扩大关于weka的讨论

有一个用于R的库,称为RWeka,您可以轻松地将其安装在R中,并使用此出色程序中的许多功能以及R中的功能,让我为您提供一个执行简单决策树的代码示例从此软件包随附的标准数据库中读取(绘制结果树也很容易,但是我将让您对如何执行此操作进行研究,这在RWeka文档中:

library(RWeka)
iris <- read.arff(system.file("arff", "iris.arff", package = "RWeka"))
classifier <- IBk(class ~., data = iris)
summary(classifier)

还有几个用于执行此操作的python库(python非常易于学习)

首先,让我列举一下您可以使用的软件包,在此不再赘述。Weka(是的,您有一个用于python的库),NLKT(除数据挖掘之外,最著名的用于文本挖掘的开源程序包),statPysickits和scipy。

还有一个很好的橙色(稍后我会再讨论),这是一个代码示例,该示例使用表cmpart1中的数据来制作一棵树,它还执行10折验证,您还可以绘制树图

import orange, orngMySQL, orngTree

data = orange.ExampleTable("c:\\python26\\orange\\cmpart1.tab")

domain=data.domain
n=10
buck=len(data)/n
l2=[]
for i in range(n):
    tmp=[]
    if i==n-1:
        tmp=data[n*buck:]
    else:
        tmp=data[buck*i:buck*(i+1)]
    l2.append(tmp)

train=[]
test=[]
di={'yy':0,'yn':0,'ny':0,'nn':0}
for i in range(n):
    train=[]
    test=[]
    for j in range(n):
        if j==i:
            test=l2[i]
        else:
            train.extend(l2[j])
    print "-----"
    trai=orange.Example(domain, train)
    tree = orngTree.TreeLearner(train)
    for ins in test:
        d1= ins.getclass()
        d2=tree(ins)
        print d1
        print d2
        ind=str(d1)+str(d2)
        di[ind]=di[ind]+1
print di

最后,我使用了一些其他有趣的软件包

Orange:面向新手和专家的数据可视化和分析。通过可视化编程或Python脚本进行数据挖掘。机器学习的组件。生物信息学和文本挖掘的扩展。(我个人建议这样做,我在将它集成到python中时使用了很多,这非常好)如果您希望我可以给您发送一些python代码。

ROSETTA:用于在粗糙集理论框架内分析表格数据的工具包。ROSETTA旨在支持整个数据挖掘和知识发现过程:从数据的初始浏览和预处理到最小属性集的计算和if-then规则或描述性模式的生成,再到对诱导规则或模式的验证和分析(我也很喜欢使用)

KEEL:针对数据挖掘问题(包括回归,分类,聚类,模式挖掘等)评估进化算法。与现有的学习模型相比,它使我们能够对任何学习模型进行完整的分析,包括用于比较的统计测试模块。

DataPlot:用于科学可视化,统计分析和非线性建模。Dataplot的目标用户是从事科学和工程过程的表征,建模,可视化,分析,监视和优化的研究人员和分析人员。

Openstats:包括统计和测量入门,描述性统计,简单比较,方差分析,相关性,多元回归,中断时间序列,多元统计,非参数统计,测量,统计过程控制,财务程序,神经网络,模拟


8

Colin Gillespie提到了BUGS,但对于Gibbs Sampling等来说,更好的选择是JAGS

如果您要做的只是ARIMA,那么您将无法击败X12-ARIMA,它是现场和开源的黄金标准。它不做实图(我使用R来做),但是诊断本身就是一个教训。

在更远的地方探索我最近发现并刚刚开始学习的东西...

ADMB(AD模型构建器),它基于AUTODIF库进行非线性建模,并具有MCMC和其他一些功能。它对模型进行预处理和编译为C ++可执行文件,并将其作为独立应用程序进行编译,应该比在R,MATLAB等中实现的等效模型要快得多。ADMB项目

它开始了,在渔业界仍然是最流行的,但是在其他目的上看起来却很有趣。它没有R的图形或其他特征,很可能与R结合使用。

如果要在GUI中使用贝叶斯网络:SamIam是一个很好的工具。R有几个也可以做到这一点的软件包,但是SamIam非常好。



7

我非常喜欢与RooFit一起工作,以便轻松正确地拟合信号和背景分布;与TMVA一起工作,可以使用一些标准工具(例如遗传算法和神经网络,也可以使用BDT)对主要问题进行快速主成分分析和建模。它们都是ROOT C ++库的一部分,尽管它们对粒子物理问题有很大的偏见。


7

除了已经提到的内容外,还有以下几点:

  • KNIME以及用于数据挖掘的R,Python和Weka集成扩展
  • 蒙德里安快速EDA

从空间角度来看:

  • 用于空间EDA和面数据聚类的GeoDa
  • SaTScan用于点数据的聚类

3
值得注意的是,GeoDa和SatScan不是开源软件,它们是免费软件(虽然这对我没有太大影响!)
Andy W

1
GeoDa中心的pySal是开源的(请参见下文)
b_dev 2011年


4

这落在“统计分析”的外部界限上,但是Eureqa是一个非常用户友好的程序,用于通过遗传编程来挖掘数据中的非线性关系。Eureqa不是通用的,但它做得很好,GUI非常直观。它还可以通过eureqa服务器利用可用的计算能力。


3

Meta.Numerics是一个.NET库,对统计分析提供了良好的支持。

与R(一个S克隆)和Octave(一个Matlab克隆)不同,它没有“前端”。它更像GSL,因为它是您在编写自己的需要进行统计分析的应用程序时链接到的库。对于业务线应用程序,C#和Visual Basic是比C / C ++更通用的编程语言,而Meta.Numerics比GSL更广泛地支持统计结构和测试。



3

符号数学软件也可以很好地支持统计。以下是我不时使用的一些GPL:

  1. sympy是基于python的并且很小,但是仍然可以做很多事情:导数,积分,符号和,组合函数,级数展开,张量操纵等。有一个R包可以从R调用它。
  2. 贤哲是基于python的,巨大!如果sympy无法满足您的要求,请尝试使用sage(但没有本机Windows版本)。
  3. maxima是基于Lisp的并且非常经典,大小介于(1)和(2)之间。

这三个都在积极发展中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.