2変量データに対しての3D Raincloud plot(未完成版)

絶対SASでやらない方がいい気がする
3Dグラフの機能については,もうサポートする気がないって宣言してるレベルで無理.
たぶん,ヒートマップとかもそうですけど,2次元に上手く落とし込めるでしょ?みたいな主張なのかなぁ
SG系での3次元プロットの機能が旧GPLOT系より悪くなってるんだからどうしようもない

ただ,無理ゲーには挑みたくなるのが,魔界塔士の時代からの人のサガなので…

SAS社のサイトに載ってた適当なテストデータから

data wk1;

 seed = 15678;

 do i = 1 to 1000;

  z1 = rannor(seed);

  z2 = rannor(seed);

  z3 = rannor(seed);

  x = 3*z1 + z2;

  y = 3*z1 + z3;

  output;

 end;

 drop seed;

run;

2変量に対しての確率密度もKDEで問題なく計算できます
あとの流れは通常のRain cloudと一緒なんですけど
proc G3Dが一種類のプロットしか描けずに,組み合わせができないので 雲の部分をSURFACE(面プロット)で
描くのを諦めて,雨と同じ散布図の集合で表現するしかない… そうすると空を雨が覆ってしまうので
truncateの有無にかかわらず,確率密度関数が極小のところは消してしまうとスッキリ(いいのか?しらん)

proc kde data=wk1 ; 

   bivar x y/ out=kde; 

run;

data wk2;

set wk1(in=wk) kde(in=kde);

if wk then do;

density2=0.1+ranuni(777)*0.01;

end;

if kde then do;
          x=value1;

         y=value2;

     if density>10**-5 then density2=density+0.13;

else delete;

end;

keep x y density2;

run;

proc g3d data=wk2;

 scatter x*y=density2 /shape="balloon" size=0.5 noneedle;

run;



















Z軸に意味ないから軸けしたいけどGPLOTのAXISステートメントがZ軸に効かんという謎制約….NOAXISは3軸とも消すか消さないかを選択できるという,野性的すぎる大胆な仕様…
あとは,これだと,1変量の時の箱髭にあたる,位置の指標がないので
2変量用箱ひげ図的な用途で箱と同じくTukeyさまが編み出したBAGPLOTとかを配置してみたいけど,マイナー過ぎてSASに実装されてない(JMPにはあるのに…)
手で実装するにはしんどいし,実装できたとして,このG3Dに組み込む術は多分ANNOTATEしかない…

0 件のコメント:

コメントを投稿