R1

最近在學會(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

CARS 發表在 痞客邦 留言(0) 人氣()

瞎忙了一陣子,驚覺許久未動筆撰寫閒話家常了,雖然每天都會操作或閱讀一些 R 相關文件,但總覺不能脫稿太久。回想起常在課堂上對學生或學員們說:「 R 海無涯,為勤是岸。」不但是鼓勵學員,也算是一種自我惕勵。但這樣說來,好像學 R 是件令人可懼的事,其實讀者們不用太擔心!因為 R 玩家中有許多強大的巨人會引領我們向前航行。比如說今天的主角
plyr 套 件 ,就 是由多 產的 美國 Rice 大學統 計系助理 教授,紐西蘭裔的 Hadley Wickham(http://had.co.nz/)所開發的,他是資料視覺化(data visualization)的專家,也是知名的資料整理(data manipulation)套件 reshape 與繪圖套件 ggplot2 的主要開發者。

plyr 的讀音同英文的老虎鉗(pliers)去掉字尾 s,顧名思義它是運用分割-應用-組合(split-apply-combine)的策略於資料分析的工作上,也就是說將一大的問題,切割為可管控的子集,個別進行問題解決後,再重新組合起來。舉例來說,先建一個包含三個數值變數與兩個因子的72 筆資料,

> library(plyr)
> dd <- data.frame(matrix(round(rnorm(216), 2), 72, 3), c(rep("A", 24), rep("B", 24), rep("C",

CARS 發表在 痞客邦 留言(0) 人氣()

word6pic1

機率與統計的教科書都會有機率密度函數(probability density function, pdf) 與累積分配函數(cumulative distribution function, cdf)的圖形,以說明累積機率值與分位點(quantile)的對應關係。在R 中,讀者可以pnorm 函數求出某一分位點的累積幾率值。例如:標準常態分位點z = 1.5 的累積機率值如下。

 > pnorm(1.5, 0, 1)

[1] 0.9331928

反過來說,qnorm 可以求出累積機率為0.9331928 所對應的標準常態分位點。

> qnorm(0.9331928, 0, 1)

CARS 發表在 痞客邦 留言(0) 人氣()

w7

當我們對單一資料蒐集對象測量多個變數值時,寬資料是指同一對象的所有測量值都排在同一列;長資料則是各個測量值單獨成一列,並標明其是哪個變數的測量值。某些統計分析須使用寬資料,例如相關分析;也有些分析偏好長資料,例如變異數分析。

首先,我們以data.frame 函數建一個五個蒐集對象、三個變數的寬資料:

> mydata <- data.frame(var1 = c(12, 15, 19, 22, 15), var2 = c(18, 12, 42, 29, 44), var3 = c(8, 17, 22, 19, 31))
> mydata

運用stack 函數可將資料轉成長資料,

CARS 發表在 痞客邦 留言(0) 人氣()

許多人認為學會過了程式設計,就能夠駕馭R 語言!殊不知R 語法有其特殊性,更遑論背後的統計模型與繪圖專業了。舉例來說,下面就是標準的不良R 程式(canonical bad Rprogram),用來計算a 與b 兩向量的內積:

> (a <- 1:5)

[1] 1 2 3 4 5
> (b <- 5:1)

[1] 5 4 3 2 1

CARS 發表在 痞客邦 留言(0) 人氣()

row1

進行資料分析前,資料正規化經常是一個必要的步驟。此時若能留意R 的行導向特性,當可
事半功倍。例如:欲對下列三行變數做最大-最小正規化

> (x <- matrix(1:24, 8, 3))

首先以先前提過的apply 函數求出各行最小值,

CARS 發表在 痞客邦 留言(0) 人氣()

apply01

資料分析經常需要運用for 迴圈反覆執行某項工作,然而R 程式中卻不可用太多的迴圈,否則會大大降低程式執行的效率!以紐約市空氣品質資料為例,其為包含六個變數的154 筆資料,以apply 函數可以輕易地計算出各行變數的平均值。

> head(airquality)
> apply(airquality, 2, mean) # apply(資料集名稱, 2 表逐行, 套用函數名稱)

CARS 發表在 痞客邦 留言(0) 人氣()

R是一個很好的模擬工具,有許多內建函數可資運用。使用者有時希望獲得相同的模擬
結果,則可將隨機種子(random seed)儲存起來重複利用。例如:

> set.seed(12)
> seed <- .Random.seed
> x <- runif(10)

CARS 發表在 痞客邦 留言(0) 人氣()

R 是以行來排列資料的語言,舉例來說:先建一 3X4 的二維矩陣。

>x <- matrix(1:12,3,4); x

矩陣中的資料預設就是依序以行來排列完成。今欲計算每列四筆資料的平均數與
中位數,運用 apply 函數如下:

>myMeanNMedian <- function(x) c(mean(x), median(x))

CARS 發表在 痞客邦 留言(0) 人氣()

openoffice2

OpenOffice.org(OO.o)為一開放源碼的桌上生產力套裝軟體,它可以安裝在所有的作業平台上。OO.o 可讀取大多數的文件格式(.odt,.rtf,.txt,.html,.xml 等),當然也包括.doc 與.docx 檔。OO.o 的標準附加檔名為.odt,是開放文件文本(Opendocumenttext)的英文縮寫。

R軟體中odfWeave 套件的同名函數可產生內含R 輸入指令與輸出結果的.odt檔,使用者無須在.odt 文檔中鍵入與編排R 指令與輸出結果。當資料更新時,只要重新編譯,即可產生新的報告文檔。而且產生的.odt 文檔,如同其他的OO.o文檔,都可以開啟OpenOffice.org 加以編輯。以下說明以OO.o 編排資料分析報告之步驟:

1. 以OO.o 的.odt 文件撰寫您的報告(檔名以infile.odt 為例),將之儲存在工作目錄中。

2. 在.odt 文件之適當位置插入R 指令區塊,頭尾請分別加上<<>>=與@,例如:

<<>>=

CARS 發表在 痞客邦 留言(0) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。