r是壹種靈活的編程語言,旨在促進探索性數據分析、經典統計測試和高級圖形。r擁有豐富且不斷擴展的數據包庫,處於統計學、數據分析和數據挖掘的前沿。r在不斷發展的大數據領域已經被證明是壹個有用的工具,並且已經被集成到幾個商業軟件包中,比如IBM SPSS?InfoSphere呢?,和Mathematica。
本文提供了統計學家凱瑟琳·達爾澤爾對r值的看法。
為什麽選擇r?
r可以進行統計。妳可以認為它是SAS Analytics等分析系統的競爭對手,更不用說StatSoft STATISTICA或Minitab等更簡單的軟件包了。很多政府、企業、醫藥行業的專業統計學家、方法論者,把整個職業生涯都獻給了IBM SPSS或者SAS,卻從來沒有寫過壹行R代碼。所以在某種程度上,學習和使用R的決定與企業文化和妳想如何工作有關。我在統計咨詢實踐中使用了各種工具,但我的大部分工作都是在R中完成的。下面的例子說明了我為什麽使用R:
r是壹種強大的腳本語言。我最近被要求分析壹項系列研究的結果。研究人員檢查了65,438+0,600篇研究論文,並根據多個條件對其內容進行了編碼。實際上,這些條件是大量的具有多個選項和分叉的條件。他們的數據(曾經扁平化到壹個微軟?Excel?電子表格包含8000多列,其中大部分是空的。研究人員希望統計不同類別和標題下的總數。r是壹種強大的腳本語言,可以訪問類似Perl的正則表達式來處理文本。雜亂的數據需要壹個編程語言資源,雖然SAS和SPSS提供了腳本語言來執行下拉菜單意想不到的任務,但是R是作為編程語言編寫的,所以它是更適合這個目的的工具。
r走在了時代的前沿。統計學的許多新發展首先以R-package的形式出現,然後被引入商業平臺。我最近從壹項關於病人記憶的醫學研究中獲得了數據。對於每個患者,我們都有醫生建議的治療項目數和患者實際記住的項目數。自然模型是貝塔二項分布。這壹點自20世紀50年代就已為人所知,但將這壹模型與感興趣的變量聯系起來的估計過程只是最近才出現。像這樣的數據通常由通用估計方程(GEE)來處理,但是GEE方法是漸進的,並且假設采樣範圍很寬。我想要壹個帶β-二項式R的廣義線性模型。壹個最新的R包估計這個模型:Ben Bolker寫的betabinom。而SPSS沒有。
集成文檔發布。R完美地集成了LaTeX文檔發布系統,這意味著來自R的統計輸出和圖形可以嵌入到發布的文檔中。這並不適合所有人,但是如果妳想攜帶關於數據分析的異步書籍,或者只是不想將結果復制到文字處理文檔中,那麽最短最優雅的路徑就是通過R和LaTeX。
沒有成本。作為壹個小企業的老板,我喜歡r的免費專用性,即使對於更大的企業來說,知道妳可以臨時調動某人,並立即讓他們坐在工作站上使用壹流的分析軟件,這很好。不要擔心預算。
R是什麽,有什麽用?
作為壹種編程語言,R類似於許多其他語言。任何寫過代碼的人都會在R中發現很多熟悉的東西,R的特殊性在於它所支持的統計哲學。
統計革命與探索性數據分析
140字符釋義:R是S的開源實現,是數據分析和圖形的編程環境。
計算機總是擅長計算——在妳編寫並調試壹個程序來執行妳想要的算法之後。但在20世紀60年代和70年代,計算機不擅長顯示信息,尤其是圖形。這些技術局限於統計理論結合的趨勢意味著統計實踐和統計人員培訓側重於模型構建和假設檢驗。壹個假設的世界是,研究人員做出假設(通常是農業方面的),進行精心設計的實驗(在農業站),填寫模型,然後進行測試。基於電子表格、菜單驅動的程序(如SPSS反映了這種方法)。事實上,SPSS和SAS Analytics的第壹個版本包含壹些子程序,可以從(Fortran或其他)程序中調用這些子程序來填充和測試模型工具箱中的模型。
在這個標準化和滲透理論的框架中,約翰·圖基(John Tukey)提出了探索性數據分析(EDA)的概念,這就像壹顆鵝卵石擊中了玻璃屋頂。如今,很難想象在分析數據集時不使用箱線圖來檢查偏斜度和異常值,或者不使用分位數圖來檢查線性模型殘差的正態性。這些觀點是圖基提出的,現在任何統計學入門課程都會引入。但情況並非總是如此。
EDA與其說是壹種理論,不如說是壹種方法。這種方法離不開以下經驗法則:
只要有可能,應該使用圖形來標識感興趣的功能。
分析是增量的。嘗試以下模式;根據結果填充另壹個模型。
使用圖形檢查模型假設。標簽有壹個異常值。
使用合理的方法來防止違反分布假設。
Tukey的方法引發了新壹波的圖形方法和穩健估計。它也激發了更適合探索性方法的新軟件框架的開發。
s語言是由貝爾實驗室的約翰·錢伯斯和他的同事開發的,並被用作統計分析平臺,尤其是Tukey排序。第壹個版本(供貝爾實驗室內部使用)是在1976年開發的,但直到1988年才形成了與現在形式相似的版本。此時,貝爾實驗室以外的用戶也可以使用該語言。語言的每個方面都符合數據分析的“新模型”:
s是壹種在編程環境中運行的解釋性語言。S的語法和C很像,只是省略了難的部分。例如,s負責內存管理和變量聲明,這樣用戶就不必編寫或調試這些方面。較低的編程開銷允許用戶在同壹數據集上快速執行大量分析。
從壹開始,S就考慮了高級圖形的創建,妳可以在任何打開的圖形窗口中添加功能。您可以輕松地高亮顯示感興趣的點,查詢它們的值,使散點圖更加平滑,等等。
面向對象是在1992中加入S的。在編程語言中,對象構造數據和函數來滿足用戶的直覺。人類的思維永遠是面向對象的,尤其是統計推理。統計學家處理頻率表、時間序列、矩陣、各種數據類型的電子表格、模型等等。在每種情況下,原始數據都有屬性和期望值:例如,時間序列包含觀察值和時間點。此外,對於每種數據類型,應獲得標準的統計數據和計劃。對於時間序列,我可能會畫壹個時間序列計劃和壹個相關的圖表;對於擬合模型,我可能會繪制擬合值和殘差。支持為所有這些概念創建對象,您可以根據需要創建更多的對象類。對象使得概念化問題和實現它的代碼變得非常簡單。
有態度的語言:S,S-Plus和假設檢驗
原來的S語言對Tukey的EDA非常重視,已經到了只能在S中執行EDA而不能執行其他操作的地步。這是壹種有態度的語言。例如,雖然S帶來了壹些有用的內部函數,但它缺少壹些您希望統計軟件擁有的最明顯的功能。沒有執行雙重抽樣檢驗或任何真正假設檢驗的功能。但是Tukey認為假設檢驗有時候是恰到好處的。
1988,西雅圖的統計科學被S授權,語言的壹個增強版本(叫做S-Plus)被移植到DOS和後來的Windows?中等。在真正意識到客戶想要什麽之後,統計科學為S-Plus添加了經典的統計功能。添加執行方差分析(ANOVA)、測試和其他模型的能力。對於S的面向對象特性,任何這樣的擬合模型的結果本身就是壹個S對象。適當的函數調用將提供假設檢驗的擬合值、殘差和p值。模型對象甚至可以包含分析的中間計算步驟,例如設計矩陣的QR分解(其中Q是對角線,R是右上角)。
有壹個R包可以完成這個任務!還有壹個開源社區。
大約在S-Plus發布的同時,新西蘭奧克蘭大學的Ross Ihaka和Robert Gentleman決定嘗試編寫壹個解釋器。他們選擇S語言作為他們的模型。這個項目逐漸成形並獲得支持。他們把它命名為r。
r是S的實現,包含了更多S-Plus開發的模型。有時候,同樣的人在扮演角色。r是GNU許可的開源項目。在這個基礎上,R繼續發展,主要靠加包。R包是數據集、R函數、文檔和C或Fortran動態插件的集合,它們可以壹起安裝並從R會話中訪問。r包為r增加了新的功能,通過這些包,研究人員可以在同行中輕松享受計算方法。有些軟件包範圍有限,有些則代表整個統計領域,還有壹些包含最新的技術發展。事實上,統計學的很多發展最初都是以R包的形式出現的,後來才被應用到商業軟件中。
在撰寫本文時,R下載網站CRAN上有4701個R包。其中,僅在那壹天就增加了六個r。壹切都有對應的R包,至少看起來是這樣。
當我使用R時會發生什麽?
備註:本文不是R課程。下面的例子只是試圖給妳壹個R會話的概念。
r二進制可以用於Windows,Mac OS X和多個Linux?分銷。源代碼也可以由人自己編譯。
在Windows上?,安裝程序將r添加到開始菜單。要在Linux中啟動R,請打開壹個終端窗口並在提示符下鍵入R。您應該會看到類似於圖1的屏幕。
圖1。r工作空間
在提示符下鍵入壹個命令,r就會響應。
此時,在真實的環境中,您可以將數據從外部數據文件讀入R對象。r可以從各種格式的文件中讀取數據,但是對於這個例子,我使用的是MASS包中的michelson數據。這個包附帶了帶有維納布爾斯和裏普利的S-Plus的標誌性文本現代應用統計學(參見參考資料)。邁克爾遜包含了流行的邁克爾遜和莫利實驗測量光速的結果。
清單1中提供的命令可以加載MASS包,並獲取和查看邁克爾遜數據。圖2顯示了這些命令和來自r的響應。每壹行都包含壹個r函數,它的參數用方括號([])括起來。
清單1。開始休息時段
2+2 # R可以是計算器。r的正確答案是4。
library("MASS") #將函數和數據集從
#包質量,伴隨著現代應用統計學在S
data(michelson) #將michelson數據集復制到工作區。
ls() #列出工作區的內容。邁克爾遜數據在那裏。
head(michelson) #顯示該數據集的前幾行。
#列速度包含邁克爾遜和莫利的估計
#光速減去299,000,單位為千米/秒。
#邁克爾遜和莫利進行了五次實驗,每次20次。
#數據集包含實驗和運行的指標變量。
help(michelson) #調用幫助屏幕,描述數據集。
圖二。會話發起和R的響應
現在讓我們看看數據(見清單2)。輸出如圖3所示。
清單2中的方框圖。稀有
#基本箱線圖
with(michelson,boxplot(Speed ~ Expt))
#我可以添加顏色和標簽。我還可以將結果保存到對象中。
邁克爾遜. bp = with(邁克爾遜,boxplot(Speed ~ Expt,xlab="Experiment ",las=1,
ylab= "光速-299,000米/秒",
main= "邁克爾遜-莫利實驗",
col="slateblue1 ")
#在這個尺度上,目前對光速的估計是734.5
#添加壹條水平線以突出顯示該值。
abline(h=734.5,lwd=2,col = " purple ")#添加現代光速
邁克爾遜和莫利似乎系統地高估了光速。這些實驗似乎有些不壹致。
圖3。畫壹個方框圖。
在我對分析感到滿意之後,我可以將所有命令保存到壹個R函數中。請參見清單3。
清單3中的壹個簡單函數。稀有
MyExample = function(){
圖書館(大眾)
數據(邁克爾遜)
邁克爾遜. bw = with(邁克爾遜,boxplot(Speed ~ Expt,xlab="Experiment ",las=1,
ylab= "光速-299000米/秒",main= "邁克爾遜-莫雷實驗",
col="slateblue1 ")
abline(h=734.5,lwd=2,col="purple ")
}
這個簡單的例子演示了R的幾個重要功能:
保存結果—boxplot()函數返回壹些有用的統計數據和圖表。可以通過像michelson.bp = …這樣的否定語句將這些結果保存到R對象中,在需要的時候提取出來。任何賦值語句的結果都可以在R session的整個過程中獲得,並且可以成為進壹步分析的對象。boxplot函數返回統計數據矩陣(中位數、四分位數等)。)用於繪制箱線圖、每個箱線圖中的項目數以及異常值(在圖3的圖表中顯示為空心圓)。請參考圖4。
圖4。箱線圖函數的統計數據
公式語言——R(和S)有壹種簡潔的語言來表達統計模型。參數中的代碼Speed ~ Expt告訴函數在每個Expt(實驗數)級別繪制速度的箱線圖。如果要進行方差分析來檢驗每個實驗中速度是否存在顯著差異,可以使用同壹個公式:lm(Speed ~ Expt)。公式語言可以表達多種統計模型,包括交叉和嵌套效應,以及固定和隨機因素。
用戶定義的r函數——這是壹種編程語言。
r已經進入21世紀。
Tukey的探索性數據分析方法已經成為壹門常規課程。我們在教授這種方法,統計學家也在使用它。r支持這種方法,這解釋了為什麽它仍然如此受歡迎。面向對象還有助於R保持最新,因為新的數據源需要新的數據結構來執行分析。信息圈?Streams現在支持與約翰·錢伯斯設想的不同的數據R分析。
r和InfoSphere流
InfoSphere Streams是壹個計算平臺和集成開發環境,用於分析從數千個來源獲得的高速數據。這些數據流的內容通常是非結構化或半結構化的。分析的目的是檢測數據中不斷變化的模式,並根據快速變化的事件指導決策制定。SPL(用於InfoSphere Streams的編程語言)通過壹個例子來組織數據,這個例子反映了數據的動態特性以及對快速分析和響應的需求。
我們遠離了用於經典統計分析的電子表格和常規平面文件,但R可以很好地處理它。從版本3.1開始,SPL應用程序可以將數據傳輸到R,從而利用R龐大的包庫。InfoSphere Streams通過創建適當的R對象來接收包含在SPL元組(SPL的基本數據結構)中的信息,從而支持R。因此,可以將InfoSphere Streams數據傳遞給R進行進壹步分析,並將結果發送回SPL。
r需要主流硬件嗎?
我在運行Crunchbang Linux的宏碁上網本上運行了這個例子。r不需要重型機器來執行中小型分析。20年來,人們壹直認為R速度慢是因為它是壹種解釋性語言,它所能分析的數據大小受到計算機內存的限制。這是真的,但它通常與現代機器無關,除非應用程序非常大(大數據)。
r的缺點
平心而論,有些事R做不好或者根本不會做。不是每個用戶都適合使用r:
r不是數據倉庫。在R中輸入數據最簡單的方法是在其他地方輸入數據,然後導入到R中。人們試圖為R添加壹個電子表格前端,但他們還沒有流行起來。缺少電子表格功能,不僅會影響數據輸入,還會使R中的數據很難像在SPSS或Excel中那樣直觀的查看。
r讓普通的任務變得困難。比如醫學研究,妳對數據做的第壹件事就是計算所有變量的壹般統計量,列出沒有反應的地方和缺失的數據。這在SPSS中只需要三次點擊就可以完成,但是R沒有內置函數來計算這些非常明顯的信息,並以表格的形式顯示出來。妳可以非常輕松地編寫壹些代碼,但有時妳只想指向要計算的信息,然後單擊鼠標。
R的學習曲線非同壹般。新手可以打開壹個菜單驅動的統計平臺,幾分鐘就能得到結果。不是每個人都想成為程序員,然後成為分析師,也許不是每個人都需要這樣做。
r是開源的。R社區龐大、成熟、活躍,R無疑是壹個比較成功的開源項目。如前所述,R已經實現了20多年,S語言存在的時間更長。這是壹個久經考驗的概念,也是壹個久經考驗的產品。但對於任何開源產品來說,可靠性都離不開透明性。我們信任它的代碼,因為我們可以自己檢查它,其他人可以檢查它並報告錯誤。這與企業項目不同,企業項目自己執行基準測試並驗證他們的軟件。對於不經常使用的R包,您沒有理由假設它們實際上會產生正確的結果。
結束語
我需要學習R嗎?也許不是;需要是壹個帶有強烈感情的詞。但是R是有價值的數據分析工具嗎?當然是了。這種語言旨在反映統計學家的思維和工作方式。r鞏固好習慣,合理分析。對我來說,它是壹個適合我工作的工具。