编程言统计

使用计算机语言玩数理统计
编程言统计

编程言统计

特色

为何使用计算机语言进行数理统计

本文简述使用R语言和python进行统计学分析的理由


目前,医药数理统计常用的工具包括SPSS, GraphPad Prism等,有些优秀的人可能也会使用SAS进行统计学分析。这些商业软件最大的优点在于稳定、低代码(零代码)、功能齐全、使用门槛低、作图漂亮。计算机语言作统计分析需要一定的门槛,但仍具有无可比拟的优势。

一、直接经济成本低

商业软件最大的麻烦在于其不菲的收费。截至2021年10月30日,SPSS Statistics 28订购版针对个人用户的价格为¥832.10(起)/月/用户(参考链接),prism学术版最便宜的官网报价为¥2,819/元/2用户(参考链接)。部分高校或许通过软件正版计划参与了这些软件的集团订购,学生毕业后将不能很方便地使用相应正版服务。此外,2020年5月下旬,美国方面针对包括哈工大、哈工程等高校进行制裁,Matlab官方公司宣布禁止相应单位使用该软件(参考链接)。

正版软件买不起,统计工作总不能就不做了吧。智慧的网友从来不会向现实妥协。部分用户选择安装未经供应商授权的软件副本(俗称盗版),一定程度上解决了科研过程中数理统计相关的燃眉之急。随着世界范围内各个国家对知识产权的进一步重视,使用盗版软件非长久之计。据说一些顶刊在接收学术论文时要求作者提供相应统计软件的授权许可。若其他平民期刊对此举措纷纷效仿,对于各位科研狗来说将无疑是灭顶之灾(虽然我也希望这一天永远也不要发生)。

我们永远不会坐以待毙。既然盗版软件具备不可用的风险,我们总不可能坐以待毙,总要想想办法。如果有一天大街上买不到面包,我们或许可以自己在家做面包。既然SPSS由JAVA(参考链接),我们或许可以通过计算机语言来完成我们日常必备的数理统计工作。

感谢万能的程序员,1976年AT&T贝尔实验室的John Chambers开发出S语言,可用来进行数据探索、统计分析、作图,其丰富的数据类型(向量、数组、列表、对象等)特别有利于实现新的统计算法。最初S语言的实现版本主要是S-PLUS,由MathSoft公司的统计科学部进一步完善(参考链接)。问题就在于S-PLUS是个商业软件,意味着其不免费。随后Auckland大学的Robert Gentleman 和 Ross Ihaka 及其他志愿人员开发了R语言,它比S-PLUS 还少许多功能,但已经具有了很强的实用性,而且R语言是免费的。

二、处理大量数据时工作效率高

若干计算机语言可用来进行数理统计分析,比如说python。python自带的一些模块scipy基本上可以较好地完成简单的一些统计学分析。当然也可以在python中借助rpy2模块运行R的代码。计算机语言最大的优势不仅在于其免费,且其定制性比较强。比如说SPSS进行两组或多组差异分析时,需要专门搞一列因子变量进行分组,而prism则可以通过不同的colunm之间进行分组。两个软件无论哪种分组模式都有其内在的道理。但如果采集数据的人员喜欢不走寻常路,以行为单位对数据进行采集,那么在使用两个软件之一进行分析时还需要在Excel中转置一下。计算机语言则很好地避免了这个问题,你可以自己通过dataframe(python中的pandas模块)采集数据并自行对数据进行分组。

沈括《活字印刷》中有这样一句话:若止印三、二本,未为简易;若印数十百千本,则极为神速。计算机语言作统计学分析也一样,对于少量数据分析来说,确实是高射炮打蚊子、杀鸡用牛刀,可能你代码还没敲完别人已经用SPSS或prism完成分析了。但当面对大量数据,特别是来自多个文件的数据时,如果能够利用好循环功能,则花一天的时间写好代码后运行起来,配合数据库的运用,很快就可以对不同文件中的数据进行比较,极大地提高了大量数据分析时的工作效率。

三、不限平台

最近帮一位Mac用户搞破解版Prism,搞得心力交瘁身心疲惫,但仍未成功。至于Linux,目前还不确定相应的软件是否已经开发出来。而计算机语言则不受这个局限,甚至对于极客来说,Linux中运行计算机语言的性能要远优于Windows。


放眼未来

不过话说回来,在目前的科研环境中,当别人论文Statistical analysis部分写道All statistical analyses were performed using SPSS software/GraphPad Prsim,你却写了句 All statistical analyses were performed using R/Python,多少有那么点奇怪。所以虽然R或Python进行统计学分析准确度能保证的条件下,接受度或许还需要一段时间。

当然,艺多不压身,当下用自己的实验数据作为素材练习一下所学习的R或Python的语法还是没毛病的,或许有一天真的能派得上用场。其他众多计算机语言,比如公众号上经常推的Go,Rust,Julia等,其用于数理统计的可行性有待广大网友的进一步发掘。