森林圖在Meta分析中應(yīng)用廣泛,在生存分析中的應(yīng)用其實(shí)并無太多高深之處,不過是將多因素COX分析的統(tǒng)計(jì)結(jié)果進(jìn)行一個(gè)可視化的展示。
以survival包中的腸癌數(shù)據(jù)集作為測試數(shù)據(jù):
p_load(survival)
data(colon)
查看數(shù)據(jù):
options(width = 200) # 增加顯示寬度
head(colon)
使用 ?colon
可以查看該數(shù)據(jù)集的具體釋義。本例中,我們將用到3列分類變量:
1、sex (性別, 1為男性,0為女性)
2、rx (治療方式, Obs(ervation), Lev(amisole), Lev+5-FU)
3、adhere (附著于鄰近器官, 1和0分別代表是和否)
使用 coxph()
函數(shù)構(gòu)建預(yù)后模型:
# 構(gòu)建COX比例風(fēng)險(xiǎn)回歸模型
cox_model = coxph(Surv(time, status) ~ sex + rx + adhere, data = colon)
summary(cox_model)
進(jìn)而,使用survminer包中的 ggforest()
函數(shù)繪制森林圖:
The function ggforest()
from the survminer package creates a forest plot for a Cox regression model fit. Hazard ratio estimates along with confidence intervals and p-values are plotter for each variable.
p_load(survminer)
ggforest(cox_model)
顯示如下:
簡單方便吧,一個(gè)命令就能完成。不過,上圖中值得注意的是:
1、三者都是分類變量,但rx顯示了具體的類別(顯示三行),而sex和adhere則沒有。原因是rx是因子型,要將sex和adhere轉(zhuǎn)為因子型數(shù)據(jù):
colon = within(colon, {
sex = factor(sex, levels = c(0,1), labels = c('female', 'male'))
adhere = factor(adhere, levels = c(0,1), labels = c('NO','YES'))
})
2、本例中,rx的Obs作為了參考(reference,HR=1),并計(jì)算其他兩類相對于Obs的HR值,是因?yàn)橐蜃有偷牡谝粋€(gè)類別就是Obs:
Levels: Obs Lev Lev+5FU
所以,如果想使用Lev作為參考可以更換其順序:
colon$rx = factor(colon$rx, levels = c('Lev','Obs','Lev+5FU'))
3、 ggforest()
函數(shù)支持一些參數(shù)調(diào)整。結(jié)合上述兩條,執(zhí)行代碼如下:
# 重新執(zhí)行COX
cox_model = coxph(Surv(time, status) ~ sex + rx + adhere, data = colon)
# 帶參數(shù)的
ggforest(cox_model, main = 'Hazard ratio', cpositions = c(0.02, 0.12, 0.35), fontsize = 0.8, refLabel = 'Ref.', noDigits = 3)
注意,一定要在變量轉(zhuǎn)換數(shù)據(jù)類型后重新執(zhí)行COX,否則報(bào)錯:
錯誤: variables ‘sex’, ‘a(chǎn)dhere’ were specified with different types from the fit此外: Warning message:In .get_data(model, data = data) :The data
argument is not provided. Data will be extracted from model fit.
正確執(zhí)行后,顯示如下: