官术网_书友最值得收藏!

1.1 R語言概述

R是一種用于統計分析、繪圖的語言和操作環境。R是屬于GNU系統的一個自由、免費、源代碼開放的軟件,它是一個用于統計計算和統計制圖的優秀工具。

1.1.1 R語言的誕生

R誕生于1980年左右的S語言的一個分支,可以認為R是S語言的一種實現,被廣泛使用于統計領域。S語言是由貝爾實驗室(AT&T Bell Laboratories)開發的一種用來進行數據探索、統計分析和作圖的解釋型語言。最初S語言的實現版本主要是S-PLUS。

S-PLUS是一個商業軟件,它基于S語言,并由Mathsoft公司的統計科學部進一步完善。后來新西蘭奧克蘭大學的Robert Gentleman和Ross Ihaka及其他志愿人員開發了一個R系統。

R可以看作貝爾實驗室的Rick Becker、John Chambers和Allan Wilks開發的S語言的一種實現。因此,兩者在程序語法上幾乎一樣,可能只是在函數方面有細微差別,程序十分容易移植到R程序中,而很多S程序只要稍加修改也能運用于R。

1.1.2 R語言的特點

R作為一種統計分析軟件,是集統計分析與圖形顯示于一體的。它可以運行于UNIX、Windows和Macintosh操作系統上,而且嵌入了一個非常方便實用的幫助系統,相比于其他統計分析軟件,R還有以下特點:

(1)R是一種開放性軟件。這意味著它是完全免費、開放源代碼的。可以在它的網站及其鏡像中下載任何有關的安裝程序、源代碼、程序包及其文檔資料。標準的安裝文件自身就帶有許多模塊和內嵌統計函數,安裝之后可以直接實現許多常用的統計功能。

(2)R是一種可編程的語言。作為一個開放的統計編程環境,R的語法通俗易懂,是很容易學會和掌握語言的語法。掌握之后,便可以編制自己的函數來擴展現有的語言。這也是它的更新速度比一般統計軟件(如SPSS、SAS等)快得多的原因。大多數最新的統計方法和技術都可以在R中直接得到。

(3)R的函數和數據集集成在程序包中。只有當一個包被載入時,它的內容才可以被訪問。一些常用的、基本的程序包已經被收入了標準安裝文件中,隨著新的統計分析方法的出現,標準安裝文件中所包含的程序包也隨著版本的更新而不斷變化。在新版安裝文件中,已經包含的程序包有:base(R的基礎模塊)、mle(極大似然估計模塊)、ts(時間序列分析模塊)、mva(多元統計分析模塊)、survival(生存分析模塊)等。

(4)R語言擁有強大的數據分析功能。R是專門為統計和數據分析開發的語言。基于免費開源的特點,R語言已經形成了強大的社區,各行各業的優秀研究者無時無刻地貢獻著自己編寫的功能強大的包(研究成果),這些包涵蓋各行各業前沿的分析方法,使用時如同站在巨人的肩膀上。從統計分析到機器學習再到深度學習,從金融分析到生信分析,從文本挖掘到社交網絡分析再到并行計算等,R語言無所不“包”。

(5)R語言擁有強大的數據可視化能力。R語言的繪圖能力非常強大,尤其是ggplot2及其擴展包包含各種各樣方便實用的繪圖方法,便于研究者更清楚地理解自己所面對的數據。R還包括多重可交互的數據可視化包,如plotly可直接將ggplot2的圖像進行可交互地呈現。

(6)R具有很強的互動性。除圖形輸出是在其他窗口外,它的輸入輸出是在同一個窗口中進行的,如果輸入語法中出現錯誤,馬上會在窗口中得到提示,對以前輸入過的命令有記憶功能,可以隨時再現、編輯修改以滿足用戶的需要。輸出的圖形可以直接保存為JPG、BMP、PNG等圖片格式,還可以直接保存為PDF文件。另外,R與和其他編程語言和數據庫之間有很好的接口。

由于R語言的第三方包非常多,難免會存在一些質量較差的包,還有一些包的更新跟不上R版本的更新。作為一種解釋性的高級語言,使用者有時會認為它的計算速度較慢。隨著計算機硬件不斷提升、R并行計算包的出現以及apply函數族強大的并行計算能力,會逐漸滿足使用者在運行速度上的需求。

1.1.3 R語言繪圖系統

在用R語言繪圖時,首先會使用由grDevices包提供的一系列基本繪圖函數,如顏色、字體和圖形輸出格式等。在grDevices包的基礎上有多種繪圖選擇。

一般來說,R語言包括傳統繪圖系統和網格繪圖系統兩種主要的繪圖系統。這兩種繪圖系統相互獨立,以不同的方式進行繪圖。這兩種繪圖系統對應R語言核心包的graphics包和grid包。

(1)graphics包是R語言的內置繪圖包,每次啟動R語言都會自動加載。它可以生成多種類型的圖表,并且提供了許多美化圖形細節的函數。

(2)grid包則提供了一系列不同的繪圖函數。grid包并沒有提供一套完整的繪圖函數,通常不能直接用于繪圖。因此,在grid包的基礎上又發展出了lattice和ggplot2兩個應用廣泛的程序包。其中,lattice包由D.Sarkar根據Cleveland的格子圖發展而來,ggplot2包由H.Wickham根據L.Wilkson的圖形語法發展而來。

這兩個繪圖系統還衍生出了許多其他的繪圖工具。例如,搭載于傳統繪圖系統之上的maps、diagram、plotrix、gplots和poxmap等擴展包,以及搭載于網格繪圖系統之上的vcd和grImport擴展包等。另外,還有一些擴展包提供了R語言與第三方繪圖系統的接口。

R語言繪圖系統提供的繪圖函數可以分為高級繪圖函數和低級繪圖函數,前者能夠繪制出完整的圖形,而后者是在已有圖形上添加額外的圖形。

(1)graphics包既提供了高級繪圖函數,又提供了低級繪圖函數。

(2)grid包僅提供低級繪圖函數,高級繪圖函數則留給建立在其基礎之上的lattice、ggplot2以及其他擴展包。

1.1.4 圖形語法

一張統計圖形是從數據到幾何對象的圖形屬性的一個映射。圖形中還可能額外包含數據的統計變換,最終繪制在某個特定的坐標系中,并通過分面來生成數據不同子集的圖形。也就是說,一張統計圖形是由以下獨立的圖形部件所組成的。

(1)數據(data)。圖形最基礎的部分是想要可視化的數據(data)以及一系列將數據中的變量對應到圖形屬性(aesthetic attributes,aes)的映射(mapping)。

(2)圖層(layler)。由幾何元素和統計變換組成。

(3)幾何對象(geometric object,geom)。在圖形中實際看到的圖形元素,如點、線、多邊形等。

(4)統計變換(statistical transformation,stats)。對數據進行的某種匯總,如分組計數、線性回歸等。統計變換為可選部分,但很有用。

(5)標度(scale)。將數據的取值映射到圖形空間,如用顏色、大小或形狀來表示不同的取值。展現標度的常用方式為繪制圖例和坐標軸,它們實際上是從圖形到數據的一個映射,從圖形中可以讀取原始數據。

(6)坐標系(coordinate system,coord)。描述數據如何映射到圖形所在的平面,同時提供讀圖所需的坐標軸和網絡線。通常使用笛卡兒坐標系,也可以變換為極坐標和地圖投影等其他類型。

(7)分面(facet)。將繪圖窗口劃分為若干子窗口,描述如何將數據分解為各個子集,以及如何對子集作圖并聯合進行展示。分面也稱為條件作圖或網格作圖。

(8)主題(theme)。主題控制著各點的精細顯示,如字體、背景、顏色、網格線等。雖然ggplot2的默認設置基本滿足需求,但有時需要進行調整來繪制自己想要的圖形。

本書重點介紹ggplot2包,其語法特點如下:

(1)采用圖層的設計架構,以ggplot()函數開始,圖層之間通過“+”進行疊加,后面疊加的圖層在前面的圖層上方。一般通過geom_...()函數或stat_...()函數添加圖層。

(2)將表征數據和圖形細節分開,能快速將圖形展示出來。通過stat_...()函數可以將常見的統計結果添加到圖形中。

(3)擁有豐富的擴展包,創建的圖形更加美觀。通過調整顏色(color)、字體(font)和主題(theme)等輔助包可以幫助讀者快速定制個性化的圖表。

主站蜘蛛池模板: 赣州市| 武强县| 隆尧县| 漳浦县| 栖霞市| 奉节县| 西乡县| 芮城县| 丰宁| 浪卡子县| 泾川县| 九龙坡区| 郑州市| 牙克石市| 舟曲县| 甘肃省| 建水县| 孟津县| 黑河市| 铜梁县| 七台河市| 四平市| 崇州市| 收藏| 博兴县| 同心县| 岳西县| 金阳县| 喀喇| 焦作市| 华池县| 淮北市| 平顶山市| 建水县| 延津县| 平远县| 张掖市| 屯留县| 望江县| 滦平县| 交口县|