ちょっとしたテクニックと演習

統計処理 01 クラス : 第19回目(11/30/00)

4月から SAS の使い方を統計手法を中心に紹介してきたが、 目前のテーマに対して活用できるようになってきたであろうか? それぞれの手法を理解すると共にこれらを組み合わせることによって より多角的な知見が得られるようになると思う。
入力したデータをそのまま使うのであれば統計手法を使うだけで済むと思うが、 変量の四則演算の結果を調査対象にしたり、 データの一部を抽出して利用しようとすると、 何らかの指示を出さなければならない。 手っ取り早い方法としては、MS-Excel にデータを転送して、 目的の処理を実施後、再転送することによって実現することもできるが、 SAS 内でも同様のことを行うことが可能である。
今回は SAS を使うにあたって知っていると便利かもしれない データの変容(加工)テクニックを中心に説明する。
  1. データの生成 : 乱数で(正規乱数) : 種(seed)の指定 [参考] : 乱数
    normal : 正親分布に従う疑似乱数を生成します。
    ranbin : 二項分布に従う乱数を生成します。
    rancau : コーシー乱数を生成します。
    ranexp : 指数乱数を生成します。
    rangam : ガンマ分布に従う乱数を生成します。
    rannor : 正規乱数を生威します。
    ranpoi : ポアソン分布に従う乱数を生成します。
    rantbl : 指定した確率重み関数から、乱数を生成します。
    rantri : 三角分布に従う乱数を生成します。
    ranuni : (0,1)の間の一様乱数を生成します。
    uniform : (0,1)の間の一様疑似乱数を生成します。

  2. 91番から 110番のデータの表示

  3. 91番目から 110番目のデータについて平均を計算する

  4. データのアスキー保存 : フォーマット形式の指定に注意

  5. 上記 4項目をまとめた例題
    1. プログラム : les1901.sas

       /* Lesson 19-1 */
       /*    File Name = les1901.sas   11/30/00   */
      
      options linesize=72; /* pagesize=20; */
      
      data rei01;
       do i=1 to 200;
         x=rannor(12345);
         output;
       end;
      run;
      
      proc print data=rei01(obs=10);
      run;
      
      proc means data=rei01;
      run;
      
      proc print data=rei01(firstobs=91 obs=110);
      run;
      
      proc means data=rei01(firstobs=91 obs=110);
      run;
      
      data _null_;
        set rei01;
        file "unsorted.dat";
        put i 5. x 15.8;
      run;
      
      proc sort data=rei01;
        by x;
      run;
      
      proc print data=rei01(obs=10);
      run;
      
      proc print data=rei01(firstobs=91 obs=110);
      run;
      
      proc means data=rei01(firstobs=91 obs=110);
      run;
      
      data _null_;
        set rei01;
        file "sorted.dat";
        put i 5. x 15.8;
      run;
      
    2. 出力結果 : les1901.lst unsorted.dat sorted.dat

  6. 昇順と降順のヒストグラム

  7. 昇順と降順、頻度順の度数分布表

  8. 上記 2項目をまとめた例題
    1. プログラム : les1902.sas

       /* Lesson 19-2 */
       /*    File Name = les1902.sas   11/30/00   */
      
      options linesize=72; /* pagesize=20; */
      
      data rei02;
        do i=1 to 100;
          x=rannor(23456);
          x10=int(x*10);
          output;
        end;
      run;
      
      title "Default";
      proc chart data=rei02;
        hbar x;
      run;
      
      title "Ascending order";
      proc chart data=rei02;
        hbar x / midpoints=-3 to 3 by .5;
      run;
      
      title "Descending order";
      proc chart data=rei02;
        hbar x / midpoints=3 to -3 by -.5;
      run;
      
      title "Default";
      proc freq data=rei02;
        tables x10;
      run;
      
      title "Freqency order";
      proc freq data=rei02 order=freq;
        tables x10;
      run;
      
      proc sort data=rei02;
        by decending x10;
      run;
      
      title "Descending order";
      proc freq data=rei02 order=data;
        tables x10;
      run;
      
    2. 出力結果 : les1902.lst

    [参考] : 数値関数
    arcos : 逆余弦(アークコサイン)を算出します。
    arsin : 逆正弦(アークサイン)を算出します。
    atan : 逆正接(アークタンジェント)を算出します。
    cos : 三角関数の余弦(コサイン)を求めます。
    cosh : 双曲線の余弦(コサイン)を求めます。
    sin : 正弦(サイン)を算出します。
    sinh : 双曲線正弦を算出します。
    tan : 正接(タンジェント)を算出します。
    tanh : 双曲線正接の値を算出します。

    ceil : 引数より大きいかまたは等しい整数のう最小の値を戻します。
    floor : 引数値より小さいかまたは等しい整数値のうち最大のものを戻します。
    fuzz : 引数と最も近い整数との差が10^-12以内のときに、その整数を戻します。
    int : 小数部を切り捨てて、整数値を戻します。
    round : 四捨五入します。
    tranc : 指定された長さに切り捨てた数値を戻します。

  9. 行末がそろってないデータの読み込み : 一行文字数の指定

  10. 固定長データの読み込み : カラム位置の指定

  11. 新しい変数の割り当て

  12. if 文

  13. 残り時間は演習
  14. 次回は、... : 12月7日 14:45
[DIR]講義のホームページへ戻ります