rstudio深度学习_我需要学习R吗?

rstudio深度学习

您已经听说过R。也许您读过类似Sam Siewert的文章“ 云中的大数据 ”。 您知道R是一种编程语言,并且它与统计信息有关,但是它适合您吗?

为什么选择R?

R做统计。 您可以将其视为SAS Analytics等分析系统的竞争对手,更不用说像StatSoft STATISTICA或Minitab这样的简单软件包了。 政府,企业和制药行业中的许多专业统计学家和方法论专家将职业生涯花在IBM SPSS或SAS上,而无需编写一行R代码。 因此,在某种程度上,学习和使用R的决定与企业文化以及您的工作方式有关。 我在统计咨询实践中使用了几种工具,但是我所做的大部分工作都是在R中完成的。这些示例说明了原因:

  • R是一种功能强大的脚本语言。 最近有人要求我分析范围研究的结果。 研究人员阅读了1600篇研究论文,并按照几个标准对它们的内容进行了编码-实际上,大量标准具有多个选项和分支。 他们的数据一旦被整理到Microsoft®Excel®电子表格中,就会包含8,000多个列,其中大多数都是无效的。 研究人员希望汇总不同类别和标题下的总数。 R是一种功能强大的脚本语言,可以访问类似于Perl的正则表达式来处理文本。 凌乱的数据需要编程语言的资源,尽管SAS和SPSS具有脚本语言来处理超出下拉菜单的任务,但R是作为编程语言编写的,因此是用于此目的的较好工具。
  • R带路。 统计方面的许多新发展首先出现在R包中,然后才进入商业平台。 我最近从医学研究中获得了有关患者回忆的数据。 对于每个患者,我们都有医生建议的治疗项目数量,以及患者实际记得的项目数量。 自然模型是β-二项分布 。 自1950年代以来就已知道这一点,但是将模型与感兴趣的协变量相关的估计程序是最近的。 此类数据通常由通用估计方程(GEE)处理,但GEE方法是渐近的,并假定样本很大。 我想要一个具有β-二项式R的广义线性模型。最近的R软件包估计了该模型:Ben Bolker的betabinom 。 SPSS没有。
  • 与文档发布集成。 R与LaTeX文档发布系统顺利集成,这意味着R的统计输出和图形可以嵌入到具有发布质量的文档中。 这并不适合每个人,但是如果您想写一本关于数据分析的书,或者只是不喜欢将结果复制到文字处理文档中,那么最简单,最优雅的方法就是通过R和LaTeX。
  • 免费。 作为一家小企业的所有者,我喜欢R是免费的。 即使对于大型企业,也很高兴知道您可以临时雇用某人,并立即将他们安置在具有领先分析软件的工作站上。 无需担心预算。

R是什么,它的作用是什么?

作为一种编程语言,R与许多其他语言相似。 任何曾经编写过代码的人都会在R中找到很多熟悉的东西。 R的独特之处在于它支持的统计哲学。

统计革命:S和探索性数据分析

在编写和调试程序以执行所需算法之后,计算机一直擅长于计算事物。 但是在1960年代和1970年代,它们在信息(尤其是图形)的显示方面很薄弱。 这些技术局限性以及统计理论中的趋势,意味着统计学的实践和对统计学家的培训都集中在模型构建和假设检验上。 一个假设的世界中,研究人员反对假设(通常是农业的),建立精心设计的实验(在农业站),拟合模型并运行测试。 基于电子表格的菜单驱动程序(如SPSS)反映了这种方法。 实际上,SPSS和SAS Analytics的第一个版本由子例程组成,可以从(Fortran或其他)程序中调用这些子例程,以从模型工具箱中拟合并测试其中的一个子例程。

John Tukey将这个探索性数据分析(EDA)的概念像巨石一样通过玻璃屋顶扔到了这个形式化,理论丰富的框架中。 如今,很难想象有一个时间可以在没有箱形图检查偏斜度和离群值的情况下开始数据集的分析,或者没有针对分位数图对线性模型的残差进行正态性检查的情况。 这些想法起源于Tukey,现在,没有它们就没有介绍性的统计学课程。 并非总是如此。

EDA不仅仅是一种理论,而是一种方法。 该方法的基本原则是以下经验法则:

  • 在可能的情况下,使用图形识别感兴趣的功能。
  • 分析是增量的。 尝试一种模型; 根据结果​​,拟合另一个模型。
  • 使用图形检查模型假设。 标记异常值(如果存在)。
  • 使用可靠的方法来防止偏离分配假设。

Tukey的方法掀起了新的图形方法和鲁棒估计器的发展浪潮。 它也启发了开发一种更适合探索性方法的新软件框架。

S语言是由约翰·钱伯斯(John Chambers)及其同事在贝尔实验室开发的,是用于统计分析的平台,尤其是Tukey类的统计分析平台。 供贝尔内部使用的第一个版本是1976年开发的,但是直到1988年才达到目前的形式。 到那时,贝尔以外的用户也可以使用该语言。 语言的每个方面都适合数据分析的“新模型”:

  • S是在编程环境中运行的一种解释语言。 S的语法与C的语法非常相似,但是遗漏了一些困难的地方。 例如,S负责内存管理和变量声明,因此用户不必编写或调试此类内容。 较低的编程开销使您可以对同一数据集快速进行许多分析。
  • 从一开始,S就允许创建高级图形,并且您可以将功能添加到任何打开的图形窗口。 您可以随时突出显示兴趣点,查询其值,为散点图添加平滑器等。
  • 到1992年,面向对象的语言被添加到了S中。在一种编程语言中,对象构成数据和函数,以满足用户的直觉。 人类的思维总是面向对象的,而统计推理尤其如此。 统计人员可使用频率表,时间序列,矩阵,各种数据类型,模型等电子表格。在每种情况下,原始数字均具有属性和期望:例如,时间序列由观察值和时间点组成。 对于每种数据类型,都需要标准统计数据和绘图。 对于时间序列,我可能会绘制时间序列图和相关图。 对于拟合模型,我可能会绘制拟合和残差。 S支持为所有这些概念创建对象,并且您可以根据需要创建更多对象类。 通过对象,可以轻松地从问题的概念化到在代码中的实现。

一种态度态度的语言:S,S-Plus和假设检验

最初的S语言非常重视Tukey的EDA,以至于除了 EDA之外,其他任何语言都很难做到。 这是一种有态度的语言。 例如,尽管S附带了一些有用的内部功能,但是它缺少一些您希望统计软件拥有的最明显的功能。 没有执行两次样本t检验或任何形式的假设检验的功能。 但是尽管有Tukey,假设检验有时还是正确的做法。

1988年,总部位于西雅图的统计科学(Statistical Science)授予S许可,并将该语言的增强版本S-Plus移植到DOS和更高版本的Windows®中。 真正意识到客户的需求后,统计科学公司将经典统计功能添加到了S-Plus中。 添加了方差分析(ANOVA), t检验和其他模型的功能。 按照S的对象定向,任何此类拟合模型的结果本身就是S对象。 适当的函数调用可提供假设检验的拟合,残差和p值。 模型对象甚至可以包含分析的中间计算步骤,例如设计矩阵的QR分解(其中Q是正交的,R是右上角的三角形)。

有一个R包! 一个开源社区

大约在S-Plus推出的同时,新西兰奥克兰大学的Ross Ihaka和Robert Gentleman决定尝试编写口译员。 他们选择了S语言作为他们的模型。 该项目初具规模并获得了支持。 他们将其命名为R。

R是S-Plus的附加模型,是S的实现。 在某些情况下,同一个人也参与其中。 R是GNU许可下的一个开源项目。 在此基础上,R继续增长,主要是通过添加软件包。 R软件包是C或Fortran中数据集,R函数,文档和动态加载项的集合,可以成组安装并从R会话访问。 R程序包为R添加了新功能,并且通过这些程序包,研究人员可以轻松地在其同级之间共享计算方法。 一些软件包的范围有限,另一些软件包则代表整个统计领域,而某些软件包则包含了最前沿的发展。 实际上,统计学的许多发展首先是作为R包出现的,然后才成为商业软件。

在撰写本文时,R下载站点CRAN上出现了4,701个R软件包。 其中,仅在当天添加了六个。 R似乎可以容纳所有东西。

使用R会发生什么?

注意:本文不是R的教程。下面的示例仅是为了让您了解R会话的外观。

R二进制文件可用于Windows,Mac OS X和多个Linux®发行版。 对于喜欢自己编译的人也可以使用源代码。

在Windows®中,安装程序将R添加到“ 开始”菜单中。 要在Linux中启动R,请打开一个终端窗口,并在提示符下键入R 您应该看到类似图1的内容。

图1. R工作区
rstudio深度学习_我需要学习R吗?_第1张图片

在提示符下键入命令,R响应。

此时,在实际环境中,您可能会从外部数据文件中将数据读取到R对象。 R可以读取多种格式的数据,但是在本示例中,我使用MASS包中的michelson数据集。 这是Venables和Ripley的标志性文本“ 带有S-Plus的现代应用统计信息”的随附软件包(请参阅参考资料 )。 michelson包含来自著名的迈克尔逊和莫雷的实验结果来衡量光速。

清单1中提供的命令加载了MASS包,获取了michelson数据并对其进行了窥视。 图2显示了带有R响应的命令。每行包含一个R函数,其参数放在方括号( [] )中。

清单1.开始一个R会话
2+2             # R can be a calculator. R responds, correctly, with 4.
    library("MASS") # Loads into memory the functions and data sets from 
                    # package MASS, that accompanies Modern Applied Statistics in S

    data(michelson) # Copies the michelson data set into the workspace.

    ls()            # Lists the contents of the workspace. The michelson data is there.

    head(michelson) # Displays the first few lines of this data set.
                    # Column Speed contains Michelson and Morleys estimates of the 
                    # speed of light, less 299,000, in km/s.
                    # Michelson and Morley ran five experiments with 20 runs each.
                    # The data set contains indicator variables for experiment and run.
    help(michelson) # Calls a help screen, which describes the data set.
图2.会话开始和R的响应
rstudio深度学习_我需要学习R吗?_第2张图片

现在让我们看一下数据(参见清单2)。 输出如图3所示。

清单2. R中的箱形图
# Basic boxplot

    with(michelson, boxplot(Speed ~ Expt)) 

    # I can add colour and labels. I can also save the results to an object.

    michelson.bp = with(michelson, boxplot(Speed ~ Expt, xlab="Experiment", las=1, 
                    ylab="Speed of Light - 299,000 m/s", 
                    main="Michelson-Morley Experiments",
                    col="slateblue1")) 
                 
    # The current estimate of the speed of light, on this scale, is 734.5
    # Add a horizontal line to highlight this value.

    abline(h=734.5, lwd=2,col="purple")  #Add modern speed of light

似乎迈克尔逊和莫利系统地高估了光速。 实验之间似乎也存在一些异质性。

图3.绘制箱形图
rstudio深度学习_我需要学习R吗?_第3张图片

当我对分析满意时,可以将所有命令保存到一个R函数中。 参见清单3。

清单3. R中的一个简单函数
MyExample = function(){
        library(MASS)
        data(michelson)
        michelson.bw = with(michelson, boxplot(Speed ~ Expt, xlab="Experiment", las=1, 
        ylab="Speed of Light - 299,000 m/s", main="Michelsen-Morley Experiments", 
            col="slateblue1"))
        abline(h=734.5, lwd=2,col="purple")

    }

这个简单的例子说明了R的几个重要功能:

  • 保存结果 boxplot()函数返回大量有用的统计信息以及图形,您可以通过michelson.bp = ...这样的赋值语句将其保存到R对象,并根据需要提取它们。 任何赋值声明的结果在整个R会话中都是可用的,并且可能成为进一步分析的主题。 boxplot函数返回一个统计矩阵,用于绘制箱形图(中位数,四分位数等),每个箱形图中的项目数以及离群值(在图3中的图形上显示为空心圆) 。 参见图4。
    图4. boxplot函数的统计信息
    rstudio深度学习_我需要学习R吗?_第4张图片
  • 公式语言 -R(和S)具有用于表达统计模型的紧凑语言。 参数中的代码Speed ~ Expt告诉该函数对Expt的每个级别(实验编号)执行Speed的箱形图。 如果我希望进行方差分析来测试Speed是否在整个实验中发生显着变化,我会使用相同的公式: lm(Speed ~ Expt) 。 公式语言可以表达各种统计模型,包括交叉和嵌套效应以及固定和随机因素。
  • 用户定义的R函数 -这是一种编程语言。

R延续到21世纪

Tukey的数据分析探索方法已成为课堂规范。 这是我们的教导,统计学家是这样做的。 R支持这种方法,这可以解释为什么它仍然流行。 面向对象还有助于R保持最新状态,因为新的数据源需要新的数据结构进行分析。 InfoSphere®Streams现在支持与John Chambers设想的数据不同的R分析。

R和InfoSphere Streams

InfoSphere Streams是一个计算平台和集成开发环境,用于分析来自数千个来源的高速数据。 这些数据流的内容通常是非结构化或半结构化的。 分析的目的是检测数据中变化的模式并根据快速变化的事件指导决策。 SPL是InfoSphere Streams的编程语言,它通过一种范式来组织数据,该范式反映了数据的动态性质以及对快速分析和响应的需求。

与电子表格和经典统计分析的常用平面文件相比,我们还有很长的路要走,但是R可以适应。 从3.1版开始,SPL应用程序可以将数据传递给R,从而可以利用R的扩展软件包库。 InfoSphere Streams通过创建适当的R对象以接收SPL 元组 (SPL中的基本数据结构)中包含的信息来支持R分析。 因此,可以将InfoSphere Streams数据传递到R进行进一步分析,并将结果传递回SPL。

什么R不好

公平地说,R在某些方面做得不好或根本做不到。 R也并非同样适合每个用户:

  • R不是数据仓库。 在R中输入数据的最简单方法是在其他地方输入数据,然后将其导入R。已经做出了努力将电子表格前端添加到R中,但是并没有流行。 缺少电子表格功能不仅会影响数据输入,而且像在SPSS或Excel中一样,以可视方式检查R中的数据也很困难。
  • R使普通任务变得困难。 例如,在医学研究中,处理数据的第一件事是为所有变量计算汇总统计信息,同时列出无响应和缺失数据的发生情况。 这是SPSS中的三击式过程,但是R没有内置函数来计算此明显的信息并以表格形式显示。 您可以轻松地编写一些内容,但有时您只想指向并单击即可。
  • R的学习曲线很重要。 新手可以打开菜单驱动的统计平台,并在几分钟内获得结果。 并非每个人都希望成为一名程序员来成为分析师,也许不是每个人都需要。
  • R是开源的。 R社区庞大,成熟且活跃,R无疑是更成功的开源项目之一。 正如我所展示的,R的实现已有20多年的历史了,而S语言的实现时间更长。 这是一个成熟的概念和成熟的产品。 但是,对于任何开源产品,可靠性都取决于透明度。 我们相信该代码,因为我们可以自己检查它,也因为其他人可以检查它并报告错误。 这与承担基准并验证其软件的公司项目不同。 对于较少使用的R包,您没有理由假设它们实际上产生了正确的结果。

结论

我需要学习R吗? 也许不是; 需求是一个强有力的词。 但是R是用于数据分析的有价值的工具吗? 当然。 该语言的设计明确反映了统计学家的思维和工作方式。 R加强良好的习惯和声音分析。 对我来说,这是完成这项工作的正确工具。


翻译自: https://www.ibm.com/developerworks/analytics/library/bd-learnr/index.html

rstudio深度学习

你可能感兴趣的:(编程语言,大数据,python,机器学习,人工智能)