【學習感悟】文科生如何入門R語言 錢亦欣 發表於2016-04-05
【學習感悟】 文科生如何入門R語言
作者 錢亦欣
隨著大資料時代的來臨,掌握R語言幾乎成了各個學科和多個工作崗位的必備技能。然而,不少朋友由於之前學的是偏向人文社科的專業,之前連Excel都玩不順手,更別提接觸過程式語言了。面對市面上一堆R語言的書籍,可能有些不知所措,一看一些專業性比較強的書,就直接懵逼了。因此,我以本文來記錄一下我將近1年半的R語言學習歷程,希望能對有相似背景的朋友提供一些幫助。
個人背景
本人是上海某大學的一年級統計學研究生。本科學的是金融專業(沒錯,就是國內那種記記背背的“金融學”)。由於大四伊始就拿到了本校直研資格,並選定了導師和專業,因此整個大四就等於提前開始了研究生生涯。
學歷歷程
一開始,接觸R語言我也懵逼,畢竟除了小學學過的VB和大二為了完成線代作業學了一點點的Matlab,我就一點程式設計基礎都沒有了。那時候百度了挺多資料,發現都比較零散不成系統。好在最後買了《R語言實戰》,在這本書的幫助下才入了門。而後又陸續看了《R語言程式設計藝術》,《統計學習導論》等書,學習總算是越來越有感覺。後來由於本科畢業要做畢設,我做的又是相對繁瑣的皮膚資料模型。我就利用這個機會,掌握了R語言的資料清洗、皮膚建模、模型結果視覺化等技術。同時,我還給很多做畢設的同學提供了技術支援(沒錯,大部分是女生),順帶自己也學習了一下各種統計檢驗,簡單的時序模型和廣義線性模型等。既幫助了別人,又提高了自己,還認識了不少妹子。可謂一舉多得,一石三鳥。
學習感悟
個人心得方面,我覺得首先應該做到的一點就是堅持。我認識很多學管理學、社會學的同學,由於課程和論文的需要,都信誓旦旦的說要學R語言。可最後都堅持不到兩個禮拜,定量研究要麼草草了事要麼找人代跑。如果我一開始也被看似複雜的程式碼塊和字小厚實的教材嚇到,可能我現在連R的門檻都沒摸到,更別提自己寫程式碼建模。
其次,我覺得每個人根據自己的需求來學習,有事半功倍的效果。在學習R語言之餘,我在大四也先把部分研究生課程旁聽了一遍。其中,多元統計分析和貝葉斯統計課後都會有大量的習題和案例需要程式實現。這使得我們R語言學習不再是漫無目的的游擊戰,而是需求明確的精準打擊。在花了一個禮拜刷了《R語言實戰》的前五章後,我認為我掌握了R基本的資料結構和一些比較常用的函式(這個時候我已經基本拋棄Excel了),然後我就根據每個禮拜的作業題開始跳躍性地學習了。這個過程很痛苦,但也很愉悅。我曾經為了寫出一個簡單的PCA程式熬到半夜(其中還自己根據格拉姆-施密特正交化方法寫了一個向量正交的自定義函式),但程式成功執行後的成就感是無可比擬的。
第三,我覺得要多和一起學習的小夥伴討論。我14年年底開始學習R的時候,不論老師學生,我們學校會R的人是極少數。我有問題也只能和一起學習的同門們討論(那時還不知道StackOverflow),但我發現和小夥伴一起討論,發現並解決問題遠比大神的指導要有效。或許這就是自主學習和被動學習的差別,直接請教大神可能能節省很多時間精力,但你也因此損失了自己探索世界,解決問題的機會。如果你的課程、論文或者專案不是很趕,我強烈建議先自己思索,再請教別人。
總得說來,學習R和學習統計模型一樣,並沒有什麼捷徑,只能踏踏實實地一點點學習。買了書就老老實實地看,並且動手實現案例。遇到問題就仔仔細細地推敲研究。日積月累,才能有進步。
書籍推薦
最後來推薦一下我看過的一些R語言的書籍。
1.《R語言實戰》。作者是心理統計學家,整本書估計也是按照人的學習心理編排過的(我瞎猜的),所以非常通俗易懂深入淺出。加上作者的語言也生動(統計之都幾位老師的翻譯功不可沒),讀起來特別愉悅。全書前5章是基本操作,後面是一些具體建模方法。整體內容非常充實,包括了因子分析,主成分分析等多元統計方法,也有線性迴歸、廣義線性模型等迴歸模型的詳細介紹。在畫圖方面,作者更是根據不同圖形特點,做出了詳盡說明。而且這本書是圖靈出的,裝幀精美,紙質上乘,捧在手裡感覺非常上檔次,價錢也不貴。綜上,這是我心中最好的R語言入門書籍,沒有之一。
2.《R語言程式設計藝術》。 這書的作者是程式設計師,因而整體風格和R語言實戰不同,感覺作者並不特意強調R的統計建模優勢,更多地把R作為一種程式語言來講解,因而對於學統計的我而言幫助不是特別大,但程式設計師們可能更喜歡這樣的風格。因此我不建議和我一樣沒有程式設計基礎的同學直接用這本書入門,但我還是建議在學習了一段時間的R語言後好好看看這本書。這本書對於如何提升R程式碼的效率,降低演算法複雜度等細節都做了講解,而其中物件導向程式設計這一節內容是大部分R書沒有的,值得好好看看。讀完這本書後,能讓我們寫出更簡潔漂亮,可讀性更好,效率更高的R程式碼。對做大規模科學計算很有感幫助。
3.《ggplot2:資料分析與圖形藝術》。R語言界的男神——Hadley Wickham的力作。相信每個接觸過R的視覺化的朋友都會用到ggplot2包。這本書非常的薄,一禮拜就能看完,通讀一遍後就能瞭解ggplot2包的大致功能,日後自己畫圖再把這本書當做工具書參考就可以。本書的譯者也是統計之都的老師,所以不僅翻譯的準確到位,對於書中一些過時的程式碼還做出了批註,確實是業界良心。
4.《時間序列分析及應用:R語言》,《金融時間序列分析》這兩本書是我的專業課的制定教材,兩本都提供了R程式碼來實現時序模型。前一本書內容相對簡單,只介紹了基本的模型,但給出了非常詳盡的程式碼,從建模到診斷到結果視覺化,有種手把手教你的感覺。我覺得作為本科生的教材非常合適。第二本書的內容比較前沿,而且加入了不少量化投資的內容進去,很符合現在的潮流。可是程式碼相對很少,不少程式碼過時了,有些還用的S-plus。並且,總得說來二者的翻譯都不好,建議大家看原版。
5.《Applied Econometrics with R》簡稱AER,是同名R包的一個200來頁的小冊子。這本書主要內容是如何用R實現常見的計量經濟學模型。以截面模型和時序模型為主,篇幅限制不算特別詳細,但對於做一些公司金融,管理學研究的同學來說是夠用的了。其中還講解了不同標準誤的計算方法等內容,比較有特色。
6.各類Packages的Vignettes。很多優秀的R包開發者都寫了一些實用易讀的小品文。有些文章不經介紹了包內的函式功能,對於模型也做出了非常不錯了解釋,而且往往是結合案例講解。比如plm包的文件對於皮膚迴歸模型的講解比很多計量經濟學教材都要明白,看這些文章真的非常的棒!我讀過且認為比較好的vignettes有:plm的,dplyr,plyr,tidyr(資料清洗神器,男神出品必屬精品,連小品文都這麼棒!),BLCOP的(Black-Litterman和COPULA模型的講解,很精彩),Survival和np包的(對生存分析和非引數統計做了很好的入門介紹),psych包的(大部分多元統計模型都能在這個包裡找到函式),等等。Vignettes可以在安裝路徑下的library資料夾裡尋找,也可以開啟RStudio點選包名,或用vignette函式來看。
7.其他我讀過但不是特別推薦,或者正在讀的書有:《複雜資料統計方法——基於R的應用》,《Financial Risk Modelling and Portfolio Optimization with R》,
《Machine Learning with R》,《Statistical Analysis of Financial Data in R》,《金融資料分析導論:基於R語言》,《Applied Bayesian Statistics, with R》,《Applied Multivariate Statistical Analysis 》,《Bayesian Essentials with R》,《Generalized Additive Models——an introduction with R》,《An Introduction to Statistical Learning with Application in R》,《Quantitative Trading with R》。
補充內容:關於視訊教學
關於R語言的教學視訊,我看的並不多。最早看過Tigerfish老師的那一套《資料分析與R語言》。這套教程現在免費,百度上一搜就是。總的說來,黃老師講的還是挺不錯的,前面的課程也是基本操作和資料結構,後面就講了一些諸如線性迴歸,關聯分析的資料探勘內容。但因為每節課課時短,老師沒法把這些講到位,所以我認為不能單看這個教學視訊學習。
另一個我看過的視訊就是coursera上霍普金斯大學的《R Programming》,但我覺得這個課程整體比較囉嗦,老師講的絮絮叨叨,好幾次都把我講睡著了。我跟完這個課就再也提不起興趣看霍普金斯資料分析系列的其他課程了。。。
總得說來,我覺得看教學視訊並沒有像看書那麼方便,學起來的效率也不高。當然這可能是因為我開啟電腦或者手機看著看著就幹別的事去了。我個人更推崇通過看書和做專案來學習。不過,我依舊對免費為公眾提供視訊教學資源的各位老師表達崇高的敬意,他們用自己的行動詮釋了R的開源精神。