前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Annotate Facility之森林图

Annotate Facility之森林图

作者头像
专业余码农
发布2020-07-16 10:05:35
8120
发布2020-07-16 10:05:35
举报
文章被收录于专栏:老Z的博客
forest1
forest1

森林图(Forest plot)是以统计指标和统计分析方法为基础,用数值运算结果绘制出的图型。它在平面直角坐标系中,以一条垂直的无效线(横坐标刻度为1或0)为中心,用平行于横轴的多条线段描述了每个被纳入研究的效应量和可信区间(confidence interval,CI)。森林图是Meta分析中最常用的结果表达形式,当然类似的结果也可以用森林图来展示,比如上图即展示了两处理组在各个亚组因素的反应率的差异的95%可信区间。

假设统计分析的结果如下:

forest2
forest2

在画图之前我们要构造一个变量,即图中的变量ORD2,以保证数据集中的记录在图中能按顺序来显示,如本例中可以通过以下程序来得到变量ORD2,其中的ORD1的值是根据分组因素顺序定义的:

代码语言:javascript
复制
ORD2=36-_N_-(ORD1-1);

开始画图:

  1. 画首尾部的字符串和X轴,因为首尾部要用到的是Graphics Output区域故要用 %system(3, 3),而X轴用的是Data区域故要用 %system(2, 2),代码如下:
代码语言:javascript
复制
/*字体*/
%let ftext ='Albany AMT/roman/medium';

/*编译宏*/
%annomac;

data anno1;
    length TEXT $200.;
    %system(3, 3);
    %label(52, 97, 'Treatment Difference', black, 0, 0, 1.2, &ftext., 5)
    %label(1, 92, 'Subgroup', black, 0, 0, 1.1, &ftext.,6);
    %label(63, 92, 'Difference(95%CI)', black, 0, 0, 1.1, &ftext.,6);
    %label(81, 95, 'Response Rates(%)', black, 0, 0, 1.2, &ftext., 6) ;

    %label(82, 92, 'TRTA', black, 0, 0, 1.1, &ftext., 6);
    %label(92, 92, 'TRTB', black, 0, 0, 1.1, &ftext., 6);

    %label(32, 6, 'Favors TRTA', black, 0, 0, 1.1, &ftext., 4);
    %label(56, 6, 'Favors TRTB', black, 0, 0, 1.1, &ftext., 6);

    %label(25.5, 4, '-70', black, 0, 0, 1.0, &ftext., 6);
    %label(60, 4, '70', black, 0, 0, 1.0, &ftext., 6);
    %label(44.0, 5, '0', black, 0, 0, 1.0, &ftext., 6);

    /*X轴*/
    %system(2, 2);
    %line(-70, 0, 70, 0, black, 1, 1);
run;
  1. 画分组因素、95%可信区间、反应率的值,因为要用Y轴的值加画布的百分比值来确定Graphics Output Area中的位置故用%system(3, 2),代码如下:
代码语言:javascript
复制
data anno2;
    set demo;
    length TEXT $200.;
    %system(3, 2);
    %label(2, ORD2, ITEM, black, 0, 0, 1, &ftext., 6);
    %label(63, ORD2, DIFLU, black, 0, 0, 1, &ftext., 6);
    %label(82.5, ORD2, RATE1, black, 0, 0, 1, &ftext., 6);
    %label(92.5, ORD2, RATE2, black, 0, 0, 1, &ftext., 6);
    drop ORD: ITEM DIFF LOW UP DIFLU RATE1 RATE2;
run;
  1. 画95%可信区间的线,代码如下:
代码语言:javascript
复制
data anno3;
    set demo;
    %system(2, 2);
    %line(LOW, ORD2, UP, ORD2, black, 1, 1);
    drop ORD: ITEM DIFF LOW UP DIFLU RATE1 RATE2;
run;
  1. 画参考线,代码如下:
代码语言:javascript
复制
data anno4;
    %system(2, 2);
    %line(0, 0, 0, 36, black, 2, 1);
run;
  1. 将Annotation的数据集连在一起:
代码语言:javascript
复制
data anno;
    set anno1-anno4;
run;
  1. 设置坐标属性,通过Marker Font来实现菱形显示DIFF的值,代码如下:
代码语言:javascript
复制
/*图形属性*/
symbol1 i=none v=p c=black f=marker h=1;

/*坐标轴*/
axis1 minor=none major=none order=(0 to 36 by 1) label=none value=none offset=(0, 5) origin=(0, 4) c=white;
axis2 minor=none order=(-70 to 70 by 70) label=none offset=(27, 40) origin=(0, 4) style=0 value=none;

goptions ftext=&ftext htext=8pt hsize=50cm vsize=16cm noborder;

/*画图*/
ods listing close;
proc gplot data=demo;
    plot ORD*DIFF/haxis=axis2
                  vaxis=axis1
                  anno=anno
                  nolegend
                  noframe;
run ;
quit;

ods rtf close;
ods listing;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档