- R語言經典實例(原書第2版)
- (美)J.D.隆 保羅·蒂特
- 4050字
- 2020-08-03 16:43:25
前言
R軟件是進行統計分析、繪圖和統計編程的強大工具。現在成千上萬的人用它來進行日常的重要統計分析。R是一個自由、開源的軟件系統,它是許多聰明、勤奮工作的人的集體工作成果。R有超過10000個軟件包插件,是其他商業統計軟件包的強勁競爭對手。
但是,剛開始使用R軟件時可能感到無從下手。對許多人來說,即便是一些基本的任務,R的實現也不是很明顯。當了解了R的使用方法后,簡單的問題自然能得心應手地解決,但學習“如何”使用R的過程有時會讓人感到發狂。
本書介紹了如何使用R軟件的一些方法,其中每一個方法對應解決某個特定的問題。介紹這些方法的途徑為:首先給出待解決的問題,然后給出解決方案的簡單介紹,之后再給出對解決方案的討論,深入剖析解決方案,給出該方案的原理。我們知道這些方法實用,也知道這些方法可行,因為我們也在使用它們。
這些方法所涉及的范圍較為廣泛。首先,從基本的任務開始介紹,然后介紹數據的輸入和輸出、基本統計、圖形以及線性回歸。與R有關的工作都或多或少地涉及本書介紹的方法。
通過學習本書,初學者能快速了解R并上手。如果你對R軟件有一定的了解,那么本書也能幫助你鞏固已學的知識,拓寬你的思維(例如,“下一次我應該怎么使用Kolmogorov-Smirnov檢驗”)。
從嚴格意義上來說,本書并不是一本關于R軟件的教程,但你將會從中學習到許多R軟件的應用技巧。本書也不是一本關于R的參考手冊,但它確實包含了許多實用的內容。本書更不是一個R軟件的編程指南,但書中很多方法都可以應用到R的編程腳本中。
最后,本書不是統計學理論的參考書。本書假設讀者對統計理論和方法有一定的了解,想知道的是如何在R軟件中實現。
方法
本書介紹的大部分方法,都是由一兩個R函數或命令來解決某一特定問題。需要注意的是,書中不會對某一函數的全部能力進行詳細解釋,而是僅介紹那些與需要解決的問題有關的函數能力。R軟件中幾乎所有的函數所具備的能力都遠遠不止本書中所介紹的,其中有的函數具有更強大的能力。因此強烈建議讀者閱讀這些函數的幫助頁面,你可能會從中得到不少收獲。
每個方法都為讀者提供了解決某個問題的一條途徑。當然對于每個問題有可能存在多個正確的解決方案。在這種情況下,我們一般會選擇最為簡單的方法。對于書中給出的任何問題,你自己或許可以找到其他一些解決方案。本書著重介紹解決問題的方法,類似“菜譜”書,而不是R軟件的大全書。
尤其是,R軟件有大量的添加包,這幾千個R添加包都可以從網絡下載。這些包中含有許多替代算法和統計方法。本書側重于R基礎發布版所帶的核心功能,以及幾個重要的放在一起統稱為tidyverse的添加包。
tidyverse最簡潔的定義來自Hadley Wickham——tidyverse的創始人和它的核心維護者之一:
“tidyverse是一組協調工作的添加包,它們共享通用數據表達式和API設計。tidyverse包旨在使其易于通過單個命令安裝和加載核心包。了解tidyverse中的所有添加包以及它們如何組合在一起的最佳方式是閱讀R for Data Science(http://r4ds.had.co.nz)一書。”
對術語的說明
每個方法旨在迅速地解決問題,而非長篇大論地進行論述。因此我們有時候會采用一些術語來簡化相關內容的解釋,這些術語有時候可能不精確,但是正確的。比如,術語泛型函數。我們把函數print(x)和plot(x)稱為泛型函數,原因是它們能適當地處理多種輸入參數x。計算機科學家可能會質疑這一術語,因為嚴格來說這些都不是簡單的“函數”,它們是多態方法并且動態調度。但是,如果我們仔細地精確定義所有這樣的技術細節,那么關鍵的解決方案將會埋沒于這些細枝末節的技術問題中。所以為了便于閱讀,我們就將它們稱為函數。
另一個例子是統計學中的假設檢驗術語。若使用概率論的嚴格定義,就會使讀者難以清晰理解這些檢驗的實際應用,所以我們以更通俗的語言來描述各個統計檢驗。更多有關假設檢驗方法的細節,請查看第9章的簡介部分。
我們的目標是用通俗易懂而非嚴格的正式語言,讓R軟件能被更多的讀者所理解和接受。因此希望各個領域的專家對于我們所給出的某些并不嚴謹的術語與定義予以諒解。
軟件及平臺說明
雖然R軟件時常進行有計劃的版本更新,但其語言定義和核心實現是穩定的。本書所介紹的方法適用于基礎發布版的任何最新版本。
有些方法對于操作平臺有特殊的要求,我們會在文中對其加以標注,這些方法大多數是一些軟件本身的問題,如程序的安裝和配置。據我們所知,書中的所有其他方法在R的三個主要平臺(即Windows、macOS和Linux/Unix)上都能運行。
其他資源
如果你想進行更深入的閱讀,下面是一些進一步閱讀的建議。
網絡
R項目網站(http://www.r-project.org)匯集了所有R軟件的相關資源,從中可以下載R程序代碼、R添加包、文檔、源代碼等。
除了R項目網站以外,我們建議使用一個針對R軟件的搜索引擎,比如Sasha Goodman開發的RSeek搜索引擎(http://rseek.org),也可以使用谷歌這樣的通用搜索引擎,但在搜索“R”關鍵詞時可能會得到許多無關的搜索結果。更多有關網絡搜索的細節參見1.11節。
瀏覽博客也是一種學習R軟件和掌握R最新動態的有效方式。網絡中有許多這樣的博客,我們推薦其中兩個:Tal Galili創建的R-bloggers(http://www.r-bloggers.com/)和PlanetR(http://planetr.stderr.org)。通過訂閱這些網站,你可以得到許多相關網站上有趣且實用的文章的通知。
R軟件參考書籍
市面上有許多學習和應用R軟件的書籍。下面列出一些我們認為有用的R軟件教程。R項目網站收錄了大量與R相關的書目(http://www.r-project.org/doc/bib/R-books.html)。
我們所推薦的書目有:
Hadley Wickham和Garrett Grolemund所著的R for Data Science(http://oreil.ly/2IIWxCs)(O’Reilly),該書很好地介紹了tidyverse軟件包,特別是在數據分析和統計中對該添加包的使用。該書也可以在線獲得(http://r4ds.had.co.nz)。
由Winston Chang撰寫的R Graphics Cookbook,2nd ed.(https://oreil.ly/2IhNUQj)(O’Reilly)對于創建圖形是不可或缺的。Hadley Wickham撰寫的ggplot2:Elegant Graphics for Data Analysis(Springer),是我們在本書中使用的ggplot2的權威參考。
在R中做任何圖形工作的人都需要參考Paul Murrell所著的R Graphics(Chapman&Hall/CRC)。
O’Reilly公司出版的R in a Nutshell(https://oreil.ly/2wUtwyf)的作者是Joseph Adler,該書可以作為讀者手邊的R軟件的使用參考,它比本書涵蓋了更多的內容。
有關R編程的新書層出不窮。我們推薦Garrett Grolemund的Hands On Programming with R(https://oreil.ly/2wWPHUd)(O’Reilly)或者Normal Matloff的The Art of R Programming(No Starch Press)。Hadley Wickham所著的Advanced R(Chapman & Hall/CRC)既有印刷版的,也可以免費在線獲得(http://adv-r.had.co.nz/),該書深入研究了高級R主題。Colin Gillespie和Robin Lovelace所著的Efficient R Programming(https://oreil.ly/2wXxK80)(O’Reilly)是另一本學習更深層R編程概念的優秀指南。
William Venables和Brian Ripley所著的Modern Applied Statistics with S,4th ed.(Springer)使用S軟件來說明一些高級的統計技術。該書所涉及的函數和數據集可通過R添加包MASS獲得,該添加包被包含在R軟件標準發布版中。
極客可以參照R核心團隊定義的R Language Definitions(http://bit.ly/2FaBgAz)。這是一項正在進行的工作,但它可以回答有關R編程語言的許多詳細問題。
統計學書籍
由John Verzani編寫的Using R for Introductory Statistics(Chapman & Hall/CRC),是一本優秀的統計學教材。它將統計學與R軟件結合起來,講述應用統計方法的一些必要的計算機技巧。
在你學習的過程中需要一本好的統計學參考書作為指導,它可以幫助你準確地理解在R中進行的統計檢驗。目前市面上有許多優秀的統計學參考書,與我們所推薦的書難分伯仲,你可以任意選擇。
越來越多的統計學作者選擇用R軟件來講述相應的統計方法。對于某一特定專業領域的工作者,可以在R項目網站收錄的書目中尋找所需要的書籍。
本書約定
在本書中使用以下排版方式:
斜體(Italic)
此類字體表示網址、電子郵件地址、文件名、文件擴展名等。
等寬字體(Constant width)
此類字體用于程序清單,以及正文中出現的程序元素(如變量名或函數名、數據庫名、數據類型、環境變量、程序語句、關鍵字等)。
等寬粗體(Constant width bold)
此類字體表示需要讀者輸入的指令或其他文本。
等寬斜體(Constant width italic)
此類字體表示用讀者提供的值或者上下文確定的值來替換的文本。
提示或建議。
一般性說明。
要特別注意的內容。
示例代碼
可以從http://rc2e.com下載補充材料(示例代碼、練習等)。與本書內容相關的Twitter賬戶是@R_cookbook(https://twitter.com/R_cookbook)。
這里的代碼是為了幫助你更好地理解本書的內容。通常,可以在程序或文檔中使用本書中的代碼,而不需要聯系O’Reilly獲得許可,除非需要大段地復制代碼。例如,使用本書中所提供的幾個代碼片段來編寫一個程序不需要得到我們的許可,但銷售或發布O’Reilly的配套CD-ROM則需要O’Reilly出版社的許可。引用本書的示例代碼來回答一個問題也不需要許可,將本書中的示例代碼的很大一部分放到自己的產品文檔中則需要獲得許可。
非常歡迎讀者使用本書中的代碼,不用注明出處。注明出處的形式包含標題、作者、出版社和ISBN,例如:
R Cookbook,2nd ed.,作者J.D.Long和Paul Teetor,由O’Reilly出版,書號978-1-492-04068-2
如果讀者覺得對示例代碼的使用超出了上面所給出的許可范圍,歡迎通過permissions@oreilly.com聯系我們。
O’Reilly在線學習平臺(O’Reilly Online Learning)
近40年來,O’Reilly Media致力于提供技術和商業培訓、知識和卓越見解,來幫助眾多公司取得成功。
我們擁有獨一無二的專家和創新者組成的龐大網絡,他們通過圖書、文章、會議和我們的在線學習平臺分享他們的知識和經驗。O’Reilly的在線學習平臺允許你按需訪問現場培訓課程、深入的學習路徑、交互式編程環境,以及O’Reilly和200多家其他出版商提供的大量教材和視頻資源。有關的更多信息,請訪問http://oreilly.com。
如何聯系我們
對于本書,如果有任何意見或疑問,請按照以下地址聯系本書出版商。
美國:
O’Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中國:
北京市西城區西直門南大街2號成銘大廈C座807室(100035)
奧萊利技術咨詢(北京)有限公司
要詢問技術問題或對本書提出建議,請發送電子郵件至bookquestions@oreilly.com。
本書配套網站http://bit.ly/RCookbook_2e上列出了勘誤表、示例以及其他信息。
關于書籍、課程、會議和新聞的更多信息,請訪問我們的網站http://www.oreilly.com。
我們在Facebook上的地址:http://facebook.com/oreilly
我們在Twitter上的地址:http://twitter.com/oreillymedia
我們在YouTube上的地址:http://www.youtube.com/oreillymedia
致謝
我們要對整個R社區,尤其是R軟件的核心開發團隊表示衷心感謝。他們的無私付出對世界統計學的貢獻巨大。R Studio社區討論的參與者圍繞“如何解釋許多事情”的研討會提供了很多幫助。R Studio的員工和領導在很多方面都給予了支持,感謝他們對R社區的回饋。
我們要感謝本書的技術審校者David Curran、Justin Shea和MAJ Dusty Turner,他們的反饋對于提高本書的質量、準確性和實用性至關重要。我們的編輯Melissa Potter和Rachel Monaghan提供了超乎想象的幫助,他們使我們避免傳播錯誤的內容。感謝我們的制作編輯Kristen Brown,她的速度以及對Markdown和Git的熟練程度令所有技術作者羨慕不已。
Paul要感謝他的家人在本書創作過程中給予的支持和耐心。
J.D.所有清晨和周末都在筆記本電腦上寫作本書,他感謝妻子Mary Beth和女兒Ada的耐心。
- Getting Started with Citrix XenApp? 7.6
- OpenStack Cloud Computing Cookbook(Third Edition)
- Extending Jenkins
- Deploying Node.js
- Java應用與實戰
- Learning Apex Programming
- R語言數據可視化之美:專業圖表繪制指南
- R語言數據可視化實戰
- Essential Angular
- Building a Quadcopter with Arduino
- Java 9模塊化開發:核心原則與實踐
- INSTANT Adobe Edge Inspect Starter
- Java程序員面試筆試寶典(第2版)
- Hands-On Full Stack Development with Spring Boot 2.0 and React
- LabVIEW數據采集