用R語言的forestplot包畫亞組分析森林圖

1. 背景介紹

關于繪制臨床研究報告中亞組分析的森林圖,我過去幾乎試過了所有可能的工具,最早用繪制meta分析森林圖的方法繪制臨床研究亞組分析森林圖,使用過Stata,RevMan,甚至用過Excel......雖然這些工具都能畫,但操作繁瑣,往往還需要借助其他工具進一步修改圖形。當然,如果精通SAS,畫個森林圖應該是小菜一碟,很多頂級雜志也是采用SAS制作亞組分析森林圖,但SAS畢竟是統(tǒng)計分析工具中的貴族,會的人不多,筆者也沒有系統(tǒng)學習過SAS繪圖,最終我還是把解決問題的目光投向了R。自從我使用了R語言的forestplot包,以前那些畫亞組分析森林圖的方法統(tǒng)統(tǒng)摒棄,畫亞組分析森林圖,唯R獨尊。

2. 案例分析

下面我們就以發(fā)表在新英格蘭雜志上的一篇文章中的亞組分析森林圖為例[1],用R語言的forestplot包還原這個森林圖,下圖1.為原文的FIG.1 D圖。作者首先在所有入組人群中比較了試驗組(阿比特龍+潑尼松)與對照組(單用潑尼松)在總生存率Overall Survival的差異,并計算了HR及95%可信區(qū)間,然后又按照多種因素從總人群中取子集,在子集中進一步比較試驗組與對照組 Overall Survival 的差異,這就是我們常說的所謂亞組分析。雖然筆者對這些亞組分析的結果持謹慎態(tài)度,但亞組分析結果作為一種觀察性結果還是具有一定參考價值。此外,我們不得不承認這幅圖畫的真的很好,清晰明了,可以直觀的觀察到在某些亞組人群中試驗組的獲益更大。下面我們就以這幅圖的例子來演示下如何復制一幅相同的圖出來。

圖1. 為原文的FIG.1 D圖。


首先,我們需要從這幅圖里還原原始數(shù)據(jù)并整理入Excel中,并另存為“abiraterone.csv”,整理后的數(shù)據(jù)如下圖2.所示。注意:下圖數(shù)據(jù)還原的形式很重要,數(shù)據(jù)只有按照我們這種方式整理才能繪制出合格的圖形,這一點一定要嚴格遵守。

圖2. 還原圖中的數(shù)據(jù)并整理成固定格式。前四列均為字符串形式,后三列分別是:HR值的點估計、95%可信區(qū)間下限、上限,均為數(shù)值型變量。當數(shù)據(jù)導入R語言,最后三列空格處會自動填充為NA,表示缺失。


3. R語言代碼及代碼解讀

install.packages("forestplot")

library(forestplot)

rs_forest <- read.csv('abiraterone.csv',header = FALSE)

# 讀入數(shù)據(jù)的時候一定要把header設置成FALSE,確保第一行不被當作列名稱。

tiff('Figure 1.tiff',height = 6000,width = 7000,res= 600)

forestplot(labeltext = as.matrix(rs_forest[,1:4]),

#設置用于文本展示的列,此處我們用數(shù)據(jù)的前四列作為文本,在圖中展示

mean = rs_forest$V5, #設置均值

lower = rs_forest$V6, #設置均值的lowlimits限

upper = rs_forest$V7, #設置均值的uplimits限

is.summary=c(T,T,T,F,F,T,F,F,T,F,F,T,F,F,F,T,F,F,T,F,F,T,F,F,T,F,F),

#該參數(shù)接受一個邏輯向量,用于定義數(shù)據(jù)中每一行是否是匯總值,若是,則在對應位置設置為TRUE,若否,則設置為FALSE;設置為TRUE的行則以粗體出現(xiàn)

zero = 1, #設置參照值,此處我們展示的是HR值,故參照值是1,而不是0

boxsize = 0.4, #設置點估計的方形大小

lineheight = unit(8,'mm'),#設置圖形中的行距

colgap = unit(2,'mm'),#設置圖形中的列間距

lwd.zero = 2,#設置參考線的粗細

lwd.ci = 2,#設置區(qū)間估計線的粗細

col=fpColors(box='#458B00',summary="#8B008B",lines = 'black',zero = '#7AC5CD'),

#使用fpColors()函數(shù)定義圖形元素的顏色,從左至右分別對應點估計方形,匯總值,區(qū)間估計線,參考線

xlab="The estimates",#設置x軸標簽

lwd.xaxis=2,#設置X軸線的粗細

lty.ci = "solid",

graph.pos = 4)#設置森林圖的位置,此處設置為4,則出現(xiàn)在第四列

最后得亞組分析森林圖如下圖3.所示

圖3. 還原的亞組分析森林圖。

至此,可以獲得一張直接用于投稿的展示亞組分析結果的圖形,美觀,簡潔,清晰、明了。如果我們以矢量圖的形式導出,可以通過矢量圖的編輯軟件進一步修改美化,當然以這幅圖目前的顏值用于投稿已經(jīng)綽綽有余了。以上雕蟲小技,希望對大家有用。

4. 參考文獻

[1].Abiraterone in Metastatic Prostate Cancer without Previous Chemotherapy. N Engl J Med.?2013 Jan 10;368(2):138-48.

[2].張鐵軍 陳興棟 劉振球 著,《R語言與醫(yī)學統(tǒng)計圖形》, 人民衛(wèi)生出版社, 2018.


轉自https://www.plob.org/article/22371.html

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容