R语言入门的经验之谈
初识语言
学习计算机语言就像学一门自然语言,首先要有交流/应用的动力,其次是要掌握基本的语法规则和语汇,之后是情景中不断演练和改进。语言能力无止境,编程艺术也是这样。
虽然我是个地地道道的理科生,却一直对码代码这种事情特别惧怕,曾经有C++的一门课,常常是想了半天,凑出了几行,一按编译键,又是各种bug,就这样留下了些心理障碍。从大一到了现在大四,终于有一种“纸上得来终觉浅,绝知此事要躬行”的感悟,下定决心要学会一门编程语言。
大四上学期,学校的事情已经不多了,便咬咬牙修了一门名叫《统计方法选讲》的课,名字很无辜,内容却是实实在在的Statistical Learning, 而且还要将上课学到的算法自己写程序实现。统计方面一般会选择R,不过在Statistical/Machine Learning领域会更多地用到Matlab。幸好是从R这样一个入门难度极低的工具入手,我也得以发出“由也升堂矣,未入于室也”这样的感慨,不然,可能连“升堂”的机会都没有。
可以说,这个学期学习R的过程还是很愉快,也很有成就感的。于此同时,我也感觉到国内大学对于编程教学还有相当程度的缺失,一般理科会教C/C++,文科教VB,相对会在各类研究和工作中用到的Matlab, Python, R等来说并不太实用。而这些工具呢,又大多只能靠学生自学掌握。我想,对于编程类内容,自我实践、探索确实相当重要,但可能会花费更多的时间,或者停留在低水平而难以进步,因此希望写个帖子,把我的一些经验分享给大家,也希望能得到大家的一点建议,共同进步。
学习资源介绍
-
RStudio/ R Markdown
为什么把它们放在第一个呢,是因为RStudio可以提供更优良的编程环境,R Markdown(必须有RStudio才可以实现)可以方便的将你的代码、运算结果及文字说明输出成HTML, PDF等文件格式。这两者相当于提供了一个良好的学习环境,有事半功倍的效果。 -
《统计建模与R软件》薛毅 陈立萍 编著
看这本书作为学习R语言的入门指南真是再好不过,最好能拿着纸质书,便于翻阅查看。大致把这本书过一遍,能够掌握R基本语法和语汇,社会科学对统计的应用可以满足。
这本书的优点有这几个:
条理清晰,章节分布合理,不会出现看不明白的地方,便于自学。
内容包含比较全面,主成分分析、聚类分析、蒙特卡洛模拟等方法也都会提到。
看过这本书的人多,习题遇到困难能很方便得到解答。 -
An Introduction to Statistical Learning with Application in R
这本是统计学习方面入门级别的书,即使数学基础一般也能容易看懂。 -
The Elements of Statistical Learning
这本是统计学习方面较为高级别的书,部分内容数学要求比较高。好在它有一个网站,书中所用的数据都可以在该网站上下载到,如果要深入学习此书,最好能边学边练,结合书上所讲算法写程序,对比书中结果。 -
Coursera专项课程:Data Science Specialization
这个专项课程是由约翰霍普金斯大学开设的,一共分了九门小课程,优缺点都比较突出(可以说优缺点其实是对立的):
优点:每门都只有一个月,容易坚持学完,也方便注册学习新的课程(时间自由度很好)。
缺点:分成九门课之后内容比较散,其中有几门课相对比较无趣和仓促。
作为R语言入门,我跟了一个月的R Programming(第二门),后来因为上课学到机器学习的内容所以又学了一门Practical Machine Learning(第八门),中间跳掉了这么多门确实感觉基础不够,之后还打算把Getting and Cleaning Data, Exploratory Data Analysis, Developing Data Products这三门也学一下,这样估计可以从获取整理数据、绘制图表、建模及最终做出产品有一个完整的了解,也算为大四下能好好写一篇毕业论文打个基础吧。
PS:这个专项课程专门开发了一套叫swirl的R package,用一句话概况就是用R来学R语言,通过交互方式介绍R函数用法和一些非常好用的包(比如绘图里的ggplot2等等),专项课程里将此作为补充和加分内容,但不上课也可以下载下来使用学习,具体方法点链接进去看即可。
-
Coursera: Data Analysis and Statistical Inference
这门课在MOOC上的评价很好。或者说上面那个Data Science专项课程经常受到吐槽,不够我已经觉得学到了很多东西(条件是每星期的Quiz认真做,Project积极完成,研究Peer写的程序),想必这个评分超高的课程一定在课程设计上更有趣味性吧。这门课从名字上来说就是统计推断的内容,鉴于我自己的统计知识和应用能力也不够好,有空的时候我也打算学习一下这门课。 -
Coursera: Machine Learning
Coursera上元老级别课程,会讲更多机器学习的理论知识,编程要求用Matlab, 这里就不做过多介绍。我还打算更多地学习这个领域的知识,已计划跟12月28日马上开班的课程,持续两个多月时间。
嗯,不知不觉已经写了这么多了,现在编程还不算溜,但兴趣很大,希望未来一年里可以掌握R, Matlab, Python这三把利器。不多说了,学习去了!