• 沒有找到結果。

作圖函數

在文檔中 R data (頁 32-43)

plot() 函數: R中繪製任何內容的最常用函數是plot()函數。 這是一個通用函數,可用於散點圖,

間序列圖,函數圖等。

如果給予單個向量資料, 則在 y 軸上對該行繪製值數字或索引。 如果給出兩個相同長度向量資 料, 則產生雙變量散佈圖。

urve() 函數: 要在指定的值範圍內繪製連續函數, 可以使用 urve() 函數。

urve(expr, from, to,add = FALSE, ...)

> urve(sin(x), from = 0, to = 2*pi)

>abline(7,2, ol="green") # y=7+2x ,h=*, v=*

我們可以在圖形視窗中添加幾個不同的功能。 要添加點, 我們使用 points() 指令 。 要添加一條

直線, 可以使用 abline()函數。 線條函數用於添加更多一般線條。 它繪製了指定的點,並用直線

連接它們。 類似於在繪圖函數中添加參數 type =l。 參數 add = TRUE, 曲線將添加到圖形 中

points() 函數: 在已經繪圖圖中增加點, 可以使用 points(x,y) 函數,

(x, y)

為向量。

在函數添加參數type=b 為顯示點位置,點與點間以直線連接。type=l 為點與點以直線連 接, 不顯示點位置。

表 4: 作圖常用指令函數 指令 用法說明簡介

abline() 增畫一直線 (給予斜率,y 截距)、 鉛直線或水平線

arrows() 坐標增加一方向箭頭

lines() 連接兩點的線

points() 增畫點坐標位置

spline() 在資料點間內插方法 (平滑曲線連接)

rug() 在

x

坐標軸增劃標記

segments() 增劃割線(lines() )

text() 在圖形中增添文字

title() 圖形標題, 次標題等

範例 1: > urve(sin(x), from = 0, to = 2*pi, ol=2,lty=1)

> points(x,sin(x),type="b", p h= 19 o l=1, lty= 2)

> points(spline(x,sin(x)),t ype= "b", p h= 4)

> urve(sin(x), from = 0, to = 2*pi, ol=2,lty=1) #函數關係作圖

> x= (seq(from=0,to=2*pi,by =0.5 ))

> points(x,sin(x),type="b", p h= 19, ol=1 ,lty =2) # 點與點連接折線

> points(spline(x,sin(x)),t ype= "b", p h= 4, o l=3, lty= 3) # 點與點平滑曲 線

順伯的窩 第 頁 共 頁

> legend(4, 0.5, legend= (" urve", "points","spline"),

ol= ("red", "bla k","green"), lty=1:3, ex=2) #圖例說明

>abline(h=0, ol="blue") # 水平直線 y=0

0 1 2 3 4 5 6

−1.0 −0.5 0.0 0.5 1.0

x

sin(x)

curve points spline

1: 曲線作圖、 點描法與平滑內插曲線 作圖參數:

ol: 用於設定默認的繪圖顏色 lty: 直線類型。 參數的值可以為整數:0為空,1為實線 (預設 值),2為虛線,3為點線 p h: 設置點的類型 ex: 設置文本和符合的尺度 p h: 設置點的類 型

> par(mfrow = (2, 2)) # 圖形以 2x2 格輸出

> par(lend = 1) # 設置線結束端的形狀 1="butt"

> par(bg = " ornsilk") # 作圖背景顏色設定

> par(xlog = TRUE) # x 軸是否設為對數單位 範例 2: 汽車行駛哩數與輪胎胎面磨損數據如下:

mileage 0 4 8 12 16 20 24 28 32

tread wear 394 329 291 255 229 204 179 163 150

若已知其回歸線截距 360, 斜率

−7.3

,有三種方法可在其散佈圖增畫回歸線

> miles = (0:8)*4 # 0 4 8 ... 32

> tread = s an()

1: 394 329 291 255 229 204 179 163 150

10:

Read 9 items

> plot(miles,tread) # make the s atterplot

>abline(lm(tread ~ miles))

## or as we know the inter ept and slope

> abline(360,-7.3)

## or using points

> points(miles,360 - 7.3*miles,type="l")

## or using lines

> lines(miles,360 - 7.3*miles)

## or using urve

> urve(360 - 7.3*x,add=T) # add a fun tion of x

順伯的窩 第 頁 共 頁

0 5 10 15 20 25 30

plot(body,brain,p h=16,xl ab= "Bod y weight (kg)", ylab="Brain weight (g)",

xlim= (0,280), ylim= (0,1350)) # xlim ylim 限制作圖範圍

text(x=body[ (21,32,56,36 )℄, y=br ain[ (21 ,32, 56,3 6)℄,

labels=X[ (21,32,56,36)℄,po s=4) # pos 文字位置1下2左3上4右方

>plot(1,1,xlim= (1,7.5),yl im= (1. 75,5 ),ty pe=" n",a xes= F,xl ab=" ",yl ab=" ") #不 作圖點

>box() # 圖框格

>points(1:7, rep(4.5, 7), ex=1:7, ol=1:7, p h=0:6) #點型式 p h0~6

>text(1:7,rep(3.5, 7), labels=paste(0:6), ex=1:7, ol=1:7) # 張貼文字

0~6

>points(1:7,rep(2.5,7), p h=(0:6)+7) # 點型式 p h7~13

>text((1:7), rep(2.5,7), paste((0:6)+7), pos=4) # 張貼文字7~13

>points(1:7,rep(2,7), p h=(0:6)+14) # 點型式 p h14~20

順伯的窩 第 頁 共 頁

>text((1:7), rep(2,7), paste((0:6)+14), pos=4) # 張貼文字14~20

0 1 2 3 4 5 6

6 6

7 8 9 10 11 12 13

14 15 16 17 18 19 20

0 1 2 3 4 5 6

4: 圖形中不同的點符號與大小

view. olours <- fun tion(){

plot(1, 1, xlim= (0,14), ylim= (0,3), type="n", axes=F,

xlab="",ylab="")

text(1:6, rep(2.5,6), paste(1:6), ol=palette()[1:6℄, ex=2.5)

text(10, 2.5, "Default palette", adj=0)

rain hars <- ("R","O","Y","G","B","I"," V")

text(1:7, rep(1.5,7), rain hars, ol=rainbow(7), ex=2.5)

text(10, 1.5, "rainbow(7)", adj=0)

mtxt <- substring(" m. olors", 1:9,1:9)

# Split â m. olorsâ into its 9 hara ters

text(1:9, rep(0.5,9), mtxt, ol= m. olors(9), ex=3)

text(10, 0.5, " m. olors(9)", adj=0)

}

box()

view. olours()

1.5 練習題

1. 假設您使用命令曲線

curve(cos(x))

繪製了一個繪圖。 您將使用哪條 R 指令將此圖作為 PDF 保存在名為 myplot.pdf 的文件中?

2. 詳細說明該指令的效果 par(mfrow= (3,2)) 3. 說明指令 layout() 功能用於什麼?

4. 您將使用哪個命令將散點圖添加到預先存在的繪圖中?

順伯的窩 第 頁 共 頁

1 2 3 4 5 6 Default palette

R O Y G B I V rainbow(7)

c m . c o l o r s cm.colors(9)

5: 圖形中不同的顏色

lty=1 lwd=2

lty=2 lwd=2

lty=3

lty=3 lwd=2

lty=4 lwd=2

lty=5 lwd=2

lty=6 lwd=2

font=1 plain cex=1

font=2 bold cex=2

font=3 italic font=4 bold italic φοντ=5 symbol cex=3

Line type & Fonts family

6: 線型式與粗細大小

順伯的窩 第 頁 共 頁

5. 您將使用函數 plot()的哪個參數來設定點之間連接線段?

6. 繪製一個直線的指令函數是什麼?

7. 您將使用哪個參數來管理繪圖中的顏色設定?

8. 給出顯示圖像的指令函數, 其值以矩陣 X 輸出, 您將使用哪個功能來顯示圖像? 以使輸出與控 制台中顯示 X 的方式一致。

9. 您將使用哪個指令函數在繪圖中添加文字?

10. 您可以使用哪個函數指令, 通過單擊鼠標來查找繪圖中點的坐標?

11. 詳細解釋指令 par(ask=TRUE) 的效果?

12. 函數par()的哪個參數將用於指令函數 urve() 繪製的線的類型?par()的哪個參數將用在散點

圖中顯示其他符號而不是小圓圈?

13. 提供說明列表以顯示以下圖表。 中軸系統必須以紅色顯示。 餘弦曲線必須以藍色顯示?

−10 −5 0 5 10

−2 −1 0 1 2

Sinus and cosinus curves

X axis

sin(x)

β ^

1

14. 靈長類動物的體重與腦容量資料如下, 先建立資料並作 (Bodywt,Brainwt) 的散佈圖, 並在旁 註記靈長類動物名?

Bodywt Brainwt

Potar monkey 10.0 115

Gorilla 207.0 406

Human 62.0 1320

Rhesus monkey 6.8 179

Chimp 52.2 440

15.

順伯的窩 第 頁 共 頁

2 R

軟體與敘述統計

想從事資料科學(DataS ien e)工作的朋友需要培養三個能力,著名的資料科學文氏圖(Drew

Con-way) 清楚的呈現了幾個方向。

Ha king Skills: 這裡說的並不是成為駭客所需要的技巧, 而是透過程式邏輯, 能夠有像演算法

這樣邏輯性的思考模式,同時具備一些程式設計與資料庫的技巧,將解決問題的邏輯程式化、 視 覺化。

Math &Stats knowledge: 透過數學、 統計、 模型等能力,分析或是推演出解決問題的邏輯。 數 學對於資料科學來說, 能了解模型背後的意涵, 進而設計相對應適合的模型, 避免只是盲目的跑 模型、 換模型。

Substantive Expertise: 擁有專業的領域知識, 能讓你精準的定義問題以及評判解決問題的結

果是否正確。 接著就是如何將這些模型被應用在專業領域。

Danger Zone: 白話的說法是 「會跑 Data Mining, 不表示能下正確決策」。 只要資料來源夠多,

就會有很高的機率找到強烈相關, 這種現象在大數據時代將會頻繁的發生。 這種相關性,"偽相關

(spurious orrelations)。 教科書通常會再次強調 「相關不見得有因果關係, 多想兩分鐘, 別看到有相

關就要下結論」

TraditionalRea her Math & Statisti s

Ma hinelearning

Ha king Skills

DangerZone

Substantive Expertise Data S ien e

統計是一門科學, 由收集資料

整理資料

分析資料

解釋意義等規則與程序。

對於給定的數據資料, 很大程度上取決於數據資料的結構 (依屬性分類別資料, 數量資料; 依數學 性質分離散資料, 連續資料) 以及正在進行的變量的類型 (單變數,多元變數)再決定可以執行的圖表 和數值摘要指令函數。

要進行統計之前,須先了解資料有哪些型態。 主要分為類別型 (如性別、 國籍)、 順序型(如滿意度, 距離沒有意義)、 區間 (如溫度, 距離有意義)及比例 (又稱為連續型, 一般最常見)

資料的度量尺度: 衡量資料變數的特性(可進行哪些統計計算), 在統計學中定義四種量尺(s ale)

1. 名目尺度 (nominal s ale): 類別型態的資料,: 婚姻狀態 (1表已婚,2表未婚)、 性別 (1=男 性,2=女性)、 血型、 職業等。 這些變數不能進行四則運算, 但可以計算次數、 眾數。

2. 順序尺度 (ordinal s ale): 具有大小、 順序、 強烈程度等特性的資料。 如: 五點李克特量表 (1 表非常不同意,2表不同意,3表無意見,4表同意,5表非常同意)、 學力(1表國中小,2表高中職,3表 大專,4表碩博士)、考試成績排名、 考試成績15等級分等。 有大小次序關係但不能進行四則運算, 只能計算次數、 眾數、 中位數。

順伯的窩 第 頁 共 頁

3. 區間尺度 (interval s ale): 同時具名目尺度與順序尺度之特性, 衡量資料間的差異有意義但不 具有倍數關係的變數。 如: 智商、 溫度、 問卷中年齡 (00-10,111-20,221-40,3

41-60歲,461歲以上) 等。 可衡量沒有倍數關係的數值資料, 可計算所有統計量數 (眾數、 中 位數、 平均數、 變異數、 標準差等)

4. 比例尺度 (ratios ale): 同時具有名目尺度、 順序尺度與區間尺度特性。 與區間尺度最大差別在

於變數數值資料具有固定的原點0, 數值具有倍數關係, 可進行四則運算, 可計算所有統計量數

(眾數、 中位數、 平均數、 變異數、 標準差等)

資料種類依照取得方式來源範圍、 資料屬性、 數學性質

· · ·

等進行分類

1. 來源範圍: 分普查資料與抽樣資料

2. 資料屬性: 分定性資料與定量資料

(a) 定性資料 (類別資料): 如性別、 婚姻狀態、 血型、 職業別等。 僅具名義上的性質, 無法用量 尺進行衡量。

(b) 定量資料(數值資料): 如年齡、身高、 體重或收入等。 可用順序量尺、 區間量尺、 比率量尺 衡量之。

3. 數學性質:分離散資料與連續資料

(a) 離散資料 (間斷資料): 如年度、 五等第、 家庭人口數、 賣場每日銷售飲料數等。 兩數值之 間無法再進行切割, 只能用某些特定數值表示。

(b) 連續資料: 如排隊等待時間、 每天的平均氣溫、 學童的身高體重等。 兩數值之間可再進行 切割, 能用連續的數值表示。

4. 是否分群組:

資料呈現的方式大致可分成: 條列式、 統計表與統計圖。 其中條列式與統計表較適合少數的資料, 統計圖則適合大量的資料。 使用適合的統計圖表可以讓資料分析更容易解讀資料, 並做較準確的估計 及進一步的推論步驟。

類別資料常用統計圖表:

1. 統 計 表: 次 數 分 配 表 (frequen y distribution table)、累積 次 數 分 配 表 ( umulative fre-quen y table) 與交叉表 ( ross table)

2. 統計圖:長條圖 (bar hart)、 折線圖 (polygon) 與圓面積圖(pie hart) 定量資料常用統計圖表: 是否進行分組(組距型、 非組距型)

1. 統計表: 次數分配表 (frequen y distributiontable)、 相對次數分配表與累積次數分配表

( umulative frequen y table)。

2. 統計圖:直方圖 (histogram)、 折線圖 (polygon)

而對於資料的描述, 可以透過資料的集中 (資料中心趨勢) 與分散 (資料分散差異程度) 兩大方向 來表達。 描述集中趨勢常見的有平均、 眾數與中位數。 描述資料分散差異程度則有四分位數、 全距、 百 分位數、 標準差、 變異數等。

除了個別資料描述外還可以描述不同變數之間的關係。 比如說, 我們想知道是不是身高越高 (公 分), 體重會比較重 (公斤)是否有相關係, 則可以用相關係數來表示。 其中最簡單的一種,是皮爾遜相 關係數 (Pearson produ t-moment orrelation oe ient,通常簡寫為 r)

順伯的窩 第 頁 共 頁

2.1

次數計算統計表

table() 函數: 對應的就是統計學中的列聯表, 是一種記錄頻數的方法, 對於統計來說有非常重要的應

用。 fa tor(): 資料中的類別因子 個別資料統計表:

範例 1: 單一類別資料: 調查抽菸與否回答資料為 Yes, No, No, Yes, Yes

> x= ("Yes","No","No","Yes"," Yes" )

> table(x)

x

No Yes

2 3

分組資料統計表:

範例 2: 建立分組次數分配表: ut(x,breaks= ())

ut(sals,breaks= (0,1,5,50)) 將sals.txt 資料分成區間

[0, 1]

,

(1, 5]

,

(5, 50]

三組

> ats = ut(sals,breaks= (0,1,5,m ax(s als) )) # spe ify the breaks

> ats # view the values

[1℄ (5,50℄ (0,1℄ (1,5℄ (1,5℄ (5,50℄ (5,50℄ (1,5℄ (0,1℄ (1,5℄ (0,1℄

Levels: (0,1℄ (1,5℄ (5,50℄

> table( ats) # organize

ats

(0,1℄ (1,5℄ (5,50℄

3 4 3

> levels( ats) = ("貧窮","富有","非常富有") # hange labels

> table( ats)

ats

貧窮 富有 非常富有

3 4 3

雙變量類別數據交叉表:

列聯表: (有時稱為雙向頻率表) 是一種表格,在統計中使用至少兩行和兩列來根據頻率計數顯示分類 數據。

更確切地說,

r × c

列聯表顯示了兩個變量的觀察次數(頻率),其觀察到的次數 (頻率)被排列成

r

行和

c

列。 列聯表的行和列的交集稱為單元。

範例 1: (兩類別變數資料) 假設進行了一項學生調查, 以評估吸煙的學生是否學習時間較少,

順伯的窩 第 頁 共 頁

資料如下:

> smokes = ("Y","N","N","Y","N","Y" ,"Y" ,"Y" ,"N" ,"Y" )

> amount = (1,2,2,3,3,1,2,1,3,2)

> table(smokes,amount) # 類別次數表格

amount

smokes 1 2 3

N 0 2 2

Y 3 2 1

> options(digits=3) # 取小數位3位

> prop.table(table(smokes,am ount )) # 比率表格

amount

smokes 1 2 3

N 0.0 0.2 0.2

Y 0.3 0.2 0.1

彙整分組表格數據製作:xtabs(): tabulardata

範例 2: 彙整分組表格數據製作:"tw_marriage.txt 是台灣在200815歲以上國民的婚姻 狀態統計資料。

> tw=read.table("d:/math work/data/tw_marriage.txt", sep= "",h eade r=T, skip =0)

> xtabs(widowed~area,data=tw )

area

中 北 外島 東 南

269693 465706 11557 38566 348013

> xtabs(widowed~area+gender, data =tw)

gender

> mytable=xtabs(widowed~area+ gend er,d ata= tw)

> table. omplete <- addmargins(mytable,FUN=su m,qu iet= TRUE )

順伯的窩 第 頁 共 頁

> table. omplete

gender

area F M sum

213264 56429 269693

379703 86003 465706

外島 9262 2295 11557

31147 7419 38566

274318 73695 348013

sum 907694 225841 1133535

# margin=1 olumn sum,margin=2 row sum

或可使用 margin.table指令計算行、 列的邊際總和:

> tw.table=xtabs(widowed~area +gen der, data =tw)

> margin.table(tw.table,margi n=1) # 橫列邊際總和

#同 rowSums(xtabs(widowed~area +gen der, data =tw) ) area

中 北 外島 東 南

269693 465706 11557 38566 348013

> margin.table(tw.table,margi n=2) # 直行邊際總和

gender

F M

907694 225841

> olMeans(xtabs(widowed~gend er+a rea, data =tw) )#各區域依照性別平均人數

中 北 外島 東 南

134846.5 232853.0 5778.5 19283.0 174006.5

> prop.table(xtabs(widowed~ge nder +are a,da ta=t w))

# prop.table() 計算各類分組的比率數據

area

gender 中 北 外島 東 南

gender 中 北 外島 東 南

在文檔中 R data (頁 32-43)

相關文件