仮説検定で算出されたP値はグラフに表示する一般的な情報の一つです。
通常P値があらかじめ決めておいた閾値を下回る場合、グラフ上にアスタリスク(*)を表示することが多いです。旧バージョンのSASではこのような作図を行う場合annotation datasetを使わなければなりませんでしたが、現在はplotステートメントで作図することが可能です。ただしデータの前処理は工夫する必要があります。
多重比較(コントロール群に対する比較)の結果を表示する
作図内容
今回はproc mixedで3群の最小二乗平均(LS means)を求め、プラセボ群の最小二乗平均の差を多重比較で検定を実施します。
多重比較の調整方法はボンフェローニかダネットを想定しています。
最小二乗平均とその信頼区間はエラーバー付き棒グラフで表現します。
p値が0.05を下回るとき、該当する棒グラフの上部に「*」を表示します。
p値が0.01を下回るとき、該当する棒グラフに上部に「**」を表示します。
前処理
proc mixedが出力したデータセットdiffsとlsmeansをマージし、調整済みp値(adjp)の値を基にマーカーの表示位置を導出します。
表示位置はエラーバー上端+1としました。このあたりはデータに応じて調整します。
変数markはp値のマーカーとして表示する文字列を格納します。デフォルトのマーカーは1文字以上の文字列を指定することができないため、変数に格納された文字列をマーカーとして使用します。
/*grp: 群変数
estimate: 最小二乗平均の推定値
lower: 信頼下限
upper: 信頼上限
adjp: 多重比較で調整されたp値
*/
data graph;
merge lsmeans diffs(keep=grp adjp);
by grp;
/*p値の表示位置*/
if . < adjp < 0.05 then pval=upper+1;
/*マーカー文字列*/
if . < adjp < 0.01 then mark="**";
else if . < adjp < 0.05 then mark="*";
run;
テンプレート
P値のマーカーはscatterplotステートメントのmarkercharacterオプションで文字列変数を指定することで、任意の文字列をマーカーとして表示します。文字の属性はmarkercharacterattrsオプションで制御します。
proc template;
define statgraph pval;
begingraph;
layout overlay /
xaxisopts=(label="group")
yaxisopts=(label="LS means");
barchartparm category=grp response=estimate /
errorlower=lower
errorupper=upper;
/*アスタリスク(p<0.05未満)*/
scatterplot x=grp y=pval /
markercharacter=mark
markercharacterattrs=(color=black size=11);
endlayout;
entryfootnote "*: p < 0.05 **: p < 0.01 ";
endgraph;
end;
run;
ods graphics / reset=index outputfmt=emf border=off imagename="画像名";
ods listing gpath="画像保存パス" style=styles.journal3;
proc sgrender data=graph template=pval;
run;