SAS画图

182:MEAN±SD图(一)

2022-12-31  本文已影响0人  SASPRO的打工人生活

MEAN±SD图算是我们工作中经常遇到的图之一,一般用来展示血药浓度变化。其实MEAN±SD图主要是折线图(series plot)和散点图(scatter plot)两者的结合。正如标题所示,MEAN±SD图需要我们算出mean和SD,然后上限就是MEAN+SD,下限就是MEAN-SD,如下图所示:

生成所需数据,分两组,数据不太好,按理说血药浓度数据应该是随着时间爬升然后下降(所以我在atptn=0.5,atptn=72强制处理了一下),凑活着用吧。

data series;

retain _seed_ 0;

do subjid="S001","S002","S003","S004","S005","S006","S007","S008","S009","S010";

do atptn=0.5,1, 1.5,2,4,6,12,24,48,72;

/* aval=int(ranuni(0) * 4100 + 10);*/

aval=int(rand('NORMAL',50,10));

/* aval=7+100*rannor(_seed_);*/

output;

end;

end;

run;

data series2;

set series;

if subjid in ("S001","S002","S003","S004","S005") then do;trta="A组";trtan=1;end;

else if subjid in ("S006","S007","S008","S009","S010") then do;trta="B组";trtan=2;end;

if atptn=0.5 then aval=5;

if atptn=72 then aval=8;

proc sort;by trta atptn;

run;

proc means data=series2 noprint;                                                                                                         

    by trta atptn;                                                                                                                   

    var aval;                                                                                                                           

    output out=meanplot(drop=_type_ _freq_) mean=mean std=std;                                                                   

run; 

data  meanplot2;

set meanplot;

if nmiss(mean, std)=0 then do;

upmeansd=mean+std;

lowmeansd=mean-std;

end;

run;

title 'Mean±SD by ATPTN and Treatment';

proc sgplot data=meanplot2  /* (where=(trta="A组")) sganno=annoOuter pad=(bottom=14%)*/;

scatter x=atptn y=mean / yerrorupper=upmeansd yerrorlower=lowmeansd group=trta groupdisplay=OVERLAY clusterwidth=0.5

markerattrs=(size=7 symbol=circlefilled);

series x=atptn y=mean / group=trta groupdisplay=OVERLAY clusterwidth=0.5 lineattrs=(pattern=solid);

run;

输出如下,丑了点

先简单介绍一下里面的参数:

1:YERRORLOWER/YERRORUPPER的作用是绘制散点到下限/上限之间的线条,

2:GROUP=作用是为 “=”后面你指定的变量创建不一样的标志,如图中红色和蓝色的点。其实就是区分不同的组别(在这个例子中)

3:groupdisplay 这个选项的值只有两个:OVERLAY | CLUSTER ,默认的选项是OVERLAY,所以上面的代码有误(看数据然后发现Y轴的坐标有问题),应该用OVERLAY,而不是CLUSTER。说实话,我不是很清楚这两个区别,SASHELP的解释也不是明白:

groupdisplay:specifies how marker groups are positioned for the coordinate pairs.

OVERLAY

draws markers for a given group value at the exact coordinate. Depending on the data, markers at a given coordinate might overlap.

CLUSTER

draws markers for a given group value adjacent to each other.

用SASHELP里面的例子能看出区别

groupdisplay=CLUSTER

groupdisplay=CLUSTER groupdisplay=OVERLAY

目前猜测是groupdisplay=CLUSTER能等距展示数据(如果有了解的读者欢迎指教),但是注意这样的yerrorlower/yerroruppersh展示是有问题的。

先讲这么些吧,今天不是很想写文章的。

上一篇 下一篇

猜你喜欢

热点阅读