跳轉到內容

統計分析:R入門與R基礎

來自Wikibooks,開放世界中的開放書籍

為什麼選擇R?

[編輯 | 編輯原始碼]

R是一個命令驅動的統計軟體包。乍一看,這可能讓人感覺難以使用。但是,有很多理由讓我們學習使用這個程式進行統計分析。其中最重要的兩個原因是

  • R是免費的;您可以從 http://www.r-project.org 下載並安裝到幾乎任何型別的計算機上。
  • R允許您進行所有可能需要的統計檢驗,從簡單的到高階的都有。這意味著您始終能夠對您的資料進行正確的分析。

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

最後一個好處是在您對統計或R有一定的瞭解後,您可以利用R的許多線上資源來幫助您。在本 書的附錄 中列出了相關資源。

如何使用本書學習R

[編輯 | 編輯原始碼]

本書中的主要文字描述了統計分析的原理和方法,與您使用的統計軟體包無關。但是,在主要文字之外,還包含大量的“R主題”:使用R來闡述特定點的練習和示例。您可能會發現需要一些時間才能適應R,特別是如果您不熟悉計算機語言的概念。

不用擔心!本章和 第二章 中的主題應該可以幫助您入門,讓您能夠理解和使用R的基本功能。本章旨在幫助您入門:安裝R後,您可以學習如何進行 簡單的計算使用函式,如何 儲存結果,如何 獲取幫助,以及如何 退出。第一章中的幾個練習主要展示了使用R時可用的可能性,而第二章則介紹了R使用方面的核心內容:特別是 向量因子讀取資料資料幀 中,以及 繪製 各種 型別的 圖表。從那時起,練習將更加側重於統計分析。

如果您希望在進行統計討論之前直接完成這些初始練習,您可以 在這裡 檢視它們。請注意,線上完成R主題時,如果您 設定Wikibooks 以更好地顯示R命令,則會更具視覺吸引力。如果R主題妨礙了您閱讀主要文字,您可以點選每個框右上角的箭頭將其隱藏。

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

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遵循標準的數學規則,即先進行乘法和除法,然後再進行加法和減法:它先將2除以3,然後再加100。
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 # 將數字 0.0001 儲存在名為“small.num”的名稱下(即,將 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 核心開發團隊 (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 核心開發團隊}}, 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 核心開發團隊 (2008)。R:統計計算的語言和環境。R 統計計算基金會,奧地利維也納。ISBN 3-900051-07-0,URL http://www.R-project.org。LaTeX 使用者的 BibTeX 條目是 @Manual{, title = {R:一種用於統計計算的語言和環境}, author = {{R 核心開發團隊}}, 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 核心開發團隊 (2008)。R:統計計算的語言和環境。R 統計計算基金會,奧地利維也納。ISBN 3-900051-07-0,URL http://www.R-project.org。LaTeX 使用者的 BibTeX 條目是 @Manual{, title = {R:一種用於統計計算的語言和環境}, author = {{R 核心開發團隊}}, 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. (請注意,這是一個臨時解決方法,直到 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 入門
華夏公益教科書