跳轉到內容

統計分析:使用 R 的入門 / R 基礎

來自華夏公益教科書,開放書籍,開放世界

為什麼選擇 R?

[編輯 | 編輯原始碼]

R 是一款命令驅動的統計軟體包。乍一看,這可能會讓它看起來難以使用。然而,有許多理由讓你選擇使用這款計算機程式來學習統計學。其中最重要的兩個原因是

  • R 是免費的;你可以從 http://www.r-project.org 下載並將其安裝到幾乎任何你喜歡的計算機上。
  • R 允許你進行所有你可能需要的統計測試,從簡單到高度複雜的測試。這意味著你應該始終能夠對你的資料進行正確的分析。

R 的額外優勢在於它具有出色的圖形和程式設計能力,可以作為教學和學習的輔助工具。例如,本書中的所有插圖都是使用 R 製作的;透過點選任何插圖,你可以獲取用於生成它的 R 命令。

最後一個好處是,一旦你掌握了統計學或 R 的一些基本知識,你就能發現網上有許多資源可以幫助 R 使用者。你可以從 本書的附錄 中找到一個列表。

如何使用本書學習 R

[編輯 | 編輯原始碼]

本書中的主要文字描述了統計學背後的原因和方法,這些內容與你使用的任何統計軟體包都息息相關。然而,除了主要文字之外,還有大量“R 主題”:使用 R 來闡明特定觀點的練習和示例。你可能會發現你需要花一些時間才能適應 R,特別是如果你不熟悉計算機語言的概念。

別擔心!本章和 第 2 章 中的主題將幫助你入門,讓你能夠理解和使用 R 的基本功能。本章旨在幫助你入門:一旦你安裝了 R,就有一些主題教你如何執行 簡單的計算使用函式,如何 儲存結果,如何 獲取幫助,以及如何 退出。第 1 章中的一些練習主要展示了使用 R 時可供你使用的可能性,然後第 2 章介紹了 R 使用的基礎知識:特別是 向量因素讀取資料資料框 中,以及 繪圖 各種 型別。從那時起,練習就變得更加統計化了。

如果你想在進行統計討論之前直接完成這些最初的練習,可以從 這裡 收集這些練習。請注意,在線上完成 R 主題時,如果你 設定華夏公益教科書 來以一種美觀的方式顯示 R 命令,你可能會發現它更具視覺吸引力。如果 R 主題妨礙了你閱讀主要文字,你可以透過點選每個框右上角的箭頭來隱藏它們。

如果你尚未在你的計算機上安裝 R,請從 http://www.r-project.org 免費下載最新版本,並安裝基本系統。你暫時不需要安裝任何額外的包。安裝完成後,啟動它,你應該會看到類似下面的內容

R version 2.11.1 (2010-05-31)
Copyright (C) 2010 The R Foundation for Statistical Computing
ISBN 3-900051-07-0

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

>

你現在正在 R 會話中。R 是一個命令驅動的程式,而令人毛骨悚然的“>”字元表示 R 現在正在等待你輸入內容。不要害怕。你很快就會掌握最簡單的命令,這些命令應該足夠你目前使用。並且你最終會發現,命令列驅動介面賦予了你 [1] 一定程度的自由度和能力,這是使用更“使用者友好”的軟體包無法實現的。

v·d·e

R 作為計算器

類似這樣的文字用於討論 R 的特定方面。你可以按它們在書中出現的順序閱讀這些部分來學習 R 的基礎知識。還有一些命令可以直接輸入 R;你可以直接將它們複製貼上到你的 R 會話 [2] 中。嘗試以下命令以瞭解如何將 R 用作簡單的計算器
輸入
100+2/3
結果
> 100+2/3

[1] 100.6667

在沒有關於如何處理命令輸出的任何指令的情況下,R 通常會將結果列印到螢幕上。暫時忽略 [1] 之前的答案:我們會看到這在 R 輸出多個數字時很有用。請注意,R 遵守標準的數學規則,即在加減法之前進行乘除法:它在將 100 相加之前將 2 除以 3。
R 命令有時可能很難理解,因此在某些情況下,用註釋對其進行標註可能會很有用。這可以透過輸入井號 (#) 字元來完成:同一行上的任何後續文字都將被 R 忽略。這將在本書的 R 示例中得到廣泛使用,例如:
輸入
#this is a comment: R will ignore it
(100+2)/3    #You can use round brackets to group operations so that they are carried out first
5*10^2       #The symbol * means multiply, and ^ means "to the power", so this gives 5 times (10 squared), i.e. 500
1/0          #R knows about infinity (and minus infinity)
0/0          #undefined results take the value NaN ("not a number")
(0i-9)^(1/2) #for the mathematically inclined, you can force R to use complex numbers
結果
> # 這是一個註釋:R 將忽略它

> (100+2)/3 # 你可以使用圓括號對操作進行分組,以便它們先執行 [1] 34 > 5*10^2 # * 符號表示乘法,^ 表示“乘方”,因此這表示 5 乘以 (10 的平方) [1] 500 > 1/0 # R 知道無窮大(和負無窮大) [1] Inf > 0/0 # 未定義的結果將取值為 NaN(“非數字”) [1] NaN > (0i-9)^(1/2) # 對於數學愛好者,你可以強制 R 使用複數 [1] 0+3i

  • 如果你不瞭解複數,別擔心:它們在這裡並不重要。
  • 請注意,你不能使用花括號 {} 或方括號 [] 來對操作進行分組


v·d·e

儲存物件

R 是一種稱為“面向物件”的程式。所有內容(包括您剛剛輸入的數字)都是一種物件。稍後我們將看到為什麼這個概念如此有用。目前,您只需要注意您可以為物件指定一個名稱,這將儲存它以供以後使用。可以使用類似箭頭的符號 <--> 來分配名稱,如下面的練習所示。您使用哪個符號取決於您是否更喜歡將名稱放在前面或後面(將 -> 視為“放入”,將 <- 視為“設定為”可能會有所幫助)。與許多統計軟體包不同,R 通常不會顯示您執行的分析結果。相反,分析通常以生成一個可以儲存的物件結束。然後可以隨時從該物件中獲取結果。因此,在 R 中進行統計時,您會經常發現自己命名和儲存物件。您選擇的名稱應包含字母、數字和“.”字元[3],並且不能以數字開頭。
輸入
0.001 -> small.num                #Store the number 0.0001 under the name "small.num" (i.e. put 0.0001 into small.num)
big.num <- 10 * 100               #You can put the name first if you reverse the arrow (set big.num to 10000).
big.num+small.num+1               #Now you can treat big.num and small.num as numbers, and use them in calculations
my.result <- big.num+small.num+2  #And you can store the result of any calculation
my.result                         #To look at the stored object, just type its name
pi                                #There are some named objects that R provides for you
結果
> 0.001 -> small.num # 在名稱為“small.num”下儲存數字 0.0001(即,將 0.0001 放入 small.num 中)

> big.num <- 10 * 100 # 您可以將名稱放在前面,如果反轉箭頭(將 big.num 設定為 10000)。> big.num+small.num+1 # 現在您可以將 big.num 和 small.num 視為數字,並在計算中使用它們 [1] 1001.001 > my.result <- big.num+small.num+2 # 並且您可以儲存任何計算的結果 > my.result # 要檢視儲存的物件,只需鍵入其名稱 [1] 1002.001 > pi # R 為您提供了一些命名物件 [1] 3.141593

請注意,當命令的最終結果是儲存(分配)一個物件時,例如在輸入行 1、2 和 4 上,R 不會向螢幕列印任何內容。


v·d·e

函式

除了數字之外,R 中最有用的命名物件可能是**函式**。您在 R 中執行的幾乎所有有用操作都是使用函式完成的,並且 R 預設情況下提供了許多函式。您可以透過鍵入函式名稱後跟一對圓括號來使用(或“呼叫”)函式。例如,啟動文字提到了以下函式,如果您想在已發表的作品中引用 R,您可能會發現它很有用
輸入
citation()
結果
> citation() 要在出版物中引用 R,請使用:R Development Core Team (2008)。R:一種用於統計計算的語言和環境。R 統計計算基金會,維也納,奧地利。ISBN 3-900051-07-0,URL http://www.R-project.org。LaTeX 使用者的 BibTeX 條目是 @Manual{,url = {http://www.R-project.org},title = {R:一種用於統計計算的語言和環境},author = {{R Development Core Team}},organization = {R 統計計算基金會},address = {維也納,奧地利},year = {2008},note = {{ISBN} 3-900051-07-0},} 我們在建立 R 上投入了大量時間和精力,請在使用它進行資料分析時引用它。另請參閱‘citation("pkgname")’ 以引用 R 包。
許多 R 函式可以根據您提供給它們的**引數**產生不同的結果。引數放置在圓括號內,用逗號隔開。許多函式有一個或多個可選引數:也就是說,您可以選擇是否提供它們。citation() 函式就是一個例子。它可以接受一個可選引數,該引數提供R 附加包的名稱。如果您沒有提供可選引數,通常會使用一個假設的預設值(在 citation() 的情況下,這個預設值為 "base",即提供基本包的引用:提供 R 語言大部分基礎的包)。

大多數函式引數是命名的。例如,citation 函式的第一個引數名為package。為了提供額外的清晰度,在使用函式時,您可以使用較長的形式name=value 提供引數。因此

citation("base")

citation(package="base")
相同。如果一個函式可以接受多個引數,使用長形式還可以改變引數的順序,如下面的示例程式碼所示。
輸入
citation("base")      #Does the same as citation(), because the default for the first argument is "base"
                      #Note: quotation marks are needed in this particular case (see discussion below)
citation("datasets")  #Find the citation for another package (in this case, the result is very similar)
sqrt(25)              #A different function: "sqrt" takes a single argument, returning its square root.
sqrt(25-9)            #An argument can contain arithmetic and so forth
sqrt(25-9)+100        #The result of a function can be used as part of a further analysis
max(-10, 0.2, 4.5)    #This function returns the maximum value of all its arguments
sqrt(2 * max(-10, 0.2, 4.5))             #You can use results of functions as arguments to other functions
x <- sqrt(2 * max(-10, 0.2, 4.5)) + 100  #... and you can store the results of any of these calculations
x
log(100)              #This function returns the logarithm of its first argument
log(2.718282)         #By default this is the natural logarithm (base "e")
log(100, base=10)     #But you can change the base of the logarithm using the "base" argument
log(100, 10)          #This does the same, because "base" is the second argument of the log function
log(base=10, 100)     #To have the base as the first argument, you have to use the form name=value
結果
> citation("base") # 與 citation() 相同,因為第一個引數的預設值為“base” 要在出版物中引用 R,請使用:R Development Core Team (2008)。R:一種用於統計計算的語言和環境。R 統計計算基金會,維也納,奧地利。ISBN 3-900051-07-0,URL http://www.R-project.org。LaTeX 使用者的 BibTeX 條目是 @Manual{,title = {R:一種用於統計計算的語言和環境},author = {{R Development Core Team}},organization = {R 統計計算基金會},address = {維也納,奧地利},year = {2008},note = {{ISBN} 3-900051-07-0},url = {http://www.R-project.org},} 我們在建立 R 上投入了大量時間和精力,請在使用它進行資料分析時引用它。另請參閱‘citation("pkgname")’ 以引用 R 包。 > # 注意:在這種情況下需要引號(見下文討論) > citation("datasets") # 查詢另一個包的引用(在這種情況下,結果非常相似)'datasets' 包是 R 的一部分。要在出版物中引用 R,請使用:R Development Core Team (2008)。R:一種用於統計計算的語言和環境。R 統計計算基金會,維也納,奧地利。ISBN 3-900051-07-0,URL http://www.R-project.org。LaTeX 使用者的 BibTeX 條目是 @Manual{,title = {R:一種用於統計計算的語言和環境},author = {{R Development Core Team}},organization = {R 統計計算基金會},address = {維也納,奧地利},year = {2008},note = {{ISBN} 3-900051-07-0},url = {http://www.R-project.org},} 我們在建立 R 上投入了大量時間和精力,請在使用它進行資料分析時引用它。另請參閱‘citation("pkgname")’ 以引用 R 包。 > sqrt(25) # 另一個函式:“sqrt”接受一個引數,返回它的平方根。 [1] 5 > sqrt(25-9) # 引數可以包含算術運算等等 [1] 4 > sqrt(25-9)+100 # 函式的結果可以作為進一步分析的一部分使用 [1] 104 > max(-10, 0.2, 4.5) # 該函式返回所有引數中的最大值 [1] 4.5 > sqrt(2 * max(-10, 0.2, 4.5)) # 您可以將函式的結果用作其他函式的引數 [1] 3 > x <- sqrt(2 * max(-10, 0.2, 4.5)) + 100 # ... 並且您可以儲存這些計算結果 > x [1] 103 > log(100) # 該函式返回第一個引數的對數 [1] 4.60517 > log(2.718282) # 預設情況下,這是自然對數(以“e”為底) [1] 1 > log(100, base=10) # 但您可以使用“base”引數更改對數的底 [1] 2 > log(100, 10) # 這樣做是一樣的,因為“base”是 log 函式的第二個引數 [1] 2 > log(base=10, 100) # 要將基數作為第一個引數,您必須使用 name=value 形式 [1] 2
請注意,在鍵入普通文字(如包名稱)時,它需要用引號[4]括起來,以避免與物件的名稱混淆。換句話說,在 R 中
citation

指的是一個函式,而

"citation"

是一個文字“字串”。這在提供繪圖示題等時很有用。

您可能會發現,瞭解 R 的最棘手方面之一是知道在特定情況下使用哪個函式。幸運的是,R 不僅為所有其函式提供文件,還提供搜尋文件的方法,以及其他獲取幫助的方法。


v·d·e

獲得幫助

在 R 中獲得幫助有很多方法,而且還有大量線上資訊。大多數 R 安裝都帶有一個相當詳細的幫助檔案,名為“R 入門”,但對於第一次使用統計軟體包的使用者來說,這可能有點技術性。R 中自動提供的幾乎所有函式和其他物件都有一個幫助頁面,該頁面詳細介紹瞭如何使用它們。這些幫助頁面通常還包含示例,這對於新使用者特別有用。但是,如果您不知道要查詢的內容的名稱,那麼查詢幫助可能並不容易,儘管可以搜尋與物件相關的關鍵字和概念。某些版本的 R 提供輕鬆訪問幫助檔案,無需鍵入命令(例如,提供選單欄的版本通常有一個“幫助”選單,Macintosh 介面在右上角也有一個幫助框)。但是,始終可以透過鍵入相應的命令來訪問此功能。您可能想在 R 會話中鍵入以下內容中的部分或全部內容(這裡沒有列出輸出,因為結果將取決於您的 R 系統)。
help.start()            #A web-based set of help pages (try the link to "An Introduction to R")
help(sqrt)              #Show details of the "sqrt" and similar functions
?sqrt                   #A shortcut to do the same thing
example(sqrt)           #run the examples on the bottom of the help page for "sqrt"
help.search("maximum")  #gives a list of functions involving the word "maximum", but oddly, "max" is not in there!
### The next line is commented out to reduce internet load. To try it, remove the first # sign.
#RSiteSearch("maximum")  #search the R web site for anything to do with "maximum". Probably overkill here!
倒數第二個命令說明了使用 R 幫助函式時可能會遇到的一個問題。幫助檔案的搜尋功能有時有點隨機。如果您找不到您要查詢的確切內容,檢視任何聽起來有點相似或相關的幫助檔案的“另請參閱”部分通常很有用。在這種情況下,您可能最終會透過檢視 which.max() 幫助檔案的“另請參閱”部分來找到 max() 函式。不太理想!。


v·d·e

退出 R

要退出 R,您可以使用 `quit()` 函式或其相同的快捷方式 `q()`,它們不需要任何引數。或者,如果您的 R 版本有選單欄,您可以用滑鼠選擇“退出”或“結束”。
q()
無論哪種方式,都會詢問您是否要儲存工作區映象。這將儲存您迄今為止完成的所有工作,並在下次啟動 R 時載入它。雖然這聽起來是個好主意,但如果您回答“是”,您很快就會發現每次啟動 R 時都會載入大量無關的過去分析。所以,如果您想幹淨地退出,請回答“否”。


設定華夏公益教科書

[編輯 | 編輯原始碼]

在開始閱讀正文之前,我們建議您新增一些特定的華夏公益教科書偏好設定。前三行將以更美觀的形式顯示 R 命令的示例。最後一行以更美觀的形式呈現由多個圖(稱為子圖)組成的圖形。您可以透過建立使用者 CSS 檔案來實現這一點,如下所示。

  • 確保您已登入(如果您還沒有帳戶,請建立一個帳戶)。
  • 訪問您的個人 CSS 樣式表,位於 Special:MyPage/skin.css
  • 單擊“編輯此頁面”。
  • 將以下幾行貼上到大型編輯框中
pre {padding:0; border: none; margin:0; line-height: 1.5em; }
.code .input ol {list-style: none; font-size: 1.2em; margin-left: 0;}
.code .input ol li div:before {content: "\003E \0020";}
table.subfigures div.thumbinner, table.subfigures tr td, table.subfigures {border: 0;}

[5]

  • 如果您瞭解任何CSS,請對這個樣式表進行任何您喜歡的更改。
  • 最後,透過單擊“儲存頁面”來儲存頁面。

夠了!讓我們繼續閱讀正文。

  1. 這些是拙劣的統計笑話嘗試,您很快就會發現。
  2. 根據您如何檢視這本書,您可能會看到每個命令前面有一個“>”字元。這不是要鍵入的命令的一部分:它是 R 本身生成的,提示您鍵入內容。如果您從本書的線上版本複製和貼上,此字元應自動省略,但如果您閱讀紙質版或 pdf 版本,則在鍵入 R 時應省略“>”提示。
  3. 如果您熟悉計算機程式語言,您可能習慣於在名稱中使用下劃線(“_”)字元。在 R 中,通常使用“.”來代替。
  4. 您可以使用單引號(')或雙引號(")來分隔文字字串,只要開始和結束引號匹配即可
  5. (請注意,這是一個臨時 hack,直到 GeSHi 支援 R 程式碼,在這種情況下,統計分析:使用 R 入門/R/語法 可以更改。css 程式碼實際上應該讀作
    .pre {padding:0; border: none; margin:0; line-height: 1.5em; } .source-R ol {list-style: none; font-size: 1.2em; margin-left: 0;} .source_R ol li div:before {content: "\003E \0020";}
下一頁: 第 1 章 | 上一頁: 封面
首頁: 統計分析:使用 R 入門
華夏公益教科書