範 例 一 : 矩陣轉置、加、減、乘 與函數運算(PROC IML)
 
 
程式檔名稱 : linEAR1.htm

 
程式檔指令

option ps=60 ps=70;                    
PROC IML;
                                        啟動 SAS IML 程序進行矩陣運算     
                                        試驗第一週的集蛋資料,5隻雞       
                                        試驗處理後連收 7天的蛋。7列5行    
egg1 = { 1  0  1  0  1,                
         0  1  1  1  0,
         1  0  1  0  1,
         1  0  1  1  0,
         0  1  1  0  0,
         1  0  1  0  1,
         1  0  0  1  1};
                                        試驗第二週的集蛋資料。7列5行
egg2 = { 1  0  1  0  1,
         1  1  1  1  0,
         0  1  1  1  1,
         1  0  1  1  1,
         0  1  1  0  0,
         1  1  1  0  1,
         1  1  1  1  0};
                                        試驗進行前一週的集蛋資料。7列5行
egg0 = { 1  1  1  0  1,          
         1  0  1  0  0,
         0  1  1  1  0,
         1  1  0  0  1,
         0  0  1  0  0,
         1  1  1  0  1,
         1  1  1  1  0};



trsegg1  = egg1`;                       矩陣轉置,以雞為列,天為行
                                        來表示相同的資料。
egg12    = egg1 + egg2;                 二試驗期的合併記錄
print      trsegg1, egg12;

rowi     = { 1 1 1 1 1 1 1 };           用來加全部總產蛋數的列 

stage0   = rowi*egg0;                   試驗前一週  各隻雞的總產蛋數
stage1   = rowi*egg1;                   試驗第一週各隻雞的總產蛋數
stage2   = rowi*egg2;                   試驗第二週各隻雞的總產蛋數
eggn     = stage1 + stage2;             全程各隻雞的總產蛋數

rowij    = { 1 0 1 0 1 0 1,             
             0 1 0 1 0 1 0};            
                                        用來加總奇數天(第一列)產的蛋數的列 
                                        或偶數天(第二列)產的蛋數的列

eggij    = rowij*egg12;                 各隻雞奇數天與偶數天的產蛋數(二試驗期)

print      eggij, stage0, stage1,
                  stage2, eggn;

diffij   = egg0 - egg1;                 試驗前一週與試驗後一週的差異
diff     = rowi * diffij* {1 1 1 1 1}`; 差異合計
print      diffij, diff;
run;



輸出 1-1  行列對調的轉置矩陣

      TRSEGG1
            1         0         1         1         0         1         1
            0         1         0         0         1         0         0
            1         1         1         1         1         1         0
            0         1         0         1         0         0         1
            1         0         1         0         0         1         1


輸出 1-2  二試驗期的合併記錄,相同一天的蛋加在一起

          EGG12
            2         0         2         0         2
            1         2         2         2         0
            1         1         2         1         2
            2         0         2         2         1
            0         2         2         0         0
            2         1         2         0         2
            2         1         1         2         1


輸出 1-3  各隻雞奇數天的蛋(第一列)與偶數天的蛋

        EGGIJ
            5         4         7         3         5
            5         3         6         4         3


輸出 1-3  各隻雞不同週的產蛋數(試驗前一週、試驗第一、二週、全期)

       STAGE0
            5         5         6         2         3


        STAGE1
             5         2         6         3         4


        STAGE2
             5         5         7         4         4


        EGGN
            10         7        13         7         8



輸出 1-4  試驗前一週與試驗後一週的差異與差異合計

        DIFFIJ
             0         1         0         0         0
             1        -1         0        -1         0
            -1         1         0         1        -1
             0         1        -1        -1         1
             0        -1         0         0         0
             0         1         0         0         0
             0         1         1         0        -1

        DIFF
             1