The SAS System for Windows V8
統計軟體SAS簡介


作者:wang3213 資料來源:統計生活館

  1. 視窗介紹:



    右方三個主要視窗的作用分別為:
    。 PGM:提供程式編輯及執行的地方
    。 LOG:顯示程式在處理過程中產生的所有訊息,並且指出錯誤的敘句,以及錯誤發生的可能情形
    。 OUTPUT:顯示程式執行的結果

    左方的輔助視窗的作用分別為:
    。 Results:可以以樹狀結構查詢所有未刪除的分析結果
    。 Explorer:可以查詢目前所有建立的資料庫與資料檔

    工具列部分:
      
    。 File:可執行存取檔案、列印、匯入 ( Import ) 、匯出 ( Export ) 資料檔等功能。
    。 Edit:編輯,跟Word的功能差不多。
    。 View:可在各視窗間切換。
    。 Tools:各種編輯器 ,與SAS系統設定。
    。 Run:執行等相關指令。
    。 Solutions:SAS內建的GUI程式,初學者不建議使用。
    。 Window、Help:…………你覺得它是怎樣,它就是怎樣。

    圖示部分:
    ( Submit ) :執行程式檔
    ( Clear all ) :清除程式檔內容
    ( Break ) :中斷正在執行的程式檔
    ( Help ) :SAS的精華所在

     注意:以上所談的工具列與圖示,主要是依照程式檔視窗會出現的加以介紹,
        實際上它會隨著不同的視窗而改變,請因地制宜的使用。





  2. 程式結構介紹:
    SAS主要是用來作資料處理與統計分析,因此其結構也是依此而分為兩部分:
    。 資料階段 ( DATA step )
    。 分析階段 ( PROC step ) PROC → procedure

    下面是一個例子:
    DATA A1 ;
      INPUT NAME$ HEIGHT GENDER$ ;
      CARDS ;
      JOHN 175 M
      TIM 170 M
      SAM 181 M
      MARY 162 W
      CANDY 167 W
       ;
      RUN ;

    PROC PRINT ;
      RUN ;

    DATA A2 ;
      INPUT NAME$ WEIGHT ;
      CARDS ;
      MARY 42
      JOHN 77
      SAM 85
      TIM 65
       ;
      RUN ;

    PROC PRINT ;
      RUN ;

    基本上一個資料階段需要用戶給予資料,以產生出一個資料集 ( DATA SET ) ,
    而分析階段則需給定一個資料集,來生成所需的統計分析結果或另外一個處理過的資料集。
    資料階段與分析階段原則上並沒有一定的順序,只是分析階段所需的資料集一定要在分析之前建立完成。





  3. 資料階段指令簡介:

    例一
    DATA A1 ;
    INPUT NAME$ HEIGHT GENDER$ ;
    CARDS ;
    JOHN 175 M
    ;
    RUN ;
    DATA 界定資料階段的開始 A1 資料集名稱 ( 可自訂 )
    NPUT 輸入變數 變數若為文字請加$
    CARDS 界定資料輸入的開始
    資料
    資料結束

    例二
    DATA A2 ;
    SET A1 ;
    IF GENDER='M' THEN SEX=1 ;
    ELSE SEX=0 ;
    IF HEIGHT>180 THEN DELETE ;
    DROP GENDER ;
    RUN ;

    SET 取得另一個已完成的資料集來使用
    IF......THEN...... ; ELSE...... ; 流程控制
    比較的項目若為文字 請用 'xx' 包起來
    DELETE 刪除觀察值
    DROP 移除變數

    IF……THEN…… ; ELSE…… ; 其運算與邏輯運算分別有:
    = or EQ
    ?=, <>, or NE
    > or GT
    < or LT
    >= or GE
    equal to
    not equal to
    greater than
    less than
    greater than or equal to

    <= or LE
    & or AND
    | or OR
    ~,^ , , or NOT
    less than or equal to
    logical and
    logical or
    logical not

    迴圈 ( DO ) :
    DO, Iterative DO UNTIL DO WHILE
    DO I=1 TO 10 ;
    …………… ;
    OUTPUT ;
    END ;
    N=0 ;
    DO UNTIL(N>=5) ;
    PUT N= ;
    N+1 ;
    END ;
    N=0 ;
    DO WHILE(N<5) ;
    PUT N= ;
    N+1 ;
    END ;

    。迴圈結束一定要加上END指令。
    。迴圈中常需加入指令OUTPUT,以輸出迴圈內運算的結果。
    。DO指令的第四功能是與IF指令結合,當THEN後要執行的指令不只一句時使用,
     例如:
     IF GENDER='M' THEN DO ;
      SEX=1 ;
       PAY=10 ;
       END ;
     ELSE DO ;
       SEX=0 ;
      PAY=20 ;
     END ;





  4. 分析階段指令簡介:
    SAS有許多不同的PROC,每個所使用的指令皆不盡相同,
    現在我們以REG ( 迴歸 ) 與MEAN ( 平均數檢定 ) 為例,
    介紹一些通用的指令,其餘請參考SAS相關書籍與HELP:

    例一:
    PROC REG DATA=A1 OUTEST=MYEST ALPHA=0.05 ;
      MODEL Y=X1 X2/MSE ;
      BY X3 ;
      OUTPUT OUT=MYOUTPUT P=YHAT R=YRESID ;
      RUN ;

    [說明]
    PROC XXX:執行XXX 分析;
    DATA=OOO: 使用OOO資料集來進行分析 ;
    OUTEST=XXXX:將分析的參數估計值輸出至XXXX資料集 ;
    ALPHA=0.05:控制顯著水準=0.05 ( 預設即為0.05 ) ;

    MODEL :設定欲建立的模型 ( 不必用"+" ) ,一般參數化模型會使用此指令
    /xxxx :為MODEL後可加入的指令,如MSE為計算該模型的MSE

    BY : 依照指定的變數分群進行分析 ( 通常為類別變數 )

    OUTPUT:執行輸出資料檔 ( 此資料檔是有關觀察值的一些估計值 )
    OUT=xxx:輸出資料檔檔名
    P:預測值 ( predicted values )
    R:殘差值 ( residuals )


    例二
    PROC MEANS DATA=A1 NOPRINT CV RANGE ;
      VAR HEIGHT ;
      OUTPUT OUT=MYOUTPUT ;
      RUN ;

    [說明]
    VAR:PROC MEANS分析的變數由此指令決定。
    NOPRINT:有時我們只需要分析結果的資料檔,並不想知道分析的內容,可使用此指令跳過報表。

    將來可能較常用到的統計分析PROC有:MEANS、UNIVARIATE、FREQ、REG、ANOVA、GLM、GENMOD等。
    而與資料處理有關的PROC有SORT、RANK、INPORT、EXPORT等。與繪圖有關的則有PLOT、GPLOT等。





  5. 綜合範例
    ( 一 )
    DATA A1 ;
      INPUT NAME$ HEIGHT GENDER$ @@ ;
      CARDS ;
      JOHN 175 M TIM 170 M SAM 181 M MARY 162 W
      CANDY 167 W JANE 171 W ALICE 168 W
       ;
    PROC SORT ;
      BY NAME ;
    DATA A2 ;
      INPUT NAME$ WEIGHT @@ ;
      CARDS ;
      MARY 42 JOHN 77 SAM 85 JANE 40 ALICE 55 TIM 65
       ;
    PROC SORT ; BY NAME ;
      DATA A3 ;
      MERGE A1 A2 ;
      BY NAME ;
    PROC PRINT ;
    PROC REG DATA=A3 ;
      MODEL HEIGHT=WEIGHT ;
      RUN ;
    PROC SORT ; BY GENDER ;
    PROC REG DATA=A3 ;
      MODEL HEIGHT=WEIGHT ;
      BY GENDER ;
      RUN ;
      QUIT ;

    ( 二 )
    data B1 ;
      do i=1 to 1000 ;
        do n=1 to 10 ;
        x=RANPOI ( 0,0.5 ) ;
        output ;
        end ;
      end ;

    proc freq ;
      table x/out=freq ;

    data freq ; set freq ;
      true=100*exp ( -0.5 ) * ( 0.5**x ) /fact ( x ) ;

      symbol1 color=red interpol=join value=dot height=1 ;
      symbol2 font=marker value=C color=blue interpol=join height=1 ;
    proc gplot ;
      plot ( percent true ) *x/overlay ;

    proc means data=B1 NOPRINT ;
      var x ;
      by i ;
      output out=RESULT ;

    data RESULT ; set RESULT ;
      if _stat_='MEAN' then index=1 ;
      else index=0 ;
      if index=0 then delete ;
      stardx= ( 10**0.5 ) * ( x-0.5 ) / ( 0.5**0.5 ) ;

    proc univariate ;
      var stardx ;
      histogram /normal ( mu=0 sigma=1 ) midpoints=-3 to 3 by .5 ;
      run ;
      quit ;





  6. 附錄
    有時我們會得到非SAS格式的資料檔案,此時如果因為要將資料重新輸入一次,是一件很笨的事。
    SAS提供了我們幾種方式來讀取外部資料:
    1. IMPORT ( 可匯入各種不同格式,為一個分析階段 )
      PROC IMPORT OUT= WORK.DATA
        DATAFILE= "C:\WINDOWS\Desktop\DATA.xls"
        DBMS=EXCEL2000 REPLACE ;
        RANGE="Sheet1$" ;
        GETNAMES=YES ;
        RUN ;

    2. INFILE ( 僅能讀入文字檔,在資料階段內使用 )
      DATA DATA ;
        INFILE 'C:\WINDOWS\Desktop\DATA1.TXT' ;
        INPUT INDEX$ NUMBER TEST$ TIME ;
        IF _N_=1 THEN DELETE ;
        RUN ;


      類似的當我們想把SAS的資料檔移至其他軟體使用時,可使用EXPORT:

      PROC EXPORT DATA= WORK.A1
        OUTFILE= "C:\WINDOWS\Desktop\A1.xls"
        DBMS=EXCEL2000 REPLACE ;
        RUN ;

      IMPORT、EXPORT都可在工具列中的FILE裡找到。

      如此一來,我們便能很快的在各種統計軟體 ( 如S-PLUS、SPSS ) 、試算表 ( 如EXCEL ) 、文書軟體 ( 如WORD ) 中運用SAS的檔案了。



作者:wang3213 資料來源:統計生活館