写点什么

选择 R 语言做统计分析的理由

2013 年 11 月 05 日

R 语言是 S 语言的一种开源实现,一种用于数据分析和图形化的编程环境。资深分析师 Catherine 最近撰文结合自己的实践经验详细介绍了R 语言的优点和缺点。

Catherine 指出,R 主要用于做统计工作。你可以把它看成是像 SAS Analytics 分析系统的竞争者之一,R 如此强大,诸如 StatSoft STATISTICA 或者 Minitab 与 R 相比,就不值一提了。

许多专业的政府部门、商业和制药行业的统计人员和方法论者把他们的事业都倾注在了 IBM 的 SPSS 或者是 SAS 上,但是他们并不用写一条 R 代码就能用。所以,从某种程度上来说,决定去学习 R 是一个事关企业文化和你如何去工作的问题。我在我的统计咨询实践中使用好几种工具,但是我所用的大部分都是 R。

关于 R 语言的优点,Catherine 列举了若干条:

  • R 是一个强大的脚本语言。我最近被邀请去分析一次概略研究的结果。这些研究者翻阅了 1600 篇研究论文,并把这些内容用几种标准来编码——事实上是大量的标准,并且这些标准还包括多个选项和分支。他们的数据曾经放到微软的 Excel 表格中,这表格中居然包括 8000 列,然后这些列大多是是空的。这些研究者们想要在不同的类别和标题下对总数进行压缩,R 是一种强大的脚本语言,它能够像 Perl 的正则表达式一样来处理文本。凌乱的数据需要编程语言这样的资源,尽管 SAS 和 SPSS 有处理那些超越下拉菜单任务的脚本语言,但是 R 是被用作一门编程语言来写的,因此,对于这一目的,R 是一种更好工具。
  • R 领导新的方式。许多新的统计学方面的产品在成为商业平台之前,最初是作为 R 的包而出现的。我最近得到关于病人回访的医学研究的数据。对于每一个病人,我们有医生曾经建议的治疗条目的数量,同时也有病人实际记住的条目数量。自然模型是β- 二项分布。自 20 世纪 50 年代以来,这一点已经被广泛熟知,但是把估计程序与感兴趣的协变量关联起来却是最近的事情。通常,像这样的数据都要用一般估计方程来处理,但 GEE 方法是渐进的,并且假设前提是样本足够大。我曾经希望 R 能够拥有处理广义线性模型与β- 二项式的能力。恰好最近的一个包估计了这个模型: Ben Bolker 所写的β- 二项式。SPSS 都没有完成这个功能。
  • 与文档整合在一起发布。R 能够很好的与 LaTex 文档发布系统整合在一起,这意味着来自于 R 的统计输出和图形可以嵌入到可出版级的文档中。这并不是适合每一个人,除非你想写一本关于数据分析的书,或者你是不喜欢把你的结果拷贝到一个字符处理文档中,最短和最优雅的途径是通过 R 和 LaTex 来实现。
  • 没有花费。作为一个小企业的老板,我很喜欢 R 是免费的这一特点。甚至对于一个大企业,要知道你可以带一个有临时基础的人来,然后快速的让他们坐到工作站旁来使用领先的分析软件是一件很美妙的事情。没必要担心预算问题。

Catherine 进一步指出,R 是在 S-Plus 开发的附加模型的基础上对 S 的一种实现。有时候,同样的人也参与进对 R 的开发中。R 是在 GNU 许可证下的一个开源项目,在此基础上,R 通过不断的添加大量的包而持续增长。R 把那些能被当做同一组安装,并且可以被 R 在会话期访问的数据集合、R 函数、文档和动态加载项用 C 或者 Fortran 打包到一起。R 的包添加新的功能到 R,并通过这些软件包,研究人员可以很容易地分享他们的同龄人之间的计算方法。某些软件包是范围有限的,其他代表统计学的整个领域,含有其他一些包含了前沿的发展。事实上,许多统计学方面的开发包在变成商业软件之前最开始都是以 R 的包的形式出现的。

对于 InfoSphere Streams 和 R 语言的关系,Catherine 表示,InfoSphere Streams 的是一种先进的计算平台,允许用户开发的应用程序,以快速的采集、分析和关联信息,因为它会接收到数以千计的实时数据源,处理非常高的数据传输率:高达每秒数以百万计的事件或消息。它包括一个 R- 项目工具包。

InfoSphere Streams 是一个计算平台,集成了对数以千计的数据源高流速的数据进行分析的开发环境。这些数据流的内容通常是非结构化或半结构化的。分析的目标是检查对那些基于实时事件的数据和直接决策的模式变化。SPL 是 InfoSphere Streams 的编程语言的简写,它通过一个反映了数据的动态本质和快速分析和响应的必要范式来组织数据。

我们从经典统计分析的电子表格和通常的平面文件还是有很长的路要走的,但 R 都能适应。至于 3.1 版,SPL 应用程序可以将数据传递到 R,从而使用 R 的丰富的包库。InfoSphere Streams 支持通过创建相似的 R 对象来接收包含着 SPL 元组(SPL 中基本的数据结构)中的信息来支持 R 分析。InfoSphere Streams 的数据可以传递到 R 作进一步的分析并把结果传回给 SPL。

当然,R 语言不是完美无缺的,Catherine 也列举了 R 语言的缺点:

  • R 不是一个数据仓库。在 R 输入数据的最简单的方法是输入在别处,然后将其导入到 R。R 已作出努力来添加电子表格的前端,但还没有做到完美。对电子表格功能的缺乏不仅影响数据输入并且这对在 R 可视化的查看数据也很难,而这些事情,你在 SPSS 和 Excel 中都可以完成。
  • R 使得普通的任务在医疗研究中变得艰难。例如,当列出无应答和丢失的数据的发生的时候,你处理数据的第一步是对所有变量汇总统计。这在 SPSS 只需要点击几次鼠标,但 R 有没有内建的函数来计算这个相当明显的信息,并以表格形式显示出来。你可以很轻松地写一些东西出来,但有时你只是想用鼠标操作即可。
  • R 的学习曲线是艰难的。一个新手可以打开一个菜单驱动的统计平台,并在几分钟内得到结果。并不是每个人都想从一个程序员变成一个分析师,当然,也许不是每个人必须这样。
  • R 是开源的。R 社区非常大,成熟,并且活跃度也很高,毫无疑问,R 是其中较为成功的开源项目。正如我所展示的那样,R 的实现花了 20 年以上的时间,并且 S 语言比 R 时间更长。它是一个论证过了的概念和产品。但是,任何开放源码的产品,它的可靠性依赖于透明度。我们相信代码,因为我们可以检查代码,,并且别人也可以检查代码进而报告错误。这与那些采取它在自己的基准,并验证其软件的公司项目是不同的。而对于那些较少被使用的 R 包,你没有理由相信它们做出了正确的结果。
2013 年 11 月 05 日 06:269399
用户头像

发布了 501 篇内容, 共 214.3 次阅读, 收获喜欢 29 次。

关注

评论

发布
暂无评论
发现更多内容

100 位优质创作者签约计划|技术编辑能力考核

InfoQ写作平台官方

活动专区 签约计划

你真了解开源许可证吗?

郭旭东

开源 开源许可证

Adobe国际认证,Photoshop软件“展开画布”官方教程

Adobe国际认证

科技赋能城市建设,英特尔正式发布智慧社区解决方案参考架构

intel001

一位入职蚂蚁金服,年薪180万的大佬扔给我的笔记,看完发现差距不止一点点!

Java架构追梦

Java 阿里巴巴 架构 面试题总结 全套面试题

中国唯一入选 Forrester 领导者象限,阿里云 Serverless 全球领先

Serverless Devs

阿里云 Serverless 云原生

Python基础之:Python中的异常和错误

程序那些事

Python Python3 程序那些事

Mongodb特定场景性能数十倍提升优化实践(记一次十亿级mongodb核心集群雪崩故障)

杨亚洲(专注mongodb及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

Rust从0到1-基础概念-注释

rust 代码注释

百度飞桨中国行南京站开启!共研AI赋能产业新模式

百度大脑

百度 AI 飞桨

Java学习之路 -- Java怎么学?

秦怀杂货店

Java 编程 基础 书籍

面试官:说说JavaScript中的事件模型

我家有萌🐱

JavaScript 前端 js 面试‘’

求职阿里Java 技术岗位的经历,三轮技术面+HR面,面试也不过如此

Java成神之路

Java 程序员 架构 面试 编程语言

实战案例丨分布式系统中如何用python实现Paxos

华为云开发者社区

Python 算法 分布式系统 PAXOS 集群库

Python+OpenCV检测灯光亮点

不脱发的程序猿

Python OpenCV 28天写作 3月日更 检测灯光亮点

助力金三银四跳槽季,《Java面试突击版》第四版强势来袭

Java成神之路

Java 程序员 架构 面试 编程语言

Hudi on Flink 快速上手指南

Apache Flink

flink

“广度”和“深度”,是我最终选择蚂蚁的理由

DT极客

JVM-技术专题-Class文件加载虚拟机

李浩宇/Alex

JVM Class字节码

SpringNative:把Spring项目编译成原生程序

Java王路飞

Java 架构 面试 JVM Spring Native

2021突击银四必备:BAT900道Java面试清单!免费开放

比伯

Java 编程 架构 面试 计算机

EGG NETWORK阿凡提超级公链  EFT流量通证信息完全公开源

币圈那点事

微服务时代组件化和服务化的抉择

vivo互联网技术

微服务 组件化 服务化 服务调用

银四30天,苦心啃透java高级工程师面试1000题,涨薪10K很难吗?

云流

Java 编程 程序员 架构 面试

LDO和DC-DC有什么不同?如何选型?

不脱发的程序猿

28天挑战 3月日更 LDO DC-DC 电源转换

常用的视频剪辑软件介绍,自媒体必备工具!

奈奈的杂社

Java 并发系列(二):DCL — Double Check Lock

TroyLiu

Java volatile 多线程 synchronized DCL

独家!阿里云大师深入拆解Java虚拟机,告诉你什么叫细节爆炸

周老师

Java 编程 程序员 架构 面试

首站重庆聚焦智慧物流、呈现最新AI能力

百度大脑

AI 百度大脑

毕业三年,从小公司到大厂,先后四面阿里、小米、美团等,终于收到offer!

Java成神之路

Java 程序员 架构 面试 编程语言

上海工艺美术职业学院加入ACA世界大赛!一流高职,建设院校

Adobe国际认证

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

选择R语言做统计分析的理由-InfoQ