R语言学习由浅入深路线图

Python08

R语言学习由浅入深路线图,第1张

R语言学习由浅入深路线图_数据分析师考试

现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言。

对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑到论坛上吼一嗓子,然后欣然or悲伤的离去,一直到遇到下一个问题再回来。当然,这不是最好的学习方式,最好的方式是——看书。目前,市面上介绍R语言的书籍很多,中文英文都有。那么,众多书籍中,一个生手应该从哪一本着手呢?入门之后如何才能把自己练就成某个方面的高手呢?相信这是很多人心中的疑问。有这种疑问的人有福了,因为笔者将根据自己的经历总结一下R语言书籍的学习路线图以使Ruser少走些弯路。

本文分为6个部分,分别介绍初级入门,高级入门,绘图与可视化,计量经济学,时间序列分析,金融等。

1.初级入门

《An Introduction to R》,这是官方的入门小册子。其有中文版,由丁国徽翻译,译名为《R导论》。《R4Beginners》,这本小册子有中文版应该叫《R入门》。除此之外,还可以去读刘思喆的《153分钟学会R》。这本书收集了R初学者提问频率最高的153个问题。为什么叫153分钟呢?因为最初作者写了153个问题,阅读一个问题花费1分钟时间,全局下来也就是153分钟了。有了这些基础之后,要去读一些经典书籍比较全面的入门书籍,比如《统计建模与R软件》,国外还有《R Cookbook》和《R in action》,本人没有看过,因此不便评论。

最后推荐,《R in a Nutshell》。对,“果壳里面的R”!当然,是开玩笑的,in a Nutshell是俚语,意思大致是“简单的说”。目前,我们正在翻译这本书的中文版,大概明年三月份交稿!这本书很不错,大家可以从现在开始期待,并广而告知一下!

2.高级入门

读了上述书籍之后,你就可以去高级入门阶段了。这时候要读的书有两本很经典的。《Statistics with R》和《The R book》。之所以说这两本书高级,是因为这两本书已经不再限于R基础了,而是结合了数据分析的各种常见方法来写就的,比较系统的介绍了R在线性回归、方差分析、多元统计、R绘图、时间序列分析、数据挖掘等各方面的内容,看完之后你会发现,哇,原来R能做的事情这么多,而且做起来是那么简洁。读到这里已经差不多了,剩下的估计就是你要专门攻读的某个方面内容了。下面大致说一说。

3.绘图与可视化

亚里斯多德说,“较其他感觉而言,人类更喜欢观看”。因此,绘图和可视化得到很多人的关注和重视。那么,如何学习R画图和数据可视化呢?再简单些,如何画直方图?如何往直方图上添加密度曲线呢?我想读完下面这几本书你就大致会明白了。

首先,画图入门可以读《R Graphics》,个人认为这本是比较经典的,全面介绍了R中绘图系统。该书对应的有一个网站,google之就可以了。更深入的可以读《Lattice:Multivariate Data Visualization with R》。上面这些都是比较普通的。当然,有比较文艺和优雅的——ggplot2系统,看《ggplot2:Elegant Graphics for Data Analysis》。还有数据挖掘方面的书:《Data Mining with Rattle and R》,主要是用Rattle软件,个人比较喜欢Rattle!当然,Rattle不是最好的,Rweka也很棒!再有就是交互图形的书了,著名的交互系统是ggobi,这个我已经喜欢两年多了,关于ggobi的书有《Interactive and Dynamic Graphics for Data Analysis With R and GGobi》,不过,也只是适宜入门,更多更全面的还是去ggobi的主页吧,上面有各种资料以及包的更新信息!

特别推荐一下,中文版绘图书籍有谢益辉的《现代统计图形》。

4.计量经济学

关于计量经济学,首先推荐一本很薄的小册子:《Econometrics In R》,做入门用。然后,是《Applied Econometrics with R》,该书对应的R包是AER,可以安装之后配合使用,效果甚佳。计量经济学中很大一部分是关于时间序列分析的,这一块内容在下面的地方说。

5.时间序列分析

时间序列书籍的书籍分两类,一种是比较普适的书籍,典型的代表是:《Time Series Analysis and Its Applications :with R examples》。该书介绍了各种时间序列分析的经典方法及实现各种经典方法的R代码,该书有中文版。如果不想买的话,建议去作者主页直接下载,英文版其实读起来很简单。时间序列分析中有一大块儿是关于金融时间序列分析的。这方面比较流行的书有两本《Analysis of financial time series》,这本书的最初是用的S-plus代码,不过新版已经以R代码为主了。这本书适合有时间序列分析基础和金融基础的人来看,因为书中关于时间序列分析的理论以及各种金融知识讲解的不是特别清楚,将极值理论计算VaR的部分就比较难看懂。另外一个比较有意思的是Rmetrics推出的《TimeSeriesFAQ》,这本书是金融时间序列入门的东西,讲的很基础,但是很难懂。对应的中文版有《金融时间序列分析常见问题集》,当然,目前还没有发出来。经济领域的时间序列有一种特殊的情况叫协整,很多人很关注这方面的理论,关心这个的可以看《Analysis of Integrated and Cointegrated Time Series with R》。最后,比较高级的一本书是关于小波分析的,看《Wavelet Methods in Statistics with R》。附加一点,关于时间序列聚类的书籍目前比较少见,是一个处女地,有志之士可以开垦之!

6.金融

金融的领域很广泛,如果是大金融的话,保险也要被纳入此间。用R做金融更多地需要掌握的是金融知识,只会数据分析技术意义寥寥。我觉得这些书对于懂金融、不同数据分析技术的人比较有用,只懂数据分析技术而不动金融知识的人看起来肯定如雾里看花,甚至有人会觉得金融分析比较低级。这方面比较经典的书籍有:《Advanced Topics in Analysis of Economic and Financial Data Using R》以及《Modelling Financial Time Series With S-plus》。金融产品定价之类的常常要用到随机微分方程,有一本叫《Simulation Inference Stochastic Differential Equations:with R examples》的书是关于这方面的内容的,有实例,内容还算详实!此外,是风险度量与管理类。比较经典的有《Simulation Techniques in Financial Risk Management》、《Modern Actuarial Risk Theory Using R》和《Quantitative Risk Management:Concepts, Techniques and Tools》。投资组合分析类和期权定价类可以分别看《Portfolio Optimization with R》和《Option Pricing and Estimation of Financial Models with R》。

7.数据挖掘

这方面的书不多,只有《Data Mining with R:learing with case studies》。不过,R中数据挖掘方面的包已经足够多了,参考包中的帮助文档就足够了。

以上是小编为大家分享的关于R语言学习由浅入深路线图的相关内容,更多信息可以关注环球青藤分享更多干货

15分钟掌握12个极简统计学分析方法- 玩好一二三四五就能上山打老虎

程晓华

2022-6-12

我的新书《全面库存管理数学分析》上市后,很多读者反馈说“看不懂”。这件事一直搞得我很郁闷,但我也很理解,其实很多人,也包括我在内,上大学的时候的3门“高等数学”(高等数学、线性代数、概率与数理统计,一般工科生的必修课,在这里,包括在我的书里统称“高等数学”)可能都没有学好,光去应付考试了,考完了也就完了,根本谈不上应用的问题,尤其是工作时间一长,除了会算个平均值但也懒得算之外,其他的都还给老师了。

但是,从事供应链管理工作,尤其是做最核心的供应链计划管理,必须要跟数据打交道,要不断地分析数据,挖掘并提炼其背后可能存在的有价值的信号,必要的时候,还可能还需要我们自己用Excel、R语言等工具做一些简单的统计预测之类的工作,这就不可避免地就要用到一些所谓的“高等数学”的知识,尽管很简单,但是,你必须要熟练掌握,达到熟能生巧的程度。

如果说《全面库存管理数学分析》让你感到头疼的话,我建议你先耐着性子,结合Excel,花个十几分钟的时间,把我这篇文章看完,如果你能产生一些兴趣,你就可以继续去读我那本书,学到更多的实用数据分析工具和方法论,但如果你连这个都没有兴趣,甚至是连这个东西也搞不懂,那书不读也罢。

我们小时候都知道的一首儿歌,叫“一二三四五,上山打老虎”,我们这里就用y=(1,2,3,4,5)这组数来举例子,我相信,你如果真正能够搞懂了这个一二三四五,你就真的敢上山打老虎(玩供应链数据分析工作)了!

我们假设这个y=(1,2,3,4,5)是某个公司过去1~5月份(即x =(1,2,3,4,5))的出货量,这里的x代表时间、期间,y代表期间出货量。

我在这里一共列了12个小问题,代表12个数学公式及数据分析方法论:

1. 过去5个月的出货(算术)平均值(average / mean)

这个问题很简单,估计99.999%的人都会算,答案是(1+2+3+4+5)/5=3,对应的Excel函数公式是average( )。

但大家不要小看这个简单的算术平均值(简称均值)计算,这是你对客户需求做到心中有“数”的第一步,这也是我的书第一章反复强调的内容 – 平均值很重要。

按照我个人在供应链管理领域管人、管事的经验来看,如果你能不看电脑、手机,随口就能说出你所负责的某个产品、SKU或者型号的每周的大概的平均需求,你就基本上是做到了心中有“数”。

你可以马上用这个“均值”测测你周围的人,结果可能会让你会很失望!

2. 截尾(0.2)平均值(trimmed mean)

知道这个所谓的截尾平均值的人会有多少呢?我心里没太有个数,因为,如果不是学习R语言,我以前也不知道有这么个东西,所以,我就相信很多人也不知道(我这是在做“极大似然估计(Maximum Likelihood Estimation, MLE)”,《全面库存管理数学分析》第四章的内容),尽管很多人都听说过它的应用,类似“去掉一个最高分,去掉一个最低分,大S的得分是 ……”。

这个定义在供应链管理中也是很有用的,譬如在评估客户历史需求的时候,我们可能人为地去掉那些看似不正常的极大值、极小值,至于比例,你自己决定,Excel公式是 trimmean( ),其中trim本身有修剪的意思,mean其实跟average一样,都是平均值的意思,至于为什么在Excel里面它不是用trimaverage( )来做这个表达式,我们就不得而知了。

我们这个例子y=(1,2,3,4,5),数据量很小,数据本身也很整齐,无论是trim=0.2还是0.1, 0.3, 0.4,结果都是3,但如果你把那个5换成6,再试一下这四个比例,它们的结果就不一样了。如果你感兴趣的话,可以模拟更多的数据看看这个公式到底是表达了什么意思。

3. 中位值(Median)

顾名思义,所谓的中位值就是处于序列中间位置的那个值,在我们这个例子中,一共有5个数,3就是那个中位值,因为它前面两个哥哥,后面有两个妹妹,它是老三嘛!

中位值的Excel公式是median()。

我的理解,这个中位值还有保持“中立”的意思,它不管哥哥妹妹们怎么胡闹,它还是它,永远保持不变。它不像那个算术平均值average,属于墙头草性质,哥哥妹妹们一闹腾,它也跟着折腾,所以它才有个外号叫“被平均”。譬如说,你把这个12345改成12346,中位值还是3,但平均值就从3变成了3.2了。所以,很多时候,我们宁肯相信那个中位值,因为这个平均值不太靠谱,据说还害死过人呢! 我也是听说的:一个大个子的统计学家在一条平均水深不到1米的河里被淹死了

比较理想的情况是这个中位值和平均值是一样的,或者差不多大小,这样的数据结构分布一般是比较好,甚至可能就是传说中的正态分布。

4. 四分位差(Interquartile Range, IQR)

在分析一组数据、一个时间序列的时候,我们通常可以把数据平均分成4段,这样每段数据占总数据个数的25%,估计这个“四分”就是这个意思,而“四分”之后,自然就是“五裂”,也就是4段5个点,而这5个点我们可以分别命名为Q 0 , Q 1 , Q 2 , Q 3 , Q 4 ,Q 0 最小(min),Q 4 最大(max),其它几个分别处于25%,50%,75%的位置,如此以来,那个Q 2 就是老三,但奇怪的是,这里的Q 2 是指平均值(average),不是指那个中位值,我猜可能是统计学家们搞错了:其他几个兄弟姐妹谈的都是“位置”上的数嘛!干嘛这个Q 2 就非得是个平均值呢?

所谓四分位差(Interquartile Range,IQR)就是IQR=Q 3 – Q 1 ,在我们这个12345的例子里,IQR= Q 3 - Q 1 = 4 -2 = 2。

在Excel里面有一种图形叫箱型图(boxplot),其原理就是这个IQR。只是这个箱子的中间是中位值,而不是那个Q 2 (平均值),这跟我理解的是一个意思,Q 2 就应该该是个中位值嘛!但很讨厌的是,这个箱子的两边并不严格等于Q 1 ,Q 4 ,箱子上下还有两条边界线,本来它们就应该是我们下面提到的最小、最大异常值,但它实际上却是Q 0 ,Q 4 ,这也是我非常不理解的地方 – 这样的话,这个箱式图还有多大的意义呢?我理想中的箱式图应该是这样的:箱体中间是Q 2 或中位值,上下盖则是Q 1 ,Q 3 ,以此来显示数据的集中范围,或者是表示数据“应该的分布”范围;上下盖之外伸出的两条天线则应该分别是最大、最小异常值,以此圈定来“正常值范围”,天线之外的则是异常值。我之所以这么认为是因为从供应链管理角度,最大值(max)、最小值(min)是没所谓的,它们本身并不能代表是正常还是异常,我们更关心的是所谓的异常,因为供应链管理有所谓“非正常需求(Abnormal Demand)”这一说。

下面我们就来谈谈这个问题。

5. 异常值(Outlier, 最小异常值、最大异常值)

所谓异常就是不正常,而正常与不正常是相对而言的,既然是相对而言,那就得有个相对的尺度,这个尺度就是最大异常值及最小异常值,范围内的叫“正常值”,范围之外的则是异常值。

这个范围定义为: Q2±1.5IQR。

针对我们的例子y =(1,2,3,4,5),最大异常值就是Q2+1.5IQR=3+1.5×2=6,最小异常值就是Q2 - 1.5IQR=3 - 1.5×2=0,也就是说y里面没有异常值。但如果把那个5换成6,则6必是“异常”,感兴趣的读者可以用Excel套一下那个公式试试看。

需要搞清楚的是,这个所谓的异常值跟第2个问题提到的截尾均值里面的那个“截尾”部分不是一个概念 – 被“截尾”掉的数值不一定是“异常值”,而异常值则应该是被截尾的对象。关于这个结论,我自己并没有进行过严格的数学证明,但大家不妨多弄一些奇奇怪怪的数字,然后用Excel模拟验证一下看看。

6****.方差(Variance)

顾名思义,方差就是“差的平方”,统计学上的方差指一组数的中的每个数减掉其平均值之后的差的平方的平均值。

回到我们的例子y=(1,2,3,4,5),其平均值是3,y-3之后的差为:(-2,-1, 0, 1, 2),差的平方为(4,1,0,1,4),其和为10,其平均值为10/5=2或10/(5-1)=2.5,都可以,表现在Excel公式中,一个是var.p( ),var.s( ),其中的p、s分别代表总体(population)、样本(sample)的意思。在实际应用中,哪个都可以,因为它们是反映数据的相对离散程度,不同的数组之间只要是用同一个公式进行计算并对比衡量即可。

7. 标准差(Standard Deviation)

直接对方差开根号就得到标准差。针对我们的例子,我们可以得到的标准差就是根(2)=1.414或根(2.5)=1.581,或者用Excel公式 stdev.p( )、stdev.s( )计算标准差,两个结果都可以。

这个所谓的标准差其实就是传说中的那个西格玛(σ),一个σ 就是一个标准差。如果你认为需求分布符合正态分布,均值±1σ 就能覆盖68%左右的数据分布,均值±2σ 覆盖95%左右的数据分布,均值±3σ 覆盖99%左右的数据分布;如果你不认为需求分布符合正态分布,那就是随机分布,但没有关系,即使这样,均值±2σ 也能覆盖87%左右的数据分布,均值±3σ 也能覆盖95%左右的数据分布,这是根据马尔可夫不等式(《全面库存管理数学分析》第三章的内容)得出的结论。

8. 需求波动率

标准差除以算术平均值就是所谓的波动率,统计学上叫CV(Coefficient of Variation, 变异系数)。这个CV对于我们分析客户或市场需求非常重要,是需求分类的重要指标之一。

针对我们的12345,其需求波动率为1.414/3= 0.471或 1.581/3=0.527。

同样,这个需求波动率是相对而言的,不同产品或者同一产品来自不同的客户、不同的分销中心,其需求波动率可能是不一样的,在我的书《制造业全面库存管理》里面,这个波动率被用来做XYZ分类。

波动率也是衡量需求聚集效应的一个非常直观的指标 – 被合并了的需求的波动率小于合并前单个需求的波动率之和。

9. 一阶差分值(difference)

所谓的一阶差分就是一组数内部相减,老二减老大,老三减老二,减到最后即可。很简单,我们的例子得到的一阶差分结果就是(1,1,1,1)。

一阶差分的意义是什么呢?

还是针对我们的例子,y=(1,2,3,4,5)是一条斜线,而差分后的序列(1,1,1,1)则是一条水平的直线。从供应链管理角度,你是喜欢你的客户给你的需求是斜线呢还是近似水平的直线好一些?

从统计预测角度,不言而喻,水平的直线更好预测一些,因为需求相对平稳。只是需要大家注意的是,统计学上讲的“平稳”可能跟大家脑子里面想象的不太一致。这个平稳的英文单词是stationary,它是指需求的移动平均值相对稳定,尽管一定期间内的需求可能是起起伏伏的,但这个需求并没有明显的上升或下降的趋势,这就是“需求平稳”,它跟 stable 不是一个意思,stable是指稳定的意思,即每期需求大致相同。

10. 需求的趋势函数(trend function)

针对时间轴x=(1,2,3,4,5),出货量y=(1,2,3,4,5)的函数表达式是什么?

我们可以用两种方法得到结果,一种是用Excel作折线图,添加趋势线,选择“线性”,显示公式,我们得到 y=x;另外一种方法也是在Ecxcel里面用 index(linest( ) )求出y=ax+b中的a的值为1,b=0。

函数与方程思想是数学思想宝库的重要组成部分,供应链管理也需要一些函数与方程思维(有关这部分,包括后面两个知识点的详细内容,大家可以参考《全面库存管理数学分析》第六章)。

11. 需求函数的一阶导数(derivation)

需求函数是 y=x,其一阶导数就是 y’=1,如果你跟第9个问题联系起来看,你就会发现,这个一阶导数跟一阶差分值是相等的,都是1,这是为什么呢?

道理很简单,不是很严谨的理解,无限差分就是微分,微分之后即可求导数。无论是一阶差分还是这个一阶导数,都是表示需求的增长速度。

12. 预测第6期的需求值。

有了前面的工作,这个第6期,即6月份的需求预测就很简单了。我们可以用三种方法来完成这个统计预测:

一是差分预测法:根据第9个问题点,我们得到的差分序列是(1,1,1,1),是一条水平的直线,那么,很自然地,我们就“趋势外推”,运用差分的方程 y 6 -y 5 =y 6 -5=1 求得 y 6 =5+1=6。

第二种方法是利用趋势函数:y=x,当x=6的时候,y=x=6

第三种方法则是利用一阶导数:我们知道该函数的一阶导数就是代表着需求增速,而这个值是1,那么,同样很自然地,我们用 y 5 + 1 =y 6 = 5+1 = 6。

当然,简单省事的统计预测方法还有平均值法,即y 6 = 3或者干脆取上一期的值作为下一期的预测,即y 6 =y 5 =5。

除此之外,你也可以考虑用移动平均法,包括我在一篇文章里提到的“自然加权平均法”来预测这个6月份的需求。

但是,无论哪个预测结果,还是那句话,对于统计预测,你信则有之,不信则无。

【写在结尾处】

我相信,绝大多数的读者都是可以搞得懂这12个知识点的,但是,从搞得懂,到用得上,再到用得熟,甚至是用出彩儿来,这可能需要一个过程,你不下点功夫是不行的。所以,不要小瞧这个12345,弄好了,你一样可以用它去打老虎!你甚至可以认为,这就是《全面库存管理数学分析》的极简版本。

另外,我在问卷星上把这12个知识点做成了考试题,链接如下,有时间可以邀请你周边的同事、朋友,尤其是你的老板们做做看,也好顺便测测他们的智商。

https://ks.wjx.top/vm/YDIAWDg.aspx

作者程晓华(John Cheng),全面库存管理(TIM)咨询独立顾问,《制造业库存控制技术与策略》课程创始人、讲师,《制造业库存控制技巧》、《首席物料官(网络)》、《决战库存》、《制造业全面库存管理》、《全面库存管理数学分析(2022年1月已经上市,京东、当当网等皆有售)》著作者,邮箱: [email protected] TIM订阅号:ITOOTD