r语言把多个图合并在一张图_SAS 绘制亚组分析森林图

背景介绍

随着循证医学(evidence-based medicine)的兴起,森林图(forest plot)已经为人所广泛认识。当前,几乎所有的临床工作者都知道什么是森林图以及如何解读森林图的含义。

Richard Peto曾以玩笑的口吻提及森林图命名的来历是因为有一位乳腺癌研究者叫做Pat Forrest,所以森林图亦被称为Forrest plot。但事实上,森林图命名的真正来源还是因其能够在一张图片中同时展示多个或多组数据的宏观情况(the wood and the trees),避免“一叶障目”、“只见树木,不见森林”。

最初森林图的雏形可追溯到1978年,Freiman JA等人在当时的医学顶级期刊《新英格兰医学杂志》上发表了一篇研究论文,该论文调查了71项阴性研究的结果,并将其在一张图片上利用水平柱状图来展示这些研究的置信区间(confidence interval)以及其对应的点估计值,可被视为森林图的雏形,但当时并未对这些纳入研究进行数据合并。

r语言把多个图合并在一张图_SAS 绘制亚组分析森林图_第1张图片

森林图的应用场景很广泛,除了最初的发表时用于展示调查结果数据外,几乎所有的Meta分析都以这种方式呈现单个研究的数据和合并后的结果。著名的Cochrane协作组织的标志中即含有森林图的元素。Cochrane标志中紫色的部分即为森林图,该森林图来源于一个真实的Meta分析,共纳入了7个随机对照试验(Randomized Controlled Trial, RCT),比较对于过早分娩的女性给予皮质类固醇(corticosteroid)和安慰剂(placebo)的治疗结果,结果显示皮质类固醇对于减少早产儿死亡率非常有效。

r语言把多个图合并在一张图_SAS 绘制亚组分析森林图_第2张图片

除了Meta分析外,越来越多的临床研究开始在亚组分析(Subgroup analysis)的部分引入森林图,以此来呈现亚组分析的结果(不同人群之间,如年龄,性别,疾病分期等亚组)。

也有的研究在敏感性分析(Sensitivity analysis)的部分以森林图的形式呈现敏感性分析的结果(对缺失数据进行不同的填补方式,如末次结转,多重填补等)。还有的研究在展示趋势变化时也会采用森林图的形式呈现。

SAS实现

SAS实现森林图的方式目前稍微有些复杂,主要原因在于:

  1. 需要对数据进行手动录入处理;

  2. 尚无过程步能够“快速”绘制森林图(怎么定义快速?

    三行代码吧)

由于 SAS 9.4M3 以前的版本的 styleattrs 语句因为没有 axisextent 选项,yaxistable 语句没有 indentweight 和 pad 选项,所以 9.4M3 之前的版本无法对文本进行缩进。但即使无缩进,也并非不可接受。细节中有魔鬼,对文本缩进固然显得更加清楚,但森林图的重点还是在于图,而不是文字。如果是9.4M3之前的版本,把缩进相关选项删除即可,可以先大概了解一下SAS森林图的作图风格。

方法1

利用proc sgplot逐一调整横纵坐标,绘制参考线,绘制置信区间和点估计,填充色块,添加文字和箭头等。

r语言把多个图合并在一张图_SAS 绘制亚组分析森林图_第3张图片

r语言把多个图合并在一张图_SAS 绘制亚组分析森林图_第4张图片

方法2

通过proc iml调用R语言中的forestplot包。但是仍然需要先手动录入数据,建议采用proc SQL录入数据,这样可以在录入数据的同时对变量进行缩进。而且利用proc SQL在指定变量长度的时候也更为灵活。再次强调R语言对于大小写敏感,所以务必注意在调用R语言时,R代码中的变量名称需要与SAS中的变量名称“完全一致”。

r语言把多个图合并在一张图_SAS 绘制亚组分析森林图_第5张图片

上图可以继续通过在R的代码中增加选项(如底部文字说明,色块突出等)进一步润色可视化的细节,具体的方法可以通过help(forestplot)了解或者其他R语言的资料。

参考文献:

1.JA Freiman, et al. The importance of beta, the type II error and sample size in the design and interpretation of the randomized control trial-survey of 71 negative trials.
2.S Lewis. Forest plots: trying to see the wood and the trees.
3.JR O’Leary, et al. How to create a journal quality forest plot with SAS 9.4.
4.谷鸿秋《SAS编程演义》
5.谷鸿秋《那就再讲讲三行R代码搞定的森林图吧》

作者简介

秦宗实,香港大学李嘉诚医学院中药学专业在读博士,研究方向为天然药物与神经疾病的转化医学研究。曾参与“十二五”国家科技支撑计划项目、国家重点研发计划“中医药现代化研究”重点专项等临床研究,参与研究方案及统计分析计划制定。在J Urol、Am J Med、Mayo Clinic Proc、Brain Behav Immun等期刊发表论文20多篇。

谷子歌总结

  1. 森林图,其实细究起来,大致有三种:

    meta分析森林图、回归分析森林图以及亚组分析森林图

  2. SAS 绘制森林图,最核心的其实就是highlow 语句 (绘制 95% CI )和 yaxistable 语句(绘制文字)

  3. 绘制回归分析和亚组分析森林图的数据,还是建议直接在前面的过程中抓取,不要用dataline输入。至于meta分析森林图,还是用 R 吧

  4. 非常感谢秦同学投稿,原文代码较多,就不贴出来了。但估计还是有些同学想要具体代码,那就点原文链接,可方便地获取Sanjay Matange 博客中的代码

你可能感兴趣的:(r语言把多个图合并在一张图,森林图怎么分析)