SAS/GRAPHで標準偏差または標準誤差のヒゲを描く方法

[OS]ALL
[リリース]
[キーワード] SAS/GRAPH

[質問]

GCHARTプロシジャで棒グラフを描くとき、ERRORBAR=オプションで信頼区間によるヒゲを描くことはできますが、 標準偏差または標準誤差でヒゲを描くにはどうしたらよいでしょうか?

[回答]

GCHARTプロシジャのヒゲを描く機能は、信頼区間にしか対応していません。
以下に2つの方法をご紹介します。

方法1:GPLOTプロシジャの利用

GPLOT プロシジャでは標準偏差や標準誤差で区間の線を描くことができます。
したがって、GPLOTプロシジャを使って棒グラフを描いて、ヒゲ線と重ね描きすれば可能です。

/* Bar Chart with STDERR */

data test;
  do a=1 to 5;
     do i=1 to 10;
        y = 5*rannor(4989) + a + 10;
        output;
     end;
  end;
run;

proc summary data=test nway;
  class a;
  var y;
  output out=mtest mean=mean;
run;

data test2;
  set test mtest;
run;

proc gplot data=test2;
  plot y*a=1 mean*a=2 / overlay vaxis=axis1
                                haxis=axis2;
  symbol1 v=none c=yellow i=std1mt;
  symbol2 v=none c=green i=needle width=80;
  axis1 offset=(0);
  axis2 offset=(10) minor=none;
run;

方法2: ANNOTATE機能の利用

data test;
  do a=1 to 5;
     do i=1 to 10;
        y = 5*rannor(4989) + a + 10;
        output;
     end;
  end;
run;

proc summary data=test nway  std;
  class a;
  var y;
  output out=mtest mean=mean stderr=stderr;
run;

data ano;
  set mtest;
  %annomac;
  %system(2,2,2);
  %move(a,mean);
  s=mean+stderr;
  %draw(a,s,red,1,2);
run;

axis1 order=(1 to 23);

proc gchart data=mtest anno=ano;
  vbar a /discrete axis=axis1 sumvar=mean;
run;