#r #metafor
#r #metafor
Вопрос:
Я мета-анализирую данные из ~ 90 исследований. Это создает некоторые проблемы в том, как отобразить данные в доступном формате для публикации. Я хотел бы отобразить только общие оценки размера эффекта различных мета-анализов и исключить оценки, относящиеся к конкретному исследованию. Я могу сделать это в Stata, используя metan
пакет и добавив summaryonly
команду. Возможно ли подавить размеры эффекта на уровне исследования в выходных данных лесного участка с помощью metafor
пакета (или любого другого пакета R для метаанализа)?
Я использовал addpoly
команду для добавления оценок размера эффекта для подвыборок, как описано в документации пакета, например:
res.a <- rma(n1i = Intervention_n, n2i = Control_n, m1i = intervention_d, m2i = control_d, sd1i = intervention_d_sd,
sd2i = control_d_sd, measure="MD", intercept=TRUE, data = Dataset.a, vtype="LS", method="DL", level=95,
digits=4, subset = (exclude==0 amp; child=="No"), slab=paste(Dataset.a$Label, Dataset.a$Year, sep=", "))
addpoly(res.a, row=7.5, cex=.75, font=3, mlab="Random effects model for subgroup")
Комментарии:
1. Я бы тоже хотел это сделать, но для команды metaprop из мета-пакета. Проблема с текущим подходом заключается в том, что я потеряю всю другую сводную информацию о лесном участке, например, количество исследований, вносящих вклад, количество событий, общее число n и т. Д. Было бы здорово исправить и это.
Ответ №1:
Если я вас правильно понимаю, вы проводите несколько анализов с этими ~ 90 исследованиями (например, на основе разных подмножеств), и ваша цель — показать только сводные оценки (основанные на этих анализах) на лесном участке. Тогда самым простым подходом было бы просто собрать оценки и соответствующие отклонения различных анализов в вектор, а затем передать их forest()
функции. Позвольте мне привести простой пример:
### load metafor package
library(metafor)
### load BCG vaccine dataset
data(dat.bcg)
### calculate log relative risks and corresponding sampling variances
dat <- escalc(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg)
### fit random-effects models to some subsets
res.r <- rma(yi, vi, data=dat, subset=alloc=="random")
res.s <- rma(yi, vi, data=dat, subset=alloc=="systematic")
res.a <- rma(yi, vi, data=dat, subset=alloc=="alternate")
### collect model estimates and corresponding variances
estimates <- c(coef(res.r), coef(res.s), coef(res.a))
variances <- c(vcov(res.r), vcov(res.s), vcov(res.a))
### create vector with labels
labels <- c("Random Allocation", "Systematic Allocation", "Alternate Allocation")
### forest plot
forest(estimates, variances, slab=labels)
Если вам не нравится, что размеры точек различаются (по умолчанию они отображаются обратно пропорционально отклонениям), вы можете использовать:
forest(estimates, variances, slab=labels, psize=1)
Пара других улучшений:
forest(estimates, variances, slab=labels, psize=1, atransf=exp, xlab="Relative Risk (log scale)", at=log(c(.2, .5, 1, 2)))
ДОБАВЛЕНИЕ
Если вы предпочитаете полигональные формы для оценок, вы можете сделать следующее. Сначала нарисуйте график, как указано выше, но используйте efac=0
, чтобы скрыть вертикальные линии на CI. Затем просто нарисуйте над сводными полигонами с помощью addpoly()
:
forest(estimates, variances, slab=labels, psize=1, atransf=exp, xlab="Relative Risk (log scale)", at=log(c(.2, .5, 1, 2)), efac=0)
addpoly(estimates, variances, atransf=exp, rows=3:1, col="white", annotate=FALSE)
Вы также можете использовать efac=1.5
in addpoly()
для растягивания полигонов по вертикали. Настройте коэффициент на свой вкус.
Комментарии:
1. Идеально — я тоже свяжусь с этим из своего вопроса о переполнении стека (извините, у меня недостаточно репутации, чтобы пометить это как полезное)