R筆記S01-盒鬚圖


前言:
標題的S以後應該就代表特別篇,就是自己曾經被問的問題或是上網Google的後的一些資料彙整。

正文:
本篇是之前幫實驗室同學問我的問題,由於他用SPSS這款統計軟體,沒有辦法在SPSSBoxplot上面標記出盒鬚圖的重要的統計數值,例如:最小值、最大值、中位數或是上/下四分位數(編按:我沒在用SPSS,所以沒有想說怎麼用SPSS…),所以想說R應該可以辦到,因此有了這篇文。

編按:考量到有些讀者可能忘記統計學的內容,簡單說明什麼是盒鬚圖,盒鬚圖(又稱長鬚圖, box-and-whisker plot, 簡稱boxplot), 是一很有效的表示資料的方法。盒鬚圖可用來了解資料的偏斜性(skewness)及離群值(outliers)[1]
回到R語言本身,要怎麼在R語言畫圖,在我的大學同學兼研究所同學的skydome20大大的《R筆記–(4)繪圖-資料視覺化》[2]就已經談論過,大家可以先學習常用的統計圖形的繪製方法;而本文是要談論我們要怎麼在盒鬚圖加上統計數值(最小值、最大值、中位數或是上/下四分位數)
編按:樞紐值的值一般會視為第75及第25百分位數,但事實上樞紐值與第7525
百分位數的值有些差距。

因此筆者先使用了指令?boxplot查看看繪圖時候,R語言還為我們建立了什麼資料,而在Value可以看到stats這一項,就恰好就是我們所需,他的敘述是
stats 一個矩陣,他的每一欄都包含了一個群組或圖的下鬚、下樞紐、中位數、上樞紐、下鬚的極端值。如果所有輸入有一樣的類別屬性,則將有這個組件。
stats  a matrix, each column contains the extreme of the lower whisker, the lower hinge, the median, the upper hinge and the extreme of the upper whisker for one group/plot. If all the inputs have the same class attribute, so will this component.

以下是一個簡易測試script與輸出結果 (由於資料是均勻的分部,所以就沒有離群值的出現)
> #創造一個測試的資料集
> c<-1:100
> #c會製一個盒鬚圖,並存入test_boxplot
> test_boxplot<-boxplot(c, ylab = "value", col = "gray")
> #檢視boxplot的敘述統計的值
> test_boxplot$stats
      [,1]
[1,]   1.0
[2,]  25.5
[3,]  50.5
[4,]  75.5
[5,] 100.0
attr(,"class")
         
"integer"
> #透過text在目前的繪圖系統中的指定位置加入文字
> text(y = boxplot.stats(c)$stats, labels = boxplot.stats(c)$stats, x = 1.25)

盒鬚圖結果


那如果換成同學提供的加工資料,則可以繪製出下圖,而這樣的目的在於讓觀看者快速從圖中了解實際數據的大小,不會像是原本的圖形難以一眼就看出圖形要傳達的資訊。此外,也能夠清楚看出上下鬚切分出的離群值有哪些(大於上鬚或小於下鬚的就是所謂離群值),而離群值的部分可以視需求挪除,未來可能放入製造系統模擬的模形去進行運用。


加工時間的盒鬚圖結果


引用文獻:      
skydome20 (2016)R筆記–(4)繪圖-資料視覺化https://rpubs.com/skydome20/R-Note4-Plotting_System

留言