好書介紹:R in Action

Kabacoff, Robert I. (2011), R in Action: Data Analysis and Graphics with R, Manning.

 

         玩 R 的人大多知道 Quick-R: accessing the power of R 這個網站,此站不僅名稱 www.statmethods.net 令人印象深刻,且網頁組織與規劃得十分簡單明瞭,內容說明更是清楚易懂,是許多人入門 R 軟體的良伴。網站主人 Robert I.Kabacoff 是心理學博士,不僅有 25 年的 SAS 與 SPSS 程式設計經驗,還精通多種程式語言。他自認初接觸 R 時,因為 R 的廣博與強大,經常覺得自己無知與渺小,因而架設了 Quick-R 網站,分享個人的學習歷程,進而體驗 learning by teaching 的最佳功效。

 

        如今 Kabacoff 博士根據 Quick-R 的網站內容加以擴編成為此本好書,全書共分四大部份十六章,以按步就班的方式介紹實際的資料分析與視覺化方法。作者希望幫助 R 初學者在面對四千多個套件與至少五萬個以上的函數時,能毫無挫折與焦慮地領略 R 軟體開源及強大之美,進而以有型、優雅、效率、甚至是小酷的方式完成手邊的資料分析工作!

 

撰文者:國立台北商業技術學院資訊與決策科學所教授、中華 R 軟體學會理事長 鄒慶士 博士

好書介紹:R through Excel

Heiberger, R. M. and Neuwirth, E. (2009), R Through Excel: A Spreadsheet Interface for Statistics, Data Analysis, and Graphics, Springer.

 

         英國牛津大學統計系的 Ripley 教授(知名的 Modern Applied Statistics with S 一書及 R 套件 MASS 的共同作者),Ripley 教授曾在 2002 年皇家統計協會的開幕致詞中提及:我們不要再自欺欺人了,最普及的統計軟體是 Excel!(Let's not kid ourselves: The most widely used piece of software for statistics is Excel.) 試算表的橫列縱行形式有助於資料蒐集、處理與儲存,但 Excel 的數值精確度卻是其不足之處。而 R 是當今資料分析與繪圖的最佳軟體之一,它由一群來自大學與產業界的統計學家和電腦科學家組成之跨國核心開發團隊(R core development team)所維護,R 已是科學、社會科學、經濟、商業等領域的統計研究與統計應用的重要工具,不過 R 陡峭的學習曲線一直是令人望之生卻的原因。

 

本書結合易用的 Excel 試算表,以及精確且強大的 R 軟體。透過增益集程式(add-in)RExcel,資料可在 Excel 與 R 間轉來轉去、Excel 可呼叫 R 函數執行計算、並將結果傳回 Excel 中。此外,若使用者有安裝 Rcmdr 套件(R commander),則 RExcel Rcmdr 選單上也會有 Rcmdr 的外掛程式(plug-in)套件;R 中的基本統計程序,都可經由 Rcmdr 外掛程式的功能,提供使用者圖形化使用者界面(Graphical User Interface, GUI)的操作方式。筆者多年前即將此書作為初級統計學的教材,讓同學們領略學中做、做中學的樂趣。除了資料的匯入與匯出外,讀者亦可透過書中範例了解假說檢定、信賴區間、線性迴歸、變異數分析與卡方檢定等基礎統計主題,不過 RExcel 的安裝冗長,若願意捨棄 Excel 的束縛者,建議直接使用 Rcmdr 套件即可。

 

撰文者:國立台北商業技術學院資訊與決策科學所教授、中華 R 軟體學會理事長 鄒慶士 博士

好書介紹:simpleR Using R for Introductory Statistics

John Verzani (2001), simpleR – Using R for Introductory Statistics.

        R 軟體給人的印象是艱澀難近,尤其是沒有統計基礎的初學者們。網路上有許多免費的學習教材,美國紐約城市大學教授 John Verzani 所編著的simpleR – Using R for Introductory Statistics 不到 150 頁,以大量簡例說明資料輸入、單/雙/多變量的基本分析與繪圖、隨機資料的產生與模擬、探索式資料分析與基礎統計分析(區間估計、假說檢定、卡方檢定、迴歸分析與變異數分析)等主題。對於物件、函數、工作空間、環境、編程語法與外來資料匯入亦融入各章簡例中,全書除了敘述簡單明瞭,亦饒富統計分析的基本觀念,是值得推薦的 R 軟體免費入門教材。

 

        唯此免費教材難免有些筆誤,且 R scripts 也有誤謬!不過從錯誤中學習不失為一種難得的經驗,CARS 網站(http://www.r-software.org/paper)有完整投影片與正確的 R Scripts。Verzani 教授最近又開發了 R 軟體簡易圖形化界面 Poor Man’s GUI (套件名:pmg),也是協助初學者輕鬆入門 R 語法的好用工具。最後,simpleR 經 Verzani 教授擴編為教科書 Using R for Introductory Statistics(Chapman & Hall/CRC The R Series),也因為如此,原 simpleR 套件已升級為UsingR,有興趣的讀者可再延伸閱讀此書。

 

撰文者:國立台北商業技術學院資訊與決策科學所教授、中華 R 軟體學會理事長 鄒慶士 博士

好書介紹:Data Manipulation with R

Spector, Phil (2008), Data Manipulation with R, Springer.

 

        許多人都被資料分析/資料探勘中複雜的模型所吸引,殊不知資料分析師費時最多的工作卻是各式資料的前處理(data preprocessing)作業。證諸資料分析競賽中的優勝作品,資料探勘專案的關鍵成功因素是從正確的資料中繪製圖形,或建立適切的資料模型,而非一味地醉心於高階或奇特模型的配適工作。因此,做好資料前處理的工作,方能提升資料品質,加大專案成功的機率。否則,再先進的模型,都會淪為垃圾進垃圾出(garbage in garbage out)的不好結果。

 

         美國加州大學柏克萊分校統計系的軟體顧問 Spector 先生所著的這本經典書籍,介紹了 R 中整理與組織資料的各種技術,從 R 中資料物件的種類、R 如何儲存資料、資料的讀取與寫出方式、日期和時間資料的比較與處理、因子(又稱類別或次序變數)的處理與轉換、運用索引(尤其是邏輯索引)方式存取或修改向量/矩陣/陣列/串列等資料、字符資料的處理、以及 R 中最常用的資料框(data frame)物件的彙總/轉換/變形等處理。全書範例實用,敘述簡單明瞭,實為欲精通 R 資料分析技術者必修的基本馬步。

 

撰文者:國立台北商業技術學院資訊與決策科學所教授、中華 R 軟體學會理事長 鄒慶士 博士

R 的字元處理函數 paste

最近對文字資料探勘(text mining)特別感到興趣,因此,今天就來談談 R 的字元處理。大家都知道 R 中處理字元最常用的函數就屬 paste 了。其實 paste 有兩個重要參數 collapse 與sep,請先看下面的例子。

> paste("one", 2, "three", 4, "five")

[1] "one 2 three 4 five"

這是將個別的單一字串(string)粘貼起來。

> paste(c("one", "two", "three", "four"), collapse = " ")

[1] "one two three four"

此函數也可將一字元向量(character vector)中的各元素(i.e. 各字串)串接起來,銜接字元以collapse 參數設定之。

如果是多個字元向量的話,請看下面的例子:

> paste("X", 1:5, sep = "")

[1] "X1" "X2" "X3" "X4" "X5"

> paste(c("X", "Y"), 1:5, sep = "")

[1] "X1" "Y2" "X3" "Y4" "X5"

paste 函數可以將兩個(或多個)字元向量的對應元素粘貼起來,銜接字元以 sep 參數設定之。

請注意!所得結果仍為一字元向量。而且 R 中函數均有向量化(vectorization)的特性,會自動將較短的向量擴增其長度直至與較長向量的長度相等後,再做運算(此處即為 paste 運算)。

> paste(c("X", "Y"), 1:5, sep = "_", collapse = "|")

[1] "X_1|Y_2|X_3|Y_4|X_5"

> paste(c("X", "Y"), 1:5, "^", c("a", "b"), sep = "_", collapse = "|")

[1] "X_1_^_a|Y_2_^_b|X_3_^_a|Y_4_^_b|X_5_^_a"

更有趣的例子在此,sep 與 collapse 都使用的情況下,還是會遵循向量化特性,先串接對應元素,再依 collapse 設定串接字元向量中的各元素。因此,其最終結果為一字串,而非字串向量!

> paste(c("X", "Y"), 1:5, "^", c("a", "b"), sep = "_")

[1] "X_1_^_a" "Y_2_^_b" "X_3_^_a" "Y_4_^_b" "X_5_^_a"

最後,再複習一下!沒有 collapse,只有 sep 的情況下,其結果為一字元向量。

參考資料: Spector, P. (2008), Data Manipulation with R, Springer.

撰文者: 台北商業技術學院資訊與決策科學所教授、中華 R 軟體學會理事長 鄒慶士 博士

R 軟體入門書籍推介

CARS 的宗旨就是推廣 R 軟體,雖然起步維艱,但只要我們持續努力,終究對 R 感興趣的人

會越來越多。目前大部分的大專院校都沒有開設 R 軟體課程,這導致很多人不知道如何開始

學習 R 軟體。論壇發問或許是不錯的方式,CARS 網站上也有 R 使用者論壇,但最好的方式

還是自己看書。市面上 R 軟體的書籍很多,以英文居多。個人認為 simpleR – Using R for

Introductory Statistics (by John Verzani)是本不錯的入門書,雖然書中有不少錯誤,但可從這些錯誤中更瞭解 R,CARS 網站中有提供 simpleR 的各章投影片,正確的 R 程式碼近日將會放上。

 

法國學者 Emmanuel Paradis 撰寫的 R for Beginners,也是本入門首選且相當精簡的免費教材。R 核心開發團隊成員所著的 A First Course in Statistical Programming with R (by W. John Braun andDuncan J. Murdoch)是將自己推向另一個高峰的好書,此書閱畢應該有基礎的 R 程式撰寫能力。此外,An R Companion to Applied Regression (car)更是 R 客須讀的一本書,作者 John Fox 對 R社群貢獻卓著,不僅完成了知名的 car 套件,更提供 R 早期 GUI 界面套件 Rcmdr。最後,知名 的 Introductory Statistics with R 是本介於 simpleR 與 car 之間的好書,丹麥籍作者 PeterDalgaard 也是 R 核心開發團隊中的成員,功力自然不在話下!進階書籍推介下回見。

 

撰文者:國立台北商業技術學院資訊與決策科學所教授、中華 R 軟體學會理事長 鄒慶士 博

R軟體中的attach 與時下的 with 指令

最近在學會(http://www.r-software.org/)的台灣 R 軟體使用者論壇上有人提起 attach 指令,讓我想起前一陣子看到的 with 指令。過去我們常用 attach 指令,將資料框物件附加到搜尋路徑(search path)上,使得資料框中的變數對於 R 的直譯器(interpreter)而言是可見的(visible),省去須敲擊資料框全名方能引用變數的麻煩!以 car 套件中的資料框 Duncan 為例,

> library(car)

> head(Duncan)

                  type   income   education  prestige

accountant  prof          62              86          82

pilot            prof          72              76          83

architect      prof          75              92         90

author          prof          55             90         76

chemist       prof          64              86         90

minister       prof          21              84         87

> summary(Duncan)

    type               income        education               prestige  

bc  :21     Min.     :  7.00    Min.     :  7.00    Min.     : 3.00 

prof:18    1st Qu. : 21.00   1st Qu. : 26.00   1st Qu. :16.00

wc  : 6     Median :42.00   Median  :45.00   Median :41.00

               Mean    :41.87   Mean    :52.56    Mean    :47.69

               3rd Qu. :64.00   3rd Qu.: 84.00    3rd Qu. :81.00

               Max.     :81.00   Max.   :100.00    Max.    :97.00 

資料框名後接串列取值字元($)加變數名結果如下:

> Duncan$prestige

[1]   82 83 90 76 90 87 93 90 52 88 57 89 97 59 73 38 76 81 45 92 39 34 41 16 33
[26] 53 67 57 26 29 10 15 19 10 13 24 20 7 3 16 6 11 8 41 10> mean(Duncan$prestige)

[1] 47.68889

attach 資料框後,在 detach 之前都可直接取用資料框中所有變數。

> attach(Duncan)

> prestige

[1]   82 83 90 76 90 87 93 90 52 88 57 89 97 59 73 38 76 81 45 92 39 34 41 16 33
[26] 53 67 57 26 29 10 15 19 10 13 24 20 7 3 16 6 11 8 41 10

> detach(Duncan)

以下是一些不贊成 attach 的理由:首先是附加上之資料框變數會遮罩住其它同名的變數;再者,attach 是將資料框一時的快照(snapshot)複本,附加在全域環境(global environment)之後,萬一資料框有所變動,是不會反映在其複本上;最後,使用者經常會忘記 detach 暫時不用的資料框,徒增資料分析過程的混亂。因此,避免附加資料框到搜尋路徑的做法除了前述的全名引用外,也可以用 with 指令,使得 R 在該資料框環境下評析後續的指令。

> with(Duncan, mean(prestige))
[1] 47.68889

> with(Duncan, lm(prestige ~ income + education))

Call:
lm(formula = prestige ~ income + education)

Coefficients:
(Intercept)   income   education
   -6.0647    0.5987       0.5458

當然,我們也可以利用 R 中許多統計建模函數的 data 參數,其結果與前面的 with 指令相同。

(lm(prestige ~ income + education, data = Duncan))

Call:
lm(formula = prestige ~ income + education)

Coefficients:
(Intercept)   income   education 
   -6.0647    0.5987       0.5458

最後,取出部分子集與資料繪圖等工作也可搭配 with 指令來使用,此處互動式繪圖的結果並未顯示於圖面上。

> with(Duncan, Duncan[type == "bc" & income > mean(income), ])

                              type  income  education  prestige

electrician                  bc         47            39           53

RR.engineer               bc         81            28           67

plumber                     bc        44            25           29

streetcar.motorman     bc        42            26           19

> with(Duncan,{

+ plot(education, prestige)

+ identify(education, prestige, row.names(Duncan))

+ })

f:id:DataScience:20140824174643p:plain

參考資料:Fox, J. and Weisberg, S. (2011), An R Companion to Applied Regression, 2nd Edition,Sage.

 

撰文者:
鄒慶士 博士
現任:
北商資訊與決策科學所教授
中華 R 軟體學會理事長
信箱:
vince.tsou@gmail.com