Используя metafor :: rma вместе с geom_smooth? - PullRequest
0 голосов
/ 30 марта 2020

Я хотел бы использовать metafor :: rma () как сглаживатель для ggplot. Я перепробовал все что угодно, но ничего не помогло. Вот минимальный (не) рабочий пример:

# Libraries
library(metafor)
library(ggplot2)

# Some data preparation
dat <- escalc(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg)

# Scatterplot of the data
figure1 <- ggplot(dat, aes(y = yi, x = ablat)) + geom_point()
figure1

# Various attempts that lead to various error messages :(
figure2a <- ggplot(dat, aes(y = yi, x = ablat)) +
           geom_point() + geom_smooth(method = metafor::rma())

figure2b <- ggplot(dat, aes(y = yi, x = ablat)) +
  geom_point() + geom_smooth(method = metafor::rma(y = yi, vi = vi))

figure2c <- ggplot(dat, aes(y = yi, x = ablat)) +
  geom_point() + geom_smooth(method = metafor::rma(y = dat$yi, vi = dat$vi))

figure2d <- ggplot(dat, aes(y = yi, x = ablat)) +
  geom_point() + geom_smooth(method = metafor::rma(yi = yi, vi = vi, data = dat), formula = yi ~ ablat)

figure2e <- ggplot(dat, aes(y = yi, x = ablat)) +
  geom_point() + geom_smooth(method = metafor::rma(), method.args = list(yi = dat$yi, vi = dat$vi, method = "EB"))

Что я делаю не так? Спасибо

1 Ответ

0 голосов
/ 31 марта 2020

Я кратко пытался заставить его работать с geom_smooth(), но я не большой пользователь ggplot2 и не преуспел. Но, как предложил @Tjebo, вы можете вычислить прогнозируемые значения с помощью predict(), а затем использовать geom_line() и geom_ribbon() для добавления элементов. Вот пример:

library(metafor)
library(ggplot2)

dat <- escalc(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg)
res <- rma(yi, vi, mods = ~ ablat, data=dat)
pred <- as.data.frame(predict(res, newmods = seq(0,60,by=1), addx=TRUE))
names(pred)[8] <- "ablat"

ggplot(dat, aes(x = ablat)) +
   geom_point(aes(y = yi)) +
   geom_line(data = pred, aes(x = ablat, y = pred)) +
   geom_ribbon(data = pred, aes(ymin = ci.lb, ymax = ci.ub), fill = "blue", alpha = 0.2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...