R語言是什麼 R語言簡介
R是由Ross Ihaka和Robert Gentleman在1993年開發的一種編程語言,R擁有廣泛的統計和圖形方法目錄。它包括機器學習算法、線性回歸、時間序列、統計推理等。大多數R庫都是用R編寫的,但是對於繁重的計算任務,最好使用C、c++和Fortran代碼。
R不僅在學術界很受歡迎,很多大公司也使用R編程語言,包括Uber、谷歌、Airbnb、Facebook等。用R進行數據分析需要一系列步驟:編程、轉換、發現、建模和交流結果
R 語言是為數學研究工作者設計的一種數學編程語言,主要用於統計分析、繪圖、數據挖掘。
如果你是一個計算機程序的初學者並且急切地想瞭解計算機的通用編程,R 語言不是一個很理想的選擇,可以選擇 Python、C 或 Java。
R 語言與 C 語言都是貝爾實驗室的研究成果,但兩者有不同的側重領域,R 語言是一種解釋型的面向數學理論研究工作者的語言,而 C 語言是為計算機軟件工程師設計的。
R 語言是解釋運行的語言(與 C 語言的編譯運行不同),它的執行速度比 C 語言慢得多,不利於優化。但它在語法層面提供瞭更加豐富的數據結構操作並且能夠十分方便地輸出文字和圖形信息,所以它廣泛應用於數學尤其是統計學領域。
R 語言官方網站:https://cran.r-project.org/
官方鏡像站列表:https://cran.r-project.org/mirrors.html
1、什麼是R語言?
R是用於統計分析、繪圖的語言和操作環境。R是屬於GNU系統的一個自由、免費、開源的軟件,它是一個用於統計計算和統計制圖的優秀工具。
R語言是主要用於統計分析、繪圖的語言和操作環境。 R本來是由來自新西蘭奧克蘭大學的Ross Ihaka和Robert Gentleman 開發。 (也因此稱為R)現在由“R開發核心團隊”負責開發。 R是基於S語言的一個GNU項目,所以也可以當作S語言的一種實現,通常用S語言編寫的代碼都可以不作修改的在R環境下運行。 R的語法是來自Scheme。
2、R語言能幹什麼?
首先說靠不靠譜這件事,真的是有點老生常談瞭,很多人習慣性的認為免費的東西就是不好的東西,這樣一竿子打死所有,是不合理的,有點酸葡萄的心理。筆者曾經在PubMed上見到很多的文章都是用R語言做的統計分析,其中不乏頂級期刊,諸如Lancet,JCO這樣的。上圖,無圖無真相。
窺一斑而見全豹。所以關於靠不靠譜這事,到此為止。
下面說說R能做啥。對於醫學科研工作者來說,對於軟件的需求其實真的不是很大,基本的統計分析基本能夠滿足我們。但是,當我們碰到復雜的數據時,也不要怕,從數據的預處理到數據的分析建模,以及後續的繪圖,R都能幫你搞定。關於數據預處理和初步分析,在這裡就不多說瞭,因為我沒辦法上圖(可以瀏覽“醫學方”所推出的“一本R書走天涯”推文教程和視頻教程)。下面說說R的可視化功能。各位看官瞧好瞭。
1、R是科學計算的強大工具包。
2、R主要擅長統計分析方面工作。
3、R具有頂尖的繪圖功能。
基本的統計圖
火山圖
地圖
3D圖
4、R的交互式數據分析功能強大且靈活。
5、R可以輕松地從多個數據源導入數據。
6、金融領域數據統計與計算的強大工具。
7、數據挖掘和機器學習領域的必備工具。
3、R語言有什麼優勢?
1、R是免費的。很多商業統計軟件價格不菲,投入成千上萬美元都是有可能的。可能國內一些人感覺不會很明顯,因為很多人是使用單位或學校集體購買的軟件,或者使用破解過的統計軟件,而不是花自己錢。對於前者,並不是每個人都有機會享受這種福利。而對於破解過的統計軟件,其計算結果的準確性很可能會被質疑。
2、R主要擅長統計分析方面工作。R最初是由兩位統計學傢開發的,其主要優勢也在於統計分析方面。它提供瞭各種各樣的數據處理和分析技術,幾乎任何數據分析過程都可以在R中完成。與此相比較,SPSS、MINITAB、MATLAB等數據分析軟件更加適合於已經處理好的、規范的數據,而對於還未完成處理過程,或者在分析中仍需大量與處理過程的數據而言,它們可能會顯得繁瑣一些。
3、R具有頂尖的繪圖功能。尤其對於復雜數據的可視化問題,R的優勢更加明顯。一方面,R中各種繪圖函數和繪圖參數的綜合使用,可以得到各式各樣的圖形結果,無論對於常用的直方圖、餅圖、條形圖等,還是復雜的組合圖、地圖、熱圖、動畫,以及自己腦子裡突然想到的其他圖形展現方式,都可以采用R語言實現。另一方面,從數值計算到得到圖形結果的過程靈活,一旦程序寫好後,如果需要修改數據或者調整圖形,隻需要修改幾個參數或者直接替換原始數據即可,不用重復勞動。這對需要繪制大量同類圖形的用戶比較適用。例如,某用戶需要觀察某一因素與其他100個因素的交互關系,可以繪制100個條形圖或走勢圖。配合R的循環和條形圖功能,可以很快得到jpg、png、bmp、tiff、gif或postscript等格式的圖形結果。
4、R的交互式數據分析功能強大且靈活。一個完整的數據分析過程可以大體包括以下幾個步驟:(1)導入數據;(2)數據準備、探索和清洗;(3)擬合一個統計模型;(4)得到結果並進行評估;(5)如果結果的評估不理想,重新完成(3)步驟;(6)得到多個模型的結果,並進行交叉檢驗;(7)根據模型結果進行預測、分析等;(8)形成報告。R中每個步驟的所有“輸出”都可以直接作為下一個步驟的“輸入”,可以批量完成以上所有的(8)個步驟。這個優點主要與STATA、SPSS等統計軟件相比而言的,STATA和SPSS的統計分析結果是一大串圖表或統計量。如果隻是一個或少數幾個步驟的分析,這種出現一大串結果的批處理更加直觀方便。但如果分析中涉及很多連串的模型,而且一些模型需要反復調用前面模型的結果,那麼R的靈活性會更加凸顯。
5、R可以輕松地從多個數據源導入數據,包括文本文件、數據庫、其他統計軟件等。這一點很多其他軟件還難以做到。如readLines()、read.table()等函數可以導入文本數據,foreign包的read.spss()可以導入SPSS軟件的sav格式數據,foreign包的read.dta()可以導入STATA軟件的dta格式數據等等。其他有關數據導入導出的函數可以參見R幫助文檔《R Data Import/Export》。
6、R的更新速度很快,包含最新的大量統計方法和案例。R社區由全球大量維護者共同維護,再加上R包的擴展性很強,幾乎每天都有人為R社區貢獻新的方法,提供其他軟件中尚不可用的、新穎的統計計算案例。在本材料“R資源”部分會介紹一些常用的R資源獲取途徑。
7、R也可以很美。目前最基本的R軟件(R2.15.2)隻有一個編程窗口,看起來挺醜的。但它穿上衣服以後也可以很漂亮,它的衣服就是各式各樣的GUI(Graphical User Interface,圖形用戶界面)工具。目前比較常用的GUI工具包括Rstudio、Rattle、Rattle、Red-R、Deducer、RKWard、JGR、R Commander、Tinn-R等。其中Rstudio可能是最受歡迎的。
補充
做過一點數據分析的人都知道,目前市場上最流行的統計分析軟件是SPSS,不可否認,這個軟件很好用,傻瓜式的點擊操作,一目瞭然的表格式的結果,甚至也能畫一些簡單的圖形。但是,相信在很多時候,當你使用SPSS進行數據分析時,你也會覺得束手無策,不是你不夠聰明,而是SPSS實在是巧婦難為無米之炊。點擊操作固然方便簡單,但是在功能的靈活性上卻大打折扣。故而,你想到瞭SAS。不過,在你使用SAS之前,請你先找一個正版的安裝包(什麼破解版就不推薦瞭,畢竟我們要推崇版權意識嘛),在你的Windows系統上裝上它再說吧。SAS就是一個航空母艦,戰鬥力強大,但是卻顯得異常臃腫,我很好奇一個界面完全算不上好看的統計軟件,是如何把自己的安裝包一步一步升級到一個極品飛車安裝包的級別的。筆者不才,曾經試圖兩次安裝SAS,但是由於並不精通計算機系統,故而兩次均以失敗告終,萬般無奈之際,選擇瞭R語言。
山重水復疑無路,柳暗花明又一村。R語言在前幾年的名氣遠不及SPSS和SAS,甚至一度有很多人壓根就看不上這樣一個軟件,認為它做出來的東西很有可能是錯誤的,壓根就不靠譜。但是質疑聲永遠也不能阻止一個新生事物的快速發展。坦白說,我入瞭R的坑,從此SPSS和SAS是路人!
R是免費的!安裝包僅有70M,而且安裝異常簡單,所需操作環境十分隨意。就是這樣一個十分親民友好的軟件,功能卻是異常強大!我用的不是非常,而是異常!作為一名還不算資深的R粉,在我的數據清洗與數據分析的過程中,我深深的被R語言的簡潔強大震撼到瞭。而且我十分贊賞R語言所推崇的“向量化操作”的理念:不寫循環,但是能做循環一樣的事兒。
關於R,難以一言以蔽之,它就像一個航母戰鬥群,不同的軍艦承載著不同的任務,但是彼此和諧相處,毫不沖突。正如前言所說,R是為統計而生,但是隨著這幾年的快速發展,R的功能范圍已經得到瞭極大的擴展,比如自然語言處理,機器學習領域,生物信息學領域等等。即便如此,也永遠不要忘瞭,R語言自身的統計功能!
現如今,在R的隊伍中,已經存在瞭超過12000個擴展包,這些擴展包來自不同領域的牛人之手。所以,隻要你想得到,沒有R做不到!因為你想到的,人傢早就已經替你想過瞭。4、R語言編程工具
R語言安裝時會自帶一個GUI工具,當然還有其他眾多集成開發工具,如:Rstudio、Rattle、Rattle、Red-R、Deducer、RKWard、JGR、R Commander、Tinn-R等。其中Rstudio可能是最受歡迎的。
5、為什麼使用R ?
數據科學正在塑造企業運營的方式,毫無疑問,遠離人工智能和機器將導致公司的失敗,最大的問題是應該使用哪種工具/語言?
市場上有很多工具可以用來進行數據分析,學習一門新語言需要一些時間。下圖描述瞭與一種語言提供的業務能力相比的學習曲線,這種消極的關系意味著沒有免費的午餐。如果你想從數據中獲得最好的見解,那麼你需要花一些時間學習合適的工具,也就是R。
在圖的左上角,您可以看到Excel和PowerBI。這兩個工具學習起來很簡單,但是沒有提供出色的業務功能,特別是在建模方面。在中間,您可以看到Python和SAS。
情景應用程序是一個專門用於運行業務統計分析的工具,但它不是免費的。SAS是一個點擊並運行的軟件,然而,Python是一種學習曲線單調的語言。Python是部署機器學習和人工智能的理想工具,但缺乏通信功能。由於具有相同的學習曲線,R是實現和數據分析之間的一個很好的權衡。
說到數據可視化(DataViz),您可能聽說過Tableau。Tableau無疑是通過圖形和圖表發現模式的好工具,另外,學習Tableau也不是很耗時。數據可視化的一個大問題是,您可能永遠找不到一個模式,或者隻是創建大量無用的圖表。Tableau是快速可視化數據或商業智能的好工具,當涉及到統計和決策工具時,R更合適。
Stack Overflow是一個很大的編程語言社區,如果您有編碼問題或需要瞭解模型,Stack Overflow可以提供幫助。一年來,與其他語言相比,R語言的提問率大幅上升。這種趨勢當然與數據科學蓬勃發展的時代高度相關,但也反映瞭R語言對數據科學的需求。
在數據科學中,有兩種工具相互競爭,R和Python可能是定義數據科學的編程語言。
簡而言之,R是探索和研究數據的好工具。使用R進行復雜的分析,例如聚類,相關性和數據縮減。這是最關鍵的部分,如果沒有良好的特征工程和模型,則機器學習的部署將不會產生有意義的結果。
6、R語言學習路線圖
1.初級入門
《An Introduction to R》,這是官方的入門小冊子。其有中文版,由丁國徽翻譯,譯名為《R導論》。《R4Beginners》,這本小冊子有中文版應該叫《R入門》。除此之外,還可以去讀劉思喆的《153分鐘學會R》。這本書收集瞭R初學者提問頻率最高的153個問題。為什麼叫153分鐘呢?因為最初作者寫瞭153個問題,閱讀一個問題花費1分鐘時間,全局下來也就是153分鐘瞭。有瞭這些基礎之後,要去讀一些經典書籍比較全面的入門書籍,比如《統計建模與R軟件》,國外還有《R Cookbook》和《R in action》。
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中數據挖掘方面的包已經足夠多瞭,參考包中的幫助文檔就足夠瞭。
7、R語言參考資料
相關書籍推薦:
《R in Action》(R語言實戰)
《The Art of_R Programming》(R語言編程藝術)
《An Introduction to R》(R導論)
《R Cookbook》
《R in a Nutshell》
《Statistics with R》
推薦閱讀:
- R語言如何將大型Excel文件轉為dta格式詳解
- 大數據分析R語言RStudio使用超詳細教程
- R語言導入導出數據的幾種方法匯總
- python statsmodel的使用
- Python數據分析 Pandas Series對象操作