医療統計学を学ぶ大学生のブログ

医療統計学、因果推論を専攻しています。R, SASユーザーです。

SASによる解析:SGPLOTプロシジャでのグラフの作成

f:id:NorihiroSuzuki:20210818152156p:plain

(Image by 200degrees from Pixabay)

SASのSGプロシジャは様々なグラフを作成できる非常に有用なプロシジャです。今回はその中でもよく使われるSGPLOTプロシジャについて、具体例とともにまとめていきます。

 

SGプロシジャについて

冒頭でも述べましたが、SGプロシジャは様々なグラフを作成する際に使用するプロシジャです。このプロシジャには主なプロシジャとして次のようなものがあります。

  • SGPLOT
  • SGPANEL
  • SGSCATTER
  • SGRENDER
  • SGDESIGN

散布図の作成に特化したプロシジャであるSGSCATTERについては、以前にまとめたので今回は取り扱わず、今回はSGPLOTプロシジャに絞ってまとめます。なおSGSCATTERについては知りたい場合は以下のリンクよりどうぞ。

norihirosuzuki.hatenablog.com


SGPLOTプロシジャについて

SGPLOTプロシジャは、次のようなステートメントによってさまざまなグラフの描写が可能です。

f:id:NorihiroSuzuki:20210818142752p:plain

 

SGPLOTプロシジャで指定可能な一部のグラフと、それぞれの場合のSASステートメントの例はこんな感じ。

f:id:NorihiroSuzuki:20210818161819p:plain


 

これ以外のグラフに関して知りたい場合はSASのHelpCenterに記載があるのでそちらから。

documentation.sas.com

 

具体例

ここではSGPLOTプロシジャを使った4つの例を、それぞれのグラフのステートメント、オプションとともに紹介します。

散布図と楕円グラフ

 楕円グラフ、散布図を作成する際に最低限必要となるのは、ともにX, Y軸に指定する数値変数です。下図を作成するにあたっては、SASHELPにある"CLASS"というデータを使用し、Y軸を体重、横軸を身長としています。

 

f:id:NorihiroSuzuki:20210818152831p:plain

ステートメントとオプション

ELLIPSE X =数値変数 Y =数値変数 / option(s) > ;

SCATTER X=variable Y=variable </options>;

 

それぞれのオプションに関してはこちらを参考に


SASコード

/* 散布図と楕円グラフ */
proc sgplot data=sashelp.class;
scatter x=height y=weight;
ellipse x=height y=weight;
run;

 

箱ひげ図

 箱ひげ図の作成で最低限指定しなければならないのは、箱ひげ図として表す対象の数値変数です。特にcategoryオプションを指定しなければ作成される箱ひげ図は一つだけですが、カテゴリー指定することによって、そのカテゴリーごとの箱ひげ図が作成されます。

 下図は、SASHELPにある”CARS”という2004年の自動車に関するデータの重量に関して生産地域ごとに箱ひげ図にしたものです。

f:id:NorihiroSuzuki:20210818153128p:plain

ステートメントとオプション

HBOX numeric-analysis-variable </options>;


SASコード

/* 複数の箱ひげ図 */
proc sgplot data=sashelp.cars;
hbox weight / category=origin;
run;

 

 

ヒストグラム

 ここでは2つの密度プロットと組み合わせたヒストグラムを作成しています。使用したデータは最初の例と同様です。横軸を身長とし、それぞれの階級に落ちる人がどれくらいの割合かを示しています。2つの密度プロットはそれぞれ正規分布と、kernelを意味しています。

f:id:NorihiroSuzuki:20210818153203p:plain

ステートメントとオプション

HISTOGRAM response-variable </options>;


SASコード

/* ヒストグラム */
proc sgplot data=sashelp.class;
histogram height;
density height;
density height / type=kernel;
run;

 

棒グラフ

 最後の例は棒グラフです。この例では一つのSGPLOTプロシジャのステートメントの中で2つの棒グラフを指定しているため、グラフが2つ作成されています。使用データはSASHELP内にある、人工的に作成された家具に関する収益の予測値と実測値です。

f:id:NorihiroSuzuki:20210818153457p:plain

ステートメントとオプション

HBAR category-variable </options>;

 
SASコード

 /* 複数の棒グラフ */
proc sgplot data=sashelp.prdsale;
yaxis label="Sales" min=200000;
vbar country / response=predict;
vbar country / response=actual
barwidth=0.5
transparency=0.2;
run;