第1章 绪论

1.1 为什么学习R语言

1.1.1 R是什么

R和Python之所以能取得如此的关注,部分原因是大家对其他同类软件的不接受。SPSS的操作可谓“傻瓜级”的,点点鼠标就好了,对编程的要求很弱,与多数人眼中的高级软件有些出入,于是就这样被忽略了。SAS软件是出了名的难安装,在软件安装上就能将一大半的初学者拦在门外,SAS高达8个G的内存占有量,配合着高昂的价格,几乎不适用于个人数据分析。Matlab毕竟不是为专门统计分析而设计的,其他的统计软件相对小众,这样一来,R与Python就因为它们容易安装,编程自由度高的特性脱颖而出。

2008年起,统计之都在中国人民大学举办了第一届中国R语言会议。自此R语言会议(见图1.1),规模越来越大,至今已成功举办了10届。图1.2给出了TIOBE公布的2008年1月编程语言排行榜。

图1.1 R语言大会会场

图1.2 编程语言排行榜TOP10榜单

相比于2017年,R是热度增长速度最快的语言,较2017年上升38位(http://www.hangge.com/blog/cache/detail_1925.html)。图1.3是R语言的发展趋势。

图1.3 TIOBE Index for R

1.1.2 R语言主要优势

R有哪些出色的特征让大家爱不释手呢?

(1)作图美观,完全免费

① R语言具有卓越的作图功能。既可以画如图1.4所示的统计分析图,又可以画如图1.5的北京出租车轨迹图。

图1.4 R可视化示例

图1.5 北京出租车轨迹图

② R语言是世界各地有开源精神的极客们共同贡献出来的精品,在官网上直接下载即可用,高大上的统计分析触手可及,完全免费。

(2)算法覆盖广,软件扩展易

①算法覆盖广。作为统计分析工具,R语言几乎覆盖整个统计领域的前沿算法。从神经网络到经典的线性回归,数千个R包,上万种算法,开发者都能找到可直接调用的函数实现。

②软件扩展易。作为一款软件系统,R语言有极方便的扩展性。

R语言还可以轻松与各种语言完成互调,比如Python,还有C,都可无缝对接。

(3)强大的社区支持

作为一个开源软件,R背后有一个强大的社区和大量的开放源码支持,获取帮助非常容易。

比如国外比较活跃的社区GitHub和Stack Overflow等,通常R包的开发者会先将代码放到GitHub,接受世界各地的使用者提出问题,然后修改代码,等代码成熟后再放到CRAN上发布。

国内最活跃的R社区就数统计之都以及统计之都旗下的COS论坛了,统计之都会经常发布与R相关的优质文章,还会不定期举办线下研讨会,以及规模巨大的R语言会议;而COS论坛则是中文R语言技术问答社区,它们提供的内容对R语言学习者具有很高的参考价值。

(4)非过程模式

Python虽然也支持命令模式,但是相对来说,更偏向于流程控制语句。R语言基本上不需要用到流程控制(当然,它也支持流程控制)。

(5)交互性

按回车键,输出结果。但是又不像SPSS那种用鼠标的交互方式。

(6)统计学特性

这是R语言与其他所有计算机语言最本质的区别,R语言是一门统计学家发明的语言(其他语言基本上都是程序员发明的)。

1.2 正确的数据思维观

思维对于整体分析思路,甚至分析结果都有着关键性的作用。普通数据分析师与高级数据分析师的差异就是是否树立了正确的数据思维观。正确的数据思维观与数据敏感度有关,类似于情商,看不见,摸不着。简单来说,正确的数据思维观是一种通过数据手段解决问题的思维,包括数学思维、统计思维和逻辑思维。

1.2.1 数学思维

数学从提供解决问题的方法到变成数学工具,再变成数学思维,这一演变的过程为我们提供了解决问题的思路,思考问题的方法。数据分析的思维可以借鉴数学思维,从解决实际问题的角度出发,找到需要解决这个问题的元素,一层一层地剥离下去,最终联系到我们已有的资源。同样,我们也可以抛开数据分析的实际应用场景,去探索数据分析方法,对已有的数据进行聚类、分类等探索性分析,提升数据的使用效率,挖掘数据中的潜在价值。

数学思维一方面体现在它的方向性,另一方面是客观性。数学思维能够帮助我们摒弃主观的偏见与看法。如遇到突发事件能在第一时间冷静下来,抛去恐慌的情绪;对自己喜欢的项目客观分析,不对数据进行修饰;对错误能客观评论,给出解决方法等。对数据分析师而言,一旦进入工作就要绝对理性与客观,这也是数据分析师思考问题的前提。

任何人都会犯错误,如何对待自己犯下的错误是衡量一个数据分析师处理问题客观性的重要标准。人们在面临指责时的本能反应是逃避或者反击,这是人性的弱点,数据分析师能否克服这样的弱点将是他能否进阶的重要因素。

大家都读过历史类或是战争类的小说,谋士给统帅的策略一般会有上策、中策和下策,而统帅经常会出于人道主义原则选择中策或是下策。越是厉害的谋士给出策略的出发点越是绝对理性,不考虑情怀,一切以成功为最终目的。数据分析师就要具有这种谋士的精神,客观与理性地解决问题。同样,只要统帅提出问题,谋士总能给出解决方案,虽然有些理想主义的情怀,但是能从一定意义上反映数学思维的两个方面:分析问题的方式和处理问题时的态度。

技能是容易掌握的,但是思维却是很难培养的。

思维与技能作为数据分析思维的两个核心要素是衡量一个数据分析师水平的软指标,培养自己的思维与处理问题的技能需要在实践中不断完善和改进。

1.2.2 统计思维

相比于数学,统计学在日常生活中的应用要明显而又简单得多。日常生活中接触的求和、平均值、中位数、最大值等其实都是统计学的一部分。统计学有一个非常经典的理论叫回归分析,回归就是“返祖现象”模型。平均值就是用来衡量回归标准的一个方法,数据围绕着平均值波动,并有向平均值靠拢的趋势即为回归。示意图如图1.6所示。

图1.6 回归分析示意1

一条曲线围绕着一条直线上下波动,从某种意义上说可以把这条直线理解为这条曲线的回归线,平均值的思想在某种程度上也来源于此。

显而易见,图1.6和图1.7的一个显著不同就是波峰和波谷距离平均线的距离一大一小,在统计学上用方差来解释这一差异。

图1.7 回归分析示意2

公式如下:

统计思维是通过统计学方法来表述数据的分布特征。已知一组试验(或观测)数据为

x1, x2, …, xn.

它们可以是从所要研究的对象的全体,即总体X中取出的,这n个观测值就构成一个样本。在某些简单的实际问题中,这n个观测值就是所要研究问题的全体。数据分析的任务就是要对这n个数据进行分析,提取数据中包含的有用信息。

数据作为信息的载体,当然要分析数据中包含的主要信息,即要分析数据的主要特征(指标),如数据的集中位置、分散程度、数据分布和数据相关等。

从思维科学角度看统计思维可归类为:描述、概括和分析。这些词粗看起来意思差不多,但有本质差别。

(1)描述

“描述”就是对事物或对象的客观印象。如果我们把描述概念对应到数据上,可以理解为这堆数据“长什么样”,对数据的描述能够让人感悟到数据的真实长相。“描述”使用的指标通常是如下统计量:平均数、众数、中位数、方差、极差和四分位点。这些指标就好像是数据的“鼻子”“眼睛”“嘴唇”“眉毛”等。

我们面临的数据成千上万,如果把这些数字全部列出来很难看出什么信息,上述指标能让这些庞大繁杂的数据一目了然,虽不见数据却也知道数据长什么样,这就是“描述”。

(2)概括

“概括”是形成概念的过程,把大脑中所描述的对象中的某些指标抽离出来并形成一种认识,就好像对一个人“气质”的概括。“气质”是基于这个人的“谈吐”“衣着”“姿势”“表情”等指标综合在一起,然后基于历史,对“气质”这样的概念得出结论。“气质”不可以依靠眼睛感受直接获取,而是需要收集这个人的细节描述信息,形成对这个人的整体印象。

如果将“概括”这样的概念引入数据分析,常见的就是分布。

例如,我们抛10000次均匀的骰子,记录每次的点数,会得到这样一组数据:

2,5,1,6,3, …,4,6,1

计算1~6出现的概率,X表示点数的随机变量,P表示概率,会发现:

P(X=1)≈1/6

P(X=2)≈1/6

P(X=3)≈1/6

P(X=4)≈1/6

P(X=5)≈1/6

P(X=6)≈1/6

于是,我们说随机变量X服从均匀分布(见图1.8)。

图1.8 均匀分布

同样,正态分布可以理解为都趋向于中间点的分布(见图1.9)。

图1.9 正态分布

“概括”的意义在于用一两个简单的概念就能传递出大量的信息,就好像说某某姑娘“御姐范”“萝莉范”,我们说数据服从正态分布是从数据的描述性指标中抽取均值和方差作为关键元素,结合已经掌握的经验知识给予数据有关概括:均值为μ,方差为σ2;对统计稍有了解的人听完后就基本了解了这组数据的特征。所以说,“概括”是在描述的基础上抽离出来的概念。

到这里,基本可以看到“描述”与“概括”的意义了。在庞大繁杂的数据中,我们需要一些东西(指标)来了解数据,掌握数据的特点,熟悉数据的结构,才能为下一步的分析做准备。

图1.10给出一维数据分布的特征,图1.11给出分布形态的度量。

图1.10 一维数据分布的特征

图1.11 分布形态的度量

(3)分析

“分析”就是将研究对象的整体分为各个部分、方面、因素和层次,并加以考察的认知活动,也可以通俗地解释为发现隐藏在数据中的“模式”和“规则”。

“分析”的有效性建立在这样一个假设基础上:一切结果都是有原因的。就好像“世上没有无缘无故的爱,也没有无缘无故的恨”。

“描述”获取数据的细节,“概括”得到数据的结构,“分析”得到想要的结论。“分析”区别于“描述”和“概括”一个非常重要的特征就是以目标为前提,以结果为导向。

假设我们采集到B地1000名20岁男性的身高:

1.69,1.77,1.81,1.74,2.76, …,1.80,1.74,1.68,1.75

采集到A地1000名20岁男性的身高:

1.70,1.75,1.82,1.75,1.76, …,1.81,1.75,1.69,1.78

放在一起得到2000个观测值的矩阵,我们想知道A地男生身高与B地男生身高的差异情况,分析方法如下。

均值μ1=μ2

方差σ1=σ2

比较数据分布

T-test检验

……

我们看到数据的“描述”和“概括”在数据分析中起到的作用。如果“描述”与“概括”是向别人呈现一组数据,那么“分析”就是从描述与概括中抽离出能够实现目标的元素:A地男生的身高要高于B地男生。

对一名数据分析人员来说,分析数据的目的性尤为重要。相关分析、回归分析、统计推断是“分析”思维的主要任务。

图1.12解释了统计思维各方法的相互关系。

图1.12 统计思维相互关系

1.2.3 逻辑思维

逻辑思维是人的理性认识阶段,是人运用概念、判断、推理等思维类型反映事物本质与规律的认识过程。逻辑思维是人的认识的高级阶段,即理性认识阶段。

逻辑思维是一种确定的,而不是模棱两可的;前后一贯的,而不是自相矛盾的;有条理、有根据的思维。逻辑思维要用到概念、判断和推理等思维形式和比较,分析,综合,抽象和概括等思维方法。而掌握和运用这些思维形式和方法的程度,也就是逻辑思维的能力。

判断在前,推理在后,这是逻辑思维最重要的特点。就像走路一样,走第一步之前,你必须脚踏实地。你脚下不能是空的,只有在走之前确认你脚下有地,这样才可以走第一步。如果脚下是空的,你怎么走?你再怎么迈步子都走不出去一步。没错,迈步子就是推理,而在迈步子之前你必须辨别你是否脚踏实地。

现在很多人思考问题都下意识地忘了去看自己脚下是否有路,这样就导致这些人胡说八道。虽然有时候他们说的貌似有理有据,但是他们连出发点都没有,很明显这样的分析无任何意义。

逻辑思维具体包括以下几点。

(1)上取/下钻思维

①上取思维就是在看完数据之后,要站在更高的角度去看这些数据,站在更高的位置上,从更长远的观点来看,从组织、公司的角度来看,从更长的时间段(年、季度、月、周)来看。从全局来看,你会怎样理解这些意义呢?也许上取思维能让你更明白方向。

②下钻思维就是把事物分解分析。数据是一个过程的结果反映,怎样通过看数据找到更多隐藏在现象背后的真相,需要把事物分解分析。

原理:显微镜原理。

关键:知道数据的构成,分解数据的手段以及对分解后数据的重要程度的了解。

思维:哪些数据需要分解分析?

(2)求同/求异思维

①求同思维就是,一堆数据摆在面前,表现出各异的形态,我们要在种种的表象背后找出其具有的共同规律。

关键:找到共性的东西,要客观。

思维:现在的整体数据表现出什么问题?是否有规律可循?

②每个数据都有相似之处,同时,我们也要看到它们不同的地方、特殊的地方,这就是求异思维。

关键:对实际情况的了解,对日常情况的积累,对个体情况的了解,对个体主观因素的分析。

思维:你了解你的下属员工吗?如何帮助他们分析问题,从自身找到解决方案。

(3)抽离/联合思维

①当你从一个旁观者的角度看待数据时,往往能发现那些经常让我们迷失方向的细枝末节。这时,你采用抽离思维更加能够帮助到你。

关键:多种分析方法,多角度看问题,不要钻牛角尖,多学习别人的好方法,学会集思广益,发散性思维。

思维:你的学习能力和方法有效吗?

②联合思维就是站在当事人的角度去思考和分析,这样你才会理解人、事和物。

关键:了解当事人的情况,学会换位思考。

思维:你了解周边的情况和周围的人吗?

(4)离开/接近思维

①通过数据分析,你发现你处在一个不太有利的地位,那么,此时你就要运用离开思维想办法,离开困境。

关键:学会自我调节,自我放松。

思维:遇到难题,你怎么办?

②要达成目标,实现销售增长,这时候你需要运用接近思维来帮助你。

关键:多接触你要解决的问题,花时间分析。你要的是方案,不是问题。

思维:你在做选择题还是问答题,责任点在哪?

(5)层次思维

①问题发现是第1步,要怎样分析问题,找到真正的原因,就要熟练地运用理解层次(见图1.13)。

图1.13 问题的展开方式

关键:你需要熟悉客观环境,员工的能力、行为的规律以及他需要什么。

思维:你能够分析到哪一步?

②问题结构是由现状、直接原因以及最终原因构成的。针对直接原因进行的叫初步问题分析,针对最终原因进行的分析叫深层次问题分析。

习题

1.正确的数据思维观包括数学思维、________、逻辑思维。

2.________是容易掌握的,但是________却是很难培养的。

3.数学思维的两个特征是________和________。

4.常用统计量包括________、________、________、________。

5.从思维科学角度看统计思维可归类为________、________和________。

6.把大脑中所描述的对象中的某些指标抽离出来并形成一种认识称为________。

7.把事物分解分析称为________思维。

8.显微镜原理属于________思维。

9.当一堆数据摆在我们面前时,表现出各异的形态,然而我们却要在种种的表象背后,找出其有共同规律的特点,称为________思维。

10.换位思考属于________思维。