Метаанализ: лесной участок сводных оценок с использованием пакета metafor

#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. Идеально — я тоже свяжусь с этим из своего вопроса о переполнении стека (извините, у меня недостаточно репутации, чтобы пометить это как полезное)