法科生的“码农”初体验:R语言从零进阶
——第三届上海交大“暑期社会科学方法论培训班”学习心得
郝乐
它太神奇了,满载珍宝,可以让那些聪明狡猾和粗野胆大的人得到充分满足;但并不适合胆小者。
——Q,“Q,Who?”,《星际迷航:下一代》
2016年1月和12月,我先后参与吉林大学法学院“全面推进依法治国对策研究”和“司法大数据与实证研究”的项目并顺利结项,在完成科研项目的过程中,更加深刻地体会到,如果没有对法律的“经验质感”,会影响到对司法实践中某些问题的正确把握和解决方案的妥当选择,而法学实证研究正是建立经验质感的有效方法,通过对司法裁判文书的大样本考察,可以弥补“经验质感”的不足。正所谓,工欲善其事必先利其器,为有效开展法学实证研究,我参加了由上海交通大学国际与公共事务学院举办的“暑期社会科学方法培训班”,完成了为期十五天的培训后,对于目前在法学实证研究中几乎不曾运用过的R语言拥有一些简单的学习心得,有幸在此与大家分享。
湿础人沾汗际,蒸林蝉烈号时。七月的上海,着实难熬,而更加艰难的是,让一个大学期间只修习过计算机基础知识的文科生在短时间内成为“码农”。虽根据招生简章,本次暑假班的培训对象为“全国高校和科研所政治学、行政管理、社会学、经济学、管理学和法学等相关社会学科的教师及研究生”,但在近190人的学员微信群中法学生寥寥无几,仅有来自吉林大学法学院、西南政法大学、华东政法大学等数位法学专业的教师及研究生。导致上述现象出现的原因,除本专业对于相关领域的学习并不重视之外,培训内容的难度也让诸多没有相关背景知识的同学望而却步,尤其是培训内容的重点——“R语言方法”,正如开篇的引用中提到的,它“满载珍宝”,但却并不适合“胆小者”。因此,本文的写作目的,就是希望能够以我浅薄的学习经验,带领各位具有“冒险精神”的读者,一起初探R语言的精彩世界。
R语言是什么?
R语言诞生于1980年前后,是S语言的一个分支,由新西兰Robert Gentleman和Ross Ihaka等开发,①目前在统计学领域广泛使用。R语言不仅是一种计算机高级语言,也是一个用于统计、分析、计算和制图的优秀工具,是属于GNU系统的一个自由、源代码开放的实用软件。②R是一个非常灵活的平台,是从大数据中获取有用信息的绝佳工具,R语言与其它编程语言、数据库之间具有很好的接口,已经发展成为统计、预测分析和数据可视化的全球通用语言,可以说,它提供各种用语分析和理解数据的方法,从最基础的到最前沿的,几乎无所不包,其基本安装就提供了数以百计的数据管理、统计和图形函数,而其分析和绘图函数目前已超过50000个。③
图一:关于R语言
R语言可以用来做什么?
信息技术的发展,使得对于某项事物可获取的信息和数据量有了非常可观的增长,以容易理解与接受的方式来呈现庞大的数据信息也日益变得富有挑战性。而通常来说,一图胜千言,人类一般比较擅长通过视觉获取对自己有用的信息,现代数据分析也日渐依赖通过呈现图形来阐释含义和表达结果。因此,随着司法大数据研究的深入,法学实证研究者需要从海量的司法数据源获取数据、将数量庞大的数据片段融合在一起、对数据做梳理和标注,并运用最新、最有效的方法进行分析,通过有意义、有吸引力的图形化方式来对于研究的成果进行展示,以便最终将研究结果形成具有针对性的、数据可靠可信的研究报告。对于实现上述目标来说,R是一个理想而又功能全面的软件,它能够轻松完成上述所有复杂的工作。
R语言的运用现状?
R语言在国际和国内的发展差异非常大,国际上R语言已然是专业数据分析领域的标准,在国外一些大学的统计教学和科研中已经得到广泛的应用,但在国内依旧任重而道远。根据相关统计结果显示,自1995年至2015年,“谷歌学术”中使用R语言的学术文章数量和占比呈连年增长趋势,而SPSS和SAS等数据统计软件在学术文章中的应用则在2010年以后呈现逐年下降趋势(见图二)。在两个最大的讨论各种数据分析软件的平台“LinkedIn” 和“Quara”中,R语言的关注度也遥遥领先(见图三)。④
图二:1995至2015年“谷歌学术”中显示的运用数据统计软件的学术文章数量
(图片及数据来源:The Popularity of Data Science Software,http://r4stats.com/articles/popularity/)
图三:在LinkedIn 和Quara上各种数据分析软件的关注量
(图片及数据来源:The Popularity of Data Science Software,http://r4stats.com/articles/popularity/)
R语言的优势?
R作为一种为统计计算和绘图而生的语言和环境,是一套开源的数据分析解决方案,得到一个集合众多数据科学家和程序员在内的庞大且活跃的全球性研究型社区的广泛支持。但我们所熟悉的数据统计软件有很多,从最简单的Microsoft Excel,到SAS、IBM SPSS、State、Minitab等,与它们相比R语言的优势在哪?
第一,R的免费性。R是一个完全免费的、开放的数据统计软件,它可以随时随地下载,且在使用时完全不必担心侵犯版权问题。这在众多价值不菲的数据统计软件中简直是“一股清流”,对于教师和学生在科研和学习中的运用,好处是显而易见的。
第二,R的包容性。首先,R是一个开源项目,在很多操作系统上都可以得到,包括Windows、MAC OS X和Linux系统的版本,这意味着它基本上可以运行于你所拥有的任何计算机上(甚至存在R语言的手机安装教程,当然并不推荐大家尝试)。其次,R是一个非常全面的数据统计研究平台,它提供了各式各样的数据分析技术,囊括了在其它软件中尚不可用的、先进的统计计算例程,几乎任何类型的数据分析工作皆可在R中完成;最后,R能够从多个数据源中获取并将数据转化为可用的形式,包括文本数据、数据库管理系统、统计软件,乃至专门的数据仓库,当然,它同样可以将数据输出并写入到这些系统之中。
第三,R的强大性。R具有强大的数学统计分析和科学数据可视化功能:首先,R是一个可进行交互式数据分析和探索的强大平台,不但支持典型的数据分析方法,且对任意一个分析步骤的结果均可以轻松保存、操作;其次,R拥有顶尖水准的制图技术,拥有最全面最强大的一系列复杂数据可视化的可用功能。通过一定的学习,使用者可以根据自己的需要“定制”各种精美的图形。(图四即笔者经过几堂课的学习后,第一次通过R语言制作简单的图形)
第四,R的扩展性。R是一个无与伦比的平台,它非常易于扩展,并为快速编程实现新方法提供一套十分自然的语言。相应地,其拥有惊人的更新速度,其处于持续地发展中,每天都在纳入新的功能,新方法的更新速度常常是以周来计算的。⑤
图四:笔者的课堂练习
R语言的学习障碍?
看到这里,相信很多对于法学实证研究感兴趣的同学已经跃跃欲试,迫不及待想要接触和学习功能如此强大、优势如此明显的数据统计软件,但是,在这里我必须要给各位满怀热情的学习者泼一泼冷水,R语言并不是人人都能在短时间内熟练掌握的,它的学习曲线非常得陡峭,因此,与SPSS等其他统计软件相比,它要相对小众很多。可以说,R语言的劣势与其优势一样不容忽视:
第一,R语言的复杂性。R语言的功能非常的丰富,而强大、丰富的功能都是由来自社区开发的数以百计的扩展(包)实现,所以这些好处也是有代价的,这些数量庞大的文件往往比较零散,且很多是由独立贡献者编写的可供选择的模块,因此在收集和应用上存在一定的困难。除此之外,因R语言又易于扩展,所以对于初学者,甚至是经验丰富的R语言用户来说,经常发现一些闻所未闻的新功能,要掌握R语言的所有功能,可以说是一项非常大的挑战。
第二,R语言的门槛性。在培训班的学员群,很多文科生常常抱怨说自己“走错了课堂”,一开始完全在听“天书”。这是由于,虽然R语言的设计之初就是避免通过大量编程实现统计算法,但最为基本的编程能力还是需要的,而对于一般非计算机专业的使用者来说,R语言的学习无疑提高了难度。此外,编程还需要使用大量的专业英文单词,这对于英语语言能力较弱的同学来说,也设置了不小的障碍。
R语言学习的建议?
我是R语言的初学者,是个真正的菜鸟“码农”,虽不至于是位“胆小者”,却仍在R语言的世界里小心翼翼的摸索前行。因此,不能给各位介绍具体的学习经验,在此仅能够提供几点小小的建议:
第一,明确目标,找准学习定位。相信点开本篇文章的大部分读者,都不是计算机专业的学生,或没有太多的计算机知识背景。我们学习的目标,是掌握一种更加有利于自己实证研究的工具,这意味着我们不需要花费过长的时间来做到“精通”R语言。R语言除了内置的基础包,有几万个扩展包,而且其数量还在不断上升,如果要全部掌握,可能需要终身学习,因此我们应该根据自己的实际需要,重点学习有益于自己研究的模块。
第二,掌握一定的统计学基础知识。不管是R语言的学习,还是SPSS等其他统计软件的应用,都需要一定的统计学知识。拥有一定的统计学理论基础,在进行各种统计学软件学习的过程中,会触类旁通,很多难题会迎刃而解。
第三,勤于练习,在“实战”中成长。在培训的课堂上,老师说的最多的话就是“大家自己写一下代码,‘跑’(运行)一下”。目前市面上有很多R语言教材,很容易从其中学会一些基础语法,但如果一直copy书中的代码做练习,而不根据自己的实际需要,尝试亲自编写代码,你可能永远无法设计出符合内心想法的图形。只有在大量的练习中,才能真正学会R语言的应用。
① 参见边根庆,高松,邵必林:《面向分散式存储的云存储安全架构》,《西安交通大学学报》,2011年第1期,第41-45页。
② 参见黄宇达,王换换,王迤冉:《基于R语言的煤炭产品销售预测实证研究》,《计算机与数字工程》2017年第1期,第49页。
③ 参见【美】Robert I. Kabacoff, 《R语言实战》,高涛、肖楠、陈钢译,人民邮电出版社,2013年版,第Ⅵ页。
④ 参见【美】Robert A. Muenchen,The Popularity of Data Science Software,http://r4stats.com/articles/popularity/,访问时间2017年10月22日。
⑤ 参见【美】Robert I. Kabacoff, 《R语言实战》,高涛、肖楠、陈钢译,人民邮电出版社,2013年版,第4-6页。