[SAS] 如何使用SAS做出描述性統計 SAS Description

by wenwu
0 comment

[SAS] 如何使用SAS做出描述性統計

描述統計量\直方圖 histogram\盒狀圖 box plot\散佈圖 scatter plot

統計可以分成兩個部分,敘述統計推論統計。若是將現有的數據做預測亦或是推論都算是推論統計,反之若是使用現有的數據以此呈現,那就是敘述統計。而我們在一開始認識一筆資料或是一組數據最直接的方式,就是對於數據的描述。今天要使用SAS 來介紹以下幾種描述資料的方式


描述資料概論

最基本描述樣本的方式,就是知道(1)樣本的個數 (2)樣本的描述統計量(平均數 、中位數 )等相關的資訊

這次使用的資料如下:

data data1;
input subject gender $ Height Weight @@;
Datalines;
1 M 190 80 2 F 178 80 3 F 181 71 4 M 175 67
5 M 183 70 6 M 192 100 7 F 177 66 8 M . 90
;

(資料來源,SAS在統計學的應用,p37)

如果要知道基本的描述統計量的話,可以使用 proc means ,輸入完資料後再將需要的資訊 ,n代表個數, mean代表平均數, std代表簡單表準差, stderr代表標準誤差, min代表最小值, max代表最大值, sum 代表總和, var代表變異數 , Maxdec = 2 代表取到小數點後第二位。

proc means data=data1 Maxdec=2 n mean std stderr min max sum var;
 title descriptives;
run;
code of proc means

結果如下圖,SAS會依照每一個變項個別算出輸入的描述統計量,比較特別的是 subject 是我給的編號,SAS也一起算進去了。而最後一位的身高是遺失資料,所以個數等於七,SAS會自動刪掉遺失值來計算。

如果想要將資料分組,在個別計算統計量,只要加上class gender ,SAS會自動分組並計算指定的統計量

如果想要知道其他的敘述統計量,可以使用 「執行單變量統計」(Proc Univeriate) ,給完資料後給定 “normal” 和 “plot” 就可以得到「常態性」 、「莖葉圖」 以及「箱型圖」,記得要設定 var 值喔(就是你有興趣的變數)

proc univariate data=data1 normal plot ;
title simple descriptive statistics ;
var height weight;
run;

這邊設定的變數為 height & weight ,SAS會依照這兩個變數提供所有相關的數值,這邊就不一一列出了,大家記得跑跑看。在output的最後會出現「常態性」 、「莖葉圖」 以及「箱型圖」。


直方圖 histogram

如果不想要上面生成的直方圖,我們也可以用proc univariate 來畫。給定histogram之後設定參數height,之後可以再設定間距是多少,這邊的設定是從160到200 間距為五。後面加上Normal 則是加上常態分佈的曲線(幫助我們看這組資料是否靠近常態分佈,或是比較有什麼樣的差異)

proc univariate data=data1 ;
 histogram height/ midpoint = 160 to 200 by 5 Normal;
run;
code of histogram

最終的直方圖就會長這樣啦!


盒狀圖 box plot

盒狀圖是本篇中我最喜歡的方式,因為在一個小小的盒狀圖可以得知許多的資訊。讓我們看看維基百科的解釋,下面的盒狀圖可以告訴我們甚麼數據呢?

                            +-----+-+       
  *           o     |-------|   + | |---|
                            +-----+-+    

+---+---+---+---+---+---+---+---+---+---+   分數
0   1   2   3   4   5   6   7   8   9  10

這組數據顯示出:

  • 最小值(minimum)=5
  • 下四分位數(Q1)=7
  • 中位數(Medium — 也就是Q2)=8.5
  • 上四分位數(Q3)=9
  • 最大值(maximum )=10
  • 平均值(Mean)=8
  • 四分位間距(interquartile range)={\displaystyle (Q3-Q1)}=2 (即ΔQ)

沒錯,盒狀圖可以知道最大值最小值,Q1~Q3,平均值和中位數,也可以直接看出有沒有離群值

上面在跑Proc Univeriate 時,就會出現小小的盒狀圖,若是想要依照性別分組畫出盒狀圖時,可以使用下列的語法 ( 記得要先排序,才能畫出來喔) 
先使用proc sort 依照gender 排序, 在使用boxplot *後面是分組的變項

/*box plot 分類 BY gender*/
Proc sort data=data1; by gender;
Proc boxplot data=data1 ;
Plot (height weight)*gender; run;

跑出來的圖如下,分別依照性別做分類的盒狀圖。

在proc boxplot 的語法中, plot *之後一定要加上分組的類別,如果不想分組該如何解決呢?

只要將data 增加一筆變項 group ,每一位病人都是1 這樣就好了 ( 一樣需要先排序)

data data2 ; set data1; group=1; run;
Proc sort data=data2; by group;
Proc boxplot data=data2 ;
Plot height*group;
run;

這樣跑出來的盒狀圖就是一個了!


散佈圖 scatter plot

散佈圖也是一種很好呈現數據的方法,但是資料僅限於兩個變項,主要是看兩個變項的關係(是否有相關,正相關或是副相關),如果有興趣可以看一下之前寫的 [R]散佈圖與相關係數 ,這篇使用R軟體介紹了散佈圖與相關係數的關係,而且有很詳細的公式計算。

使用proc plot 就可以畫出散佈圖,symbol value 為非必要,這邊的設定是紅色三角形。

proc plot data=data1;
plot weight*height;
symbol value= triangle color=red;
run;

畫出來的散佈圖如下,可以發現兩者的相關性很高。

這邊直接附上correlation 的算法和檢定

proc corr data=data1;
with height;
var weight; run;

下圖為output,相關係數為0.78881,p-value = 0.0350,表示兩者有顯著相關。

使用上面的方法,就可以呈現各種數據的型態了喔! 

Related Articles

發表迴響