September 15,2006

用MS-EXCEL畫盒狀圖(boxplot)

平時描述資料分布時,通常利用算術平均數與標準差等統計量。然而,當想更視覺化地呈現變項實際分布,包括比較不同子群(subgroup)之間的該變項分佈時,盒狀圖是個好選項。只是當手上沒有統計軟體可以繪製盒狀圖時,MS-EXCEL可以處理這件事嗎?


 

以上是一個用EXCEL所繪製的box plot。跟我所熟悉的SAS系統所繪製的圖比起來,漂亮得太多了!雖然用EXCEL來畫,步驟比較多點,但是當你投稿時用賞心悅目的圖,自然可以讓reviewer比較舒服一點。而且讓未來的讀者有比較舒服的閱讀經驗。不過,通常會關心這個主題的只有兩種人,一種是手上只有EXCEL這個軟體可用,另外一種人是向我只有SAS這個軟體可用。一般來說,手上有SPSSS-Plus的人,軟體本身就可以繪製漂亮的圖。

廢話不多說,直接進入主題吧。

在用EXCEL繪製Box plot之前,需要幾個統計量:四分位點(quartiles)、以及所有比3rd quartile1.5interquartile range的觀察値、以及比1st quartile1.5interquartile range以下的觀察値,還有最大值(maximum)與最小值(minimum)。這些統計量如何得出的?SAS中,可以用PROC UNIVAIRATE或是PROC MEANS;在EXCEL中,也有函數可以為我們作這些事。

 

把這些統計值整理到EXCEL工作表上。BCD三欄,分別是某變項在三個groups中的三個quartiles2nd quartile就是中位數(median),而1st and 3rd quartiles之差,就是interquartile range (I.R.)

這三個數值就可以繪製出box plot中的那個「box」。但一般box plot中,還會再標誌出高低界線的位置。一般會使用兩種高低界線,端看個人當時狀況。基本的方法是直接使用數據中最大值(maximum)與最小值(minimum)作為繪製box plot所需的高低界線。另外一種則是為了診斷資料中是否有離群值(outlier),因此將高低界線分別設定在3rd quartile + 1.5 I.R.以及1st quartile – 1.5 I.R;若資料中沒有在這兩個高低界線範圍之外的觀察値,才直接使用最大值與最小值作為高低界線。

下面利用第二種高低界線,因此我須先計算出高低界線的値;由於我的資料中沒有低於1st quartile – 1.5 I.R的觀察値,因此就以最小值作為低界線,而在三個組當中高界線都是3rd quartile + 1.5 I.R。結果如下圖中的GH欄。

 

接下來就要繪圖了。繪圖之前有一件重要提醒:三個四分位點的排列順序很重要,第一與第三的四分位點兩欄一定要放在最兩側,如下圖。因為等一下使用到的繪圖功能中,有一選項是與數列順序有關的;若不注意,則會畫出錯誤的圖。

首先,先把你要畫的box plot圈出來,然後選「插入>圖表」,使用折線圖。不要懷疑,就是折線圖。然後click下一步。

接下來,記得在「數列資料取自」的選項中,挑選「欄」。然後,就不需下一步,直接click「完成」。

這時所會看到的是如下的圖:

接下來,在任何一條折線上double click,就會出現「資料數列格式」視窗。在這個視窗中,直接挑「選項」這個label。勾選「高低點連線」與「漲跌線」,這就是現前提到,與數列順序有關的選項。這時,在預覽窗格中,你就會發現box與中軸線出現了。

最後就是考驗EXCEL基本功了。只要在每條數線上做些修正,那麼,圖就會越來越趨近box plot了。

小撇步:如果你覺得box太胖,想讓它瘦一點,則請回到「資料數列格式」視窗中的「選項」label,改變當中的「類別間距」,就可以調整box plot的胖瘦寬窄了。


Posted by trust1021 at 樂多Roodo! │12:57 │回應(4)引用(0)工作經過的
樂多分類:學術/學習 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/2149958
回應文章

離群值(outlier),怎麼繪製呢?謝謝
Posted by QQ at April 17,2009 20:06

這你就可加入scatter plot "散布圖"
Posted by TRUST at April 18,2009 04:24

請問是直接在畫好的boxplot上改嗎?但直接改發現原來的高低線和漲跌線就會不見了!
Posted by QQ at April 19,2009 15:11
私密回應
Posted at November 11,2009 00:10