SAS/INSIGHTと同等の信頼楕円を描く

[OS]ALL
[リリース] 6.07, 6.08, 6.09, 6.10
[キーワード] graph, gcontour, gplot, greplay, standard, std=, var, corr, varwith

[質問]

SAS/INSIGHTで描くのと同様の信頼楕円を、SAS/GRAPHで描けるでしょうか。

[回答]

残念ながら、標準機能にはこのような機能は有りません。
信頼楕円はGCONTOURプロシジャ、プロットはGPLOTプロシジャで作成し、これらをGREPLAYプロシジャで重ね合わせて表示します。
次のプログラム例を参考にしてください。

  /*データを標準化します*/
  proc standard data=sasuser.class
                out=standard mean=0 std=1;
    var height weight;
  run;
  /*heightとweightの相関を求めます*/
  proc corr data=standard noprint outp=corrout;
    var height;
    with weight;
  run;

  /*楕円を描く際のデータを作成します*/
  data contour;
    set corrout(where=(_type_='CORR')
                keep=_type_ height);
    r=height;
    pai=3.141593;
    c=(1/(2*pai*(1-r**2)**0.5));
    do height=-2 to 2 by 0.1;
      do weight=-2 to 2 by 0.1;
        d=c*exp(-(0.5/(1-r**2)*
          (height**2-2*r*height*weight+
          weight**2)));
        output;
      end;
    end;
  run;
  goptions nodisplay;
  axis1 order=(-2 to 2) origin=(18pct,18pct)
        length=70pct offset=(0,0);
  axis2 order=(-2 to 2) origin=(18pct,18pct)
        length=70pct offset=(0,0);
  axis3 order=(-2 to 2) origin=(18pct,18pct)
        length=70pct offset=(0,0)
        label=none value=none major=none
        minor=none style=0;
  axis4 order=(-2 to 2) origin=(18pct,18pct)
        length=70pct offset=(0,0)
        label=none value=none major=none
        minor=none style=0;

  /*プロットを描きます*/
  proc gplot data=standard ;
    plot weight*height
         / haxis=axis1 vaxis=axis2 frame;
  run;

  /*楕円を描きます*/
  proc gcontour data=contour;
    plot weight*height=d
         / haxis=axis3 vaxis=axis4
           levels=0.05 nolegend;
  run;

  /* 信頼楕円を描く際の%値は、GCONTORプロシジャのLEVELS=オプションで
     1-(\%値/100) の値を指定します。たとえば、95%信頼楕円の場合は
     "LEVELS=0.05" になります。                                     */
  goptions display;

  /*プロットと楕円を合成します*/
  proc greplay nofs igout=gseg
               tc=sashelp.templt
               template=whole;
    treplay 1: gcontour 1: gplot;
  run;
  quit;