使用 HR (95%CI) 绘制森林图

问题描述 投票:0回答:1

我是森林图新手,想知道是否有一种方法可以在 RStudio 中制作风险比和 95% CI 的森林图,并包含如所附示例的子组。 https://www.researchgate.net/figure/Forest-plot-portraying-the-hazard-ratio-HR-and-95-CI-of-the-association-between_fig3_269770487

到目前为止我已经尝试过这样做:

exposures <- c(rep("Race/Ethnicity", 6),
               rep("Median Household Income", 5),
               rep("Rurality, population", 5))
subgroups <- c("Hispanic (All Races)", "Non-Hispanic American Indian/Alaska Native", 
               "Non-Hispanic Asian American", "Non-Hispanic Black", 
                "Non-Hispanic Native Hawaiian and other Pacific Islander", 
                "Non-Hispanic White","<50,000", "50,000 to 59,999", "60,000 to 69,999",
                "70,000 to 74,999", ">= 75,000", "Non-metropolitan, 
                not adjacent to metropolitan", "Non-metropolitan, 
                adjacent to metropolitan","Metropolitan, < 250,000", 
                 "Metropolitan, 250,000 to 1 million", "Metropolitan, > 1 million")

HR <- c(1.2, 1.3, 0.9, 1.5, 1.4, 1.1, 1.2, 0.8, 0.9, 1.0, 1.1, 0.7, 1.0, 1.5, 0.7, 2.0)
CI <- c(1.0, 1.5, 0.7, 2.0, 1.1, 1.7, 0.9, 1.5, 0.7, 1.3, 1.0, 1.4, 1.1, 1.7, 0.9, 1.5)
data <- data.frame(exposures, subgroups, HR, CI)
r
1个回答
0
投票

您首先需要计算对数 CI 下限和上限。之后,使用

metafor
包:

if (!require("metafor")) {
  install.packages("metafor")
  library(metafor)
}

exposures <- c(rep("Race/Ethnicity", 6),
               rep("Median Household Income", 5),
               rep("Rurality, population", 5))
subgroups <- c("Hispanic (All Races)", "Non-Hispanic American Indian/Alaska Native", 
               "Non-Hispanic Asian American", "Non-Hispanic Black", 
               "Non-Hispanic Native Hawaiian and other Pacific Islander", 
               "Non-Hispanic White", "<50,000", "50,000 to 59,999", "60,000 to 69,999",
               "70,000 to 74,999", ">= 75,000", "Non-metropolitan, not adjacent to metropolitan", 
               "Non-metropolitan, adjacent to metropolitan", "Metropolitan, < 250,000", 
               "Metropolitan, 250,000 to 1 million", "Metropolitan, > 1 million")

HR <- c(1.2, 1.3, 0.9, 1.5, 1.4, 1.1, 1.2, 0.8, 0.9, 1.0, 1.1, 0.7, 1.0, 1.5, 0.7, 2.0)
CI <- c(1.0, 1.5, 0.7, 2.0, 1.1, 1.7, 0.9, 1.5, 0.7, 1.3, 1.0, 1.4, 1.1, 1.7, 0.9, 1.5)

logHR <- log(HR)
lowerCI <- log(CI) - log(HR) 
upperCI <- log(CI) + log(HR) 

data <- data.frame(exposures, subgroups, HR, logHR, lowerCI, upperCI)

res <- rma(yi=logHR, sei=(upperCI-lowerCI)/3.92, data=data, method="REML")
forest(res, slab=paste(data$subgroups, data$exposures, sep=", "), 
       xlim=c(-2, 2), at=log(c(0.5, 1, 2)), atransf=exp, 
       ilab=cbind(HR, exp(lowerCI), exp(upperCI)), ilab.xpos=c(-0.75, -1.75, -2.75), 
       cex=.75, pch=1, efac=c(1.5), digits=2)

text(-2, 17, "Hazard Ratio (95% CI)", pos=4)

这给了你

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.