連続データの記述統計量を計算しよう(その2)

Last-modified: 2008-06-08 (日) 01:39:02

その1では、MEANSプロシジャから計算可能な統計量を紹介しました。
なお統計量とは、標本(サンプル)から算出されるその集団の
特性値のことです。

何らかのグループごとに統計量を計算する機会がよくあります。
たとえば、性別ごとに血圧の平均を調べる、生産ラインごとに
生産物のばらつきを確かめるなど、といった場合です。

MEANSプロシジャでグループごとに統計量を計算するためには、
大きく2つの方法があります。

1つは、CLASSステートメントの利用です。グループを表す変数で
データセットがソートされていてもいなくても利用できます。

proc means data=sashelp.prdsale n nmiss min mean max;
  class country;
  var actual;
run;

/*
                                                 MEANS プロシジャ

                                          分析変数 : ACTUAL 売り上げ実績

                         オブザべーション
   国                                  数       N    欠損値の数          最小値            平均          最大値
   ------------------------------------------------------------------------------------------------------------
   カナダ                             480     480             0       3.0000000     514.5625000         1000.00

   ドイツ                             480     480             0       3.0000000     512.4958333         1000.00

   米国                               480     480             0       4.0000000     494.4770833     984.0000000
   ------------------------------------------------------------------------------------------------------------
*/

もう1つの方法は、SORTプロシジャを利用してグループ変数で
ソートしておき、続いてMEANSプロシジャでBYステートメントを
使用することです。

proc sort data=sashelp.prdsale out=sortdata;
  by country;
run;
proc means data=sortdata n nmiss min mean max;
  by country;
  var actual;
run;

/*
--------------------------------------------------- 国=カナダ ----------------------------------------------------

                                                 MEANS プロシジャ

                                          分析変数 : ACTUAL 売り上げ実績

                           N    欠損値の数          最小値            平均          最大値
                        ------------------------------------------------------------------
                         480             0       3.0000000     514.5625000         1000.00
                        ------------------------------------------------------------------


--------------------------------------------------- 国=ドイツ ----------------------------------------------------

                                          分析変数 : ACTUAL 売り上げ実績

                           N    欠損値の数          最小値            平均          最大値
                        ------------------------------------------------------------------
                         480             0       3.0000000     512.4958333         1000.00
                        ------------------------------------------------------------------


---------------------------------------------------- 国=米国 -----------------------------------------------------

                                          分析変数 : ACTUAL 売り上げ実績

                           N    欠損値の数          最小値            平均          最大値
                        ------------------------------------------------------------------
                         480             0       4.0000000     494.4770833     984.0000000
                        ------------------------------------------------------------------
*/

SASの昔のバージョンでは、後者の方法が早いと言われて
いました。もしデータセットが事前にソートされていれば
今でもその通りですが、ソートされていなければ
前者の方が効率的です。