SAS_GTL

SAS PlotterでPaired Raincloud plotを作図する

「SAS Plotter」はモダンなグラフを簡単に作成できるグラフマクロパッケージです。
このページではSAS Plotter(ver1.1)でPaied Raincloud plotを作成する方法を解説します。

2023/11/1 ver 1.1に更新

https://picolabs.jp/sasplotter_usage

Paired Raincloud plot とは

Paired Raincloud plotは反復測定データをRainCloud plotで可視化するときに使います。

通常のRaincloudと異なり、個別データの推移をSpgaghetti plotで表現します。またペアとなるデータの密度プロットは左右に反転させて表示します。


反復は2回まで対応している点に注意してください。それ以上の反復データがあると
正常に作図されません。

Input data

key変数変数タイプ
1カテゴリ変数数値または文字列
2反復識別変数数値または文字列
3群変数数値または文字列
被験者識別変数数値または文字列
応答変数数値

群変数は任意です。群変数とカテゴリ変数は文字列型でも動作しますが、その場合はテキストの昇順でグループの表示順を決定します。
順番を定義したい場合はフォーマットを適用した数値変数を使用することを推奨します。

文法

ods graphics / < graphics option > ; 
ods listing gpath=< output path > ; 

%RainCloudPaired( 
   data=, 
   x=, 
   y=, 
   repeat=, 
   subject=, 
   group=None, 
   yticks=, 
   ylabel=y, 
   cat_iv=1.6, 
   element_iv=0.4, 
   scale=area, 
   trim=True, 
   connect=False, 
   spaghetti=True, 
   gridsize=401, 
   bw_method=sjpi, 
   bw_adjust=1, 
   orient=v, 
   legend=false, 
   jitterwidth=0.05, 
   outlinewidth=1, 
   palette=sns);

パラメータ

data : (必須)

入力データ。keep, rename, whereオプションを併用できます。

x : (必須)

カテゴリ変数

y : (必須)

応答変数

repeat : (必須)

反復識別変数、反復は各被験者あたり2回までです。

subject : (必須)

被験者識別変数

group : (任意)

群変数。xオプションと同じ変数を指定すると、各グループはそれぞれ別の色で塗り分けられます。
指定しない場合はすべてのオブジェクトは同じ色になります。

デフォルト=None

ylabel : (任意)

応答変数軸のラベル。デフォルトは「y」。以下のように設定するとラベルは非表示となります。

ylabel=,

yticks : (必須)

応答変数軸の目盛りを指定できます。半角スペースで区切られた数値リストを指定してください。数値は昇順で指定する必要があります。

(例)yticks = 10 20 30 40,

cat_iv : (任意)

各カテゴリの間隔。デフォルトは1.6。

element_iv : (任意)

密度プロット、箱ひげ図、ストリッププロット(スパゲッティプロットのマーカー)の間隔。デフォルトは0.4。

scale: (任意)

密度プロットの高さの調整方法を指定します。
“area”にすると密度プロットの曲線下面積はすべて同じになるように調整されます。
“width”にすると各密度プロットの高さは同じになります。
デフォルトは”area”。

trim (任意)

Trueに設定すると観測データの範囲外の密度は非表示となります。
デフォルトはTrue。

connect: (任意)

Trueに設定すると箱ひげ図の平均値をグループごとに線でつなぎます。
デフォルトはFalse。

spaghetti: (任意)

Trueに設定するとスパゲッティプロットを表示します。各被験者のデータは実線で結ばれます。
デフォルトはTrue

gridsize : (任意)

KDEのグリッド数。デフォルトは401(proc kdeのデフォルト値)

bw_method : (任意)

KDEのバンド幅推定方法を指定します。デフォルトはsjpi(proc kdeのデフォルト値)。

利用可能な推定方法は以下の通りです。

  • sjpi (Sheather-Jones plug-in)
  • snr (simple normal reference)
  • snrq (simple normal reference that uses the interquartile
    range)
  • srot (Silverman\’s rule of thumb)
  • os (oversmoothed)

bw_adjust : (任意)

バンド幅のファクター。この値を大きくすると密度はより滑らかになります。デフォルトは1。

legend : (任意)

Trueを指定すると凡例を表示します。groupオプションを”None”を指定するとこの引数は無視されます。 デフォルトはFalse。

orient : (任意)

作図の方向を指定します。v=垂直方向 h=水平方向。
デフォルトはv。平均値の推移に注目している場合はv、分布形状の比較に注目している場合はhを選択するとよいと思います。

jitterwidth : (任意)

ストリッププロットの揺らぎ幅を指定します。0~1の範囲の数値を指定し、値が大きくなると揺らぎが大きくなります。
値が大きすぎると箱ひげ図と重なるかもしれません。デフォルトは0.05。

outlinewidth : (任意)

密度プロットと箱ひげ図の枠線の太さを数値で指定します。
デフォルトは1。

pallete : キーワード (オプション)

塗り、ライン、マーカーのカラーパレット、以下のパレットが利用可能です。デフォルトはSNS(seabornのデフォルトパレット)

  • SAS
  • SNS (Seaborn)
  • STATA
  • TABLEAU

作図例

シンプルなプロット

datasets (ds1)


変数名詳細
catカテゴリ, 1=cat1 2=cat2
repeat,反復ID 1=Pre 2=Post
valueアウトカム
usubjid被験者識別ID
ods graphics / reset=all imagefmt=svg imagename="rainpair_simple" width=20cm height=20cm; 


%RainCloudPaired( 
   data=ds1, 
   x=cat, 
   y=value, 
   repeat=repeat, 
   subject=usubjid, 
   group=cat, 
   yticks=0 25 50, 
   ylabel=outcome, 
   cat_iv=1.6, 
   element_iv=0.45, 
   jitterwidth=0.05
);
実行結果

orientパラメータをhにするとプロットは水平方向に変更されます。
(x軸=応答変数, y軸=カテゴリ)

水平方向のプロット

グループ毎に表示

datasets (ds2)

変数名詳細
catカテゴリ, 1=cat1 2=cat2
repeat反復ID 1=Pre 2=Post
typeグループ, 1=type A 2=type B
valueアウトカム
usubjid被験者識別ID
ods graphics / reset=all imagefmt=svg imagename="rainpaird-group" width=20cm height=15cm;

%RainCloudPaired( 
   data=ds2, 
   x=cat, 
   y=value, 
   repeat=repeat, 
   subject=usubjid, 
   group=type, 
   yticks=10 20 30 40 50 60 70 , 
   ylabel=outcome, 
   cat_iv=1.6, 
   element_iv=0.45, 
   orient=h, 
   legend=true);
群別に表示

Connect パラメータ

connectパラメートをTrueに設定すると、各グループの平均値はラインで結ばれます。
スパゲッティプロットとは独立しているため、スパゲッティプロットの上に作図することも可能です。

ods graphics / reset=all imagefmt=svg imagename="rainpaird_group_connect" width=20cm height=20cm; 
%RainCloudPaired(
   data=ds2, 
   x=cat, 
   y=value, 
   repeat=repeat, 
   subject=usubjid, 
   group=type, 
   yticks=10 20 30 40 50 60 70 , 
   ylabel=outcome, 
   cat_iv=1.6, 
   element_iv=0.45, 
   connect=True, 
   spaghetti=False, 
   orient=v, 
   legend=true);

output

connect=true

scaleパラメータ、およびtrimパラメータは通常の%RainCloudと同じ挙動です。
詳細はRaincloud plotの紹介記事を参照してください。

https://picolabs.jp/SASPlotter_Raincloud