背景介绍

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

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

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

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

除了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逐一调整横纵坐标,绘制参考线,绘制置信区间和点估计,填充色块,添加文字和箭头等。

方法2

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

上图可以继续通过在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语言把多个图合并在一张图_SAS 绘制亚组分析森林图相关推荐

  1. R语言Logistic回归模型亚组分析森林图(forest plot)绘制

    R语言Logistic回归模型亚组分析森林图(forest plot)绘制 目录 R语言Logistic回归模型亚组分析森林图(forest plot)R语言Logistic回归模型亚组分析森林图

  2. meta分析森林图解读,实例讲解教你快速学会meta分析森林图解读!

    Meta分析一对一指导,符合学术规范,结课直接投稿,+tjzgBL哟! meta分析森林图里长长短短的横线和形状分别代表了什么?这就是我们本期需要解决的问题:meta分析森林图解读. 本文我以< ...

  3. R语言广义线性模型Logistic回归模型亚组分析及森林图绘制

    R语言广义线性模型Logistic回归模型亚组分析及森林图绘制 #Logistic回归案例 6 亚组分析森林图 library(forestplot) rs_forest <- read.csv ...

  4. R语言使用forestploter包绘制单组及双组森林图(2)(附有超详细备注)

    森林图在论文中很常见,多用于表示多因素分析中的变量与结果变量的比值效应,可以用图示的方法比较直观的绘制出来.既往我们在文章<R语言快速绘制多因素回归分析森林图(1)>已经介绍了怎么绘制森林 ...

  5. R语言使用GGally包的ggpairs函数可视化变量相关性分析图:包含散点图、密度图、柱状图、箱图等、并自定义数据点的大小

    R语言使用GGally包的ggpairs函数可视化变量相关性分析图:包含散点图.密度图.柱状图.箱图等.并自定义数据点的大小 目录

  6. R语言亚组分析 (Subgroup Analysis)及森林图绘制实战

    R语言亚组分析 (Subgroup Analysis)及森林图绘制实战 目录 R语言亚组分析 (Subgroup Analysis)及森林图绘制实战 #亚组分析

  7. R语言glm拟合logistic回归模型:模型评估(模型预测概率的分组密度图、混淆矩阵、准确率、精确度、召回率、ROC、AUC)、PRTPlot函数获取logistic模型最优阈值(改变阈值以优化)

    R语言glm拟合logistic回归模型:模型评估(模型预测概率的分组密度图.混淆矩阵.Accuray.Precision.Recall.ROC.AUC).PRTPlot函数可视化获取logistic ...

  8. R语言ggplot2可视化添加希腊字母标签:图表题(title)中加入希腊字母、图中加入希腊字母标签

    R语言ggplot2可视化添加希腊字母标签:图表题(title)中加入希腊字母.图中加入希腊字母标签 目录

  9. R语言两个dataframe纵向合并或者为dataframe添加数据行实战

    R语言两个dataframe纵向合并或者为dataframe添加数据行实战 目录 R语言两个dataframe纵向合并或者为dataframe添加数据行实战

最新文章

  1. js获取当前日期,包括星期几
  2. CVPR2017: Learning Deep Context-aware Features over Body and Latent Parts for
  3. 写在开年:移植wolfssl4.3.0到w60x_sdk_3.04时的一点问题
  4. 经典C语言程序100例之七二
  5. TensorFlow前向传播
  6. 桁架工业机器人编程_工业机器人之桁架机器人
  7. 无插件,跨平台,基于WebGL的三维地球来了!!!
  8. 如何评估 Serverless 服务能力?这份报告给出了 40 条标准
  9. 想跟大家一起做件小事
  10. HOOK API(三)—— HOOK 所有程序的 MessageBox
  11. python消费kafka逻辑处理导致cpu升高_用Apache Kafka 和 Python 搭建分布式流处理系统[翻译]...
  12. (转载)计算机英语名词简释
  13. 最详细的Mysql操作手册(一)
  14. 史上超强图像处理开源工具包--ImageMagick
  15. 前端提高篇(三十九)CSS进阶7:columns多列布局
  16. GitHub代码,资源下载慢?怎么办?
  17. Halcon之Variation Model
  18. RFC6020 - YANG语言标准中文
  19. 一剑开尘走龙蛇 XGBoost
  20. 修复Microsoft Edge上“无法到达此页面”错误的5种方法

热门文章

  1. Swift5.1 语言指南(二十三) 协议
  2. 第4次作业类测试代码+163+张玉洁
  3. 台式计算机显示器点不亮的原因,电脑点不亮原因及处理方法
  4. 企业应该如何搭建私有云服务器数据中心?需要注意哪些问题
  5. 桑榆之年,你将如何谢幕这一生?
  6. 系统集成项目管理工程师备考资料(口袋应试第二版)2
  7. Mysql8.0 忘记密码怎么办
  8. 苹果M1Operation not permitted解决办法
  9. 小程序商城制作一个需要多少钱?一般包括哪些费用?
  10. python-恺撒密码 I