• 综合主站
  • 统计学专业应该使用什么样的统计软件(写给在统计学院学习的学弟学妹之四)

居然从上到下都看完了。我来补充几句,或者是我自己的理解吧,不对之处再在所难免,恳请指正(我的GPL)。

1) 关于中文“免费软件”这个翻译,这是一个诟病了。想必大家都知道英文原来叫做“Free software“.他的解释是“不受限制地自由使用、复制、研究、修改和分发的软件”,我觉得一个比较妥当的翻译应该是“自由软件”,大多数“Free software”是免费使用的,R是一个例子。所以说用中文"免费"这个词来讨论R和SAS是没有意义的。

2)关于稳健性而言(我采用前面胡江堂的说法)。质疑所有的开源软件缺乏稳健性是欠妥当的,我们也不用举很多老掉牙的例子。以R为例,但是“R is free software and comes with ABSOLUTELY NO WARRANTY.”这句话是必须的,应为他是GPL协议的一部分。举一个不是很恰当的例子,两个很健康的人,比如同卵双胞胎,他们一个人买了健康保险,记做A,一个人没有,而被贴了一个标签“本人随时暴露在生病风险中”,记做B。我们不能由此怀疑B的健康状况。

3)说到稳健性细节,我们拿同样的代码结构做同样的事情,R出错了,但是Matlab没有,SAS也没有,我就遇到好多这样的事情,于是我们说R缺乏稳健性。对R来说这是不公平的。怎么解释这一个现象呢,很简单,Matlab和SAS的工程师作了很多Error Catch的工作。虽然我不是计算机出身,但还是知道检查一个脚本语言的稳健性应该是检查内存溢出之类的。我们前面说的不过是编译环境的容错能力,不过我们不得不承认,R的gui界面比较简陋。这是绝大多数自由软件的通病。这对初学者而言确实比较重要。一个有趣的例子,有几十年统计编程普林斯顿的Chris Sims教授以前是Matlab的忠实用户,有一天他给MathWork写信,能不能将他现在Academic license用于其他用途,人家没理他,老头子生气了,就转向了R,而且写了很多很好很高效的函数。举这个例子无非是想说我们担心R的稳定性是杞人忧天,与其如此,还不如多花点时间钻研一下数据结构。

4)对于大数据处理能力,这个完全是硬件决定的。和R没有任何关系,就像SAS9.2声称的一样。我可以举一个例子,在Berkeley的Yu, Bin教授讲,他们作气象的预报,气象卫星数据是以T为单位的,而且以几何级数增长,他们的主要工具是R。我们仔细看R手册会发现,对于Window操作系统,现在的R有一定的内存限制,这个是由两个原因决定的,部分R函数是用32位的Fortran写的。还有在CRAN的Windows二进制R包的编译器是用MinGW编译的,而64位的MinGW还不够完善。如果你能够自己编译源码,这些问题完全是可以避免的。

4)并行计算。任何一个脚本语言都有并行计算的能力。R作并行计算的需要一个消息传递机制,现在流行的有MPI。但是MPI不是R的一部分,要做到并行计算,就需要将这两个结合起来。Matlab有自己的Parallel Computing Toolbox。R也有SNOW。我们所做的就是将这两件东西组合起来。2009年,著名的萨博汽车(SAAB)要倒闭了,因为通用汽车要倒闭了。于是,愚人节那天有一家报纸娱乐大家说,如果有一天宜家(IKEA)把萨博收购了,一定会很好玩。而且好多人的回应是 "A lot of fun!"

4)怎么选择?坦率的讲,如果我是老师,我给本科生推荐,我依然推荐SAS, Matlab。原因很简单,他们要去找工作,这也是很多高校这么做的。但是对于一个研究者而言,我推荐R。没有金刚钻,不揽瓷器活。其实对价格而言,大家好像对商业软件的漫天要价已经习以为常了,毕竟科研就是一个很砸钱的活。而且我觉得我们现在宣传R以免费作为侧重点来宣传不是长远之计。

5)最后,举个例子我来说一下我为什么喜欢R。去年秋天,Matlab的首席工程师来欧洲,我去参加他们一个5-6人的小型研讨会,他问我:你对Matlab有什么不满意的,我就抱怨说你们那个帮助太差劲了,我要看个简单回归函数的用法,好家伙,你先给我来3-4页的Introduction. 你是一个卖软件的,教我怎么用统计方法,这不是。。。于是他们在2008b版本改进了帮助,添加了一个缩略版的帮助。可是依然不是我想要的function-prameter-usage-example类型。顺便说一句,MathWork是一个小公司,全球包括销售不到300人,你知道R有多少contributors吗?还有一件商业软件让我很伤心的事情。最近在做模拟,我的程序都是用Matlab2008b调试的。Cluster的Matlab是2006b。于是出现了严重的函数不兼容问题。其实这个早不是商业软件的秘密了。于是系里只好再花钱更新软件。Matlab SAS,你们有福了。(我是不是像个愤青?)

6)还有纠正一句胡江堂的话,“你可以proc setinit;run;一下,查看机器装了多少SAS产品,大多是一般人一辈子也用不到的。在安装时大伙可以只勾选几个常用的模块。”这句话是有问题的。不是我想选几个模块就安装几个模块,而是我买了几个模块才能安装几个模块。
如果R和SAS同样为免费软件的话,您会用哪个呢?
从非统计专业科班出身来讲,在R与SAS的选择上还是会SAS的。不过人各有志,软件各有专攻,只要能满足工作、学习要求就行。
“这句话是有问题的。不是我想选几个模块就安装几个模块,而是我买了几个模块才能安装几个模块。”
引用楼上的话,哈哈,那可能是用的D版。
[未知用户] 我们通常是如此习惯于D版,以至于讲话时甚至会忘记版权的存在……哈哈
[未知用户] 这种问题挺难回答的,矛盾就在于,非专业的人究竟需要具备多少专业的知识?如果不注重专业知识,那么操起鼠标点按钮,最后皆大欢喜,管它出来的是什么东西;但又不可能要求非专业人士完全具备专业的知识,毕竟各人精力都有限。我认为R营造了这样一种“气氛”,就是逼迫你去思考,这些方法背后的理论究竟是什么,结果究竟是什么意思,即它提供了“function-prameter-usage-example”类型的文档,尽管从统计理论方面来说,它并不完善,但这已经不关R的事,既然你要用它,你就得先打好统计的基础。
云里雾里看完了,大家都是科班的,我一以门外汉,不过现在要用统计做毕业论文,老师介绍用spss。都说spss好用,我咋就没觉得那........
1 个月 后
请问 谢益辉:
R中如何轻松实现并行?有没有现有的工具软件包,很多时候的计算需要计算的量很大,一个机器并且一个CPU很费时费事

想实现1:单机多CPU并行
2:多机多CPU并行

请问有没有什么好办法?
10 个月 后
有一篇新发的blog,对大家职业规划有些参考。
http://www.thejuliagroup.com/blog/?p=433
[未知用户] 对于近期的职业规划来说,我个人仍然倾向于以SAS为吃饭的工具,长期来看,是SAS还是R根本不重要,统计才是本质问题。你发的这篇文章中,作者排斥用代码的方式工作,用了一个最简单的“散点图+相关系数”就把R打发了(文中R代码不可运行,而且有冗余,不知从哪儿拷来的),然后说R是一个“华丽丽的失败”(R is an epic fail)。关于这一点,显然过于不公平,我无心争论。

再说作者认为NB的两件事:

一、数据可视化。我本人很高兴看到这一点,因为这正是我的研究方向之一。不过我不知道作者是否真的看过R的可视化的一系列包: http://cran.r-project.org/web/views/Graphics.html (比如rggobi)我的老板说我们这里有最好的数据可视化研究团队,而我们团队里所有人都在用开源软件,以R为主,没有人用SPSS、SAS或JMP。

二、非结构化数据。不知道作者是否可以给一个R无法或很难处理的非结构化数据,我不知道什么数据能乱到用R的文本处理函数(加上正则表达式)无法处理的地步,除非是一点逻辑都没有;如果真没有逻辑,那么任何软件都无法处理。

#######################################

不可否认,用代码的方式工作确实起步难,会让很多初学者吓得不敢进门,但我的经验是,这是学统计必需的代价。我见过太多太多只会点鼠标但对鼠标背后的东西一窍不通的人,从某种程度上来说,R是在有意为难用户,它逼你去想:奶奶的,这lm()的weights参数到底是什么意思?这profile()的原理到底是什么?我便是在这样恶劣的环境中成长起来的。个人观点,小马过河,读者慎阅。
[未知用户] 谢老板,作者应该是统计方面的行家了,自有自己的一套看法,不必苟同。在没有对所有软件做系统分析之前,都不好下结论哪个更好,这其实也是统计问题。你以你们团队在做的事为出发点,是否也有统计之误在里面?统计之人其实也会被统计愚弄,这也是一个讽刺。SAS的魅力就在代码上,JMP的可视化也是很震撼的,有时间可以看看,也可能对你的研究工作有启发。
[未知用户] 是啊,人人都有一口井,观着自己的天,所以每个人的意见可能都是偏见,只不过自由软件用户可能会更偏一些。我反复提小马过河,深浅自知,有些东西对自己是良药,对别人是毒药。

如果我现在来重写这篇文章,JMP可能会放到Stata之前,它确实做得不错,但我想在R中应该都有相应的替代品。如果质量类似,为何不选择价格为0的产品呢?
1 个月 后
[未知用户] “算着算着数据中某个变量就没了,匪夷所思”
这个情况我也遇到过,原因很简单,你用的是盗版吧。在我的学校正版Stata机器上从来没有丢过变量的情况;而在我自己家里的装的盗版Stata上就有这样的问题。这一点你也可以上网搜索求证。

作为Stata的用户我也的说两句:
1. 说Stata支持的文件种类不多是不对的。Stata本身可以倒入很多数据类型,貌似包括SAS文件。而且Stat/Transfer这个软件(另外卖的)可以装换很多文件格式。况且与其它软件合作我认为这也不是什么大问题,如SPSS就可以将文件直接存为Stata格式很方便的。

2. 关于处理大文件,Stata(高级版本)所能处理的文件大小理论上是没有限制的,也就是说仅取取决于计算机物理内存大小。现在民用级的计算机内存都动辄几G了(听说还有人用两位数的内存)应该不是问题吧。

3. Stata Journal是收费的。但经常你可以顺藤摸瓜,找原文作者的网站(如大学的profile里面)往往可以找到免费的working paper。。。

还有,Stata的一个重要特点/优点是有大量的user written program,这点应该和R类似。比如它的GLLAMM程序似乎可以媲美MLwiN。还有它的documentation,各种出版物(Stata Bookstore)都是非常不错的。

还有这里面列出的都是general purpose软件,当然也有很多不错的“专业”的软件,如WinBUGS(Bayes),上面提的MLwiN(Multilevel model),Biogeme(discrete choice model)。。。
20 天 后
呵呵
被转载也不错。
是一种认可
同时也是一种宣传(建议大家标明表明出处)。
下午在另一个网站看到了这篇文章(正在了解统计软件间的异同,很感谢谢老师的文章给我对统计软件的概况留下了一个较全面的认识)。。。
由于转载,其间的数学公式给漏了
百度了一方,就来到了这里。
进来不禁又看了几篇,直到看到这是个公益网站
四年,实在不易。希望越来越多的统计学人士加入进来
壮大这个网站,让更多的人通过相互交流,共同进步。
谢谢
[未知用户] 千万不要认为我写的是全面的,还是看看下面长篇大论的评论吧:)
呵呵 评论也很精彩
有很多让人深思的地方。
一年多间,软件都有了不同的发展
内容是否考虑过 与时俱进 呢?
唯一的 小建议 呵呵:)
2 年 后
大半夜的过来考古,感觉看了评论收益良多!!!!
3 年 后
[未知用户] 我非常同意此观点。R虽然免费,在教育界刮起了一阵旋风,但是里面的算法和代码的严谨性是不可考量,总不能在用之前,先要测试一下,函数是否正确。
我用过brison的包,里面的算法完全不正确(我个人认为,我不得不用C语言重新写),这只是一个例子。我相信里面肯定还有很多包是值得怀疑的。做数据分析,最重要的就是严谨,如果整个处理流程都做得严谨了,反正偏偏在R处理时,用了某个(些)错误的包,那将意味着所有的努力都白费了。
R可以作为学习之用,但尽量不要用在工作中,SPSS,SAS,STAT都是值得信赖的,他们是商业软件,也必须对所有函数的准确性作出保证。事实上,他们也已经做过无数的测试了,也有很多很多世界级的公司在用,准确性上是可以保证的。