2016-09-05 7 views
0

В документации библиотеки metafor указано, что если неопределенный аргумент psize не указан, размеры точек рисуются пропорционально точности оценок. Насколько я знаю, точность является обратной дисперсией.Размер участка лесного участка

  1. Как библиотека metafor вычисляет размер точки из доверительного интервала?

  2. Как увеличить размер точки? cex также влияет на размер текста.

пример

library(metafor) 
model_data <- read.table(dec = ",", text=" 
              OR  lower  upper 
         age    0,9678479 0,9326182 1,002493 
         sex    1,0679667 0,4987457 2,280504 
         ApacheeII  0,9288701 0,8728417 0,984529", 
         header=T) 

forest(x=model_data$OR, 
     ci.lb=model_data$lower, 
     ci.ub=model_data$upper, 
     annotate=TRUE, 
     cex=1.2, 
     at=seq(0,6,1), 
     refline=1, 
     digits=c(3,1), 
     xlim=c(-1,2), 
     xlab="OR", 
     slab=rownames(model_data)) 
+0

Насколько 1) обеспокоен код легко получить доступ. Для 2) вам нужно объяснить, что вы имеете в виду. –

ответ

0

Что касается 1:

Соответствующая строка кода в forest.default() является:

vi <- ((ci.ub - ci.lb)/(2*qnorm(alpha/2, lower.tail=FALSE)))^2 

Таким образом, функция предполагает, что вы снабжающих границы симметричного доверительного интервала Вальдти (CI) t o функция, а затем обратно - вычисляет дисперсию на основе этого. Это было бы подходящим для коэффициентов логарифмических коэффициентов и соответствующих границ CI на шкале журнала, но вы, по-видимому, непосредственно применяете ограничения OR и CI на необработанном масштабе к функции. Тогда это имеет меньшее значение. Обычно CI для коэффициентов шансов на самом деле сначала вычисляются по шкале журнала (и затем экспоненциально). Это также, как представляется, в случае этих данных:

round(with(model_data, log(upper) - log(OR)), 2) 
round(with(model_data, log(OR) - log(lower)), 2) 

Это показывает, что на логарифмической шкале, границы CI симметричны (вокруг бревна (OR)). Таким образом, эти CI-границы являются очень вероятными CI-типами Wald-типа на шкале журнала. Таким образом, было бы больше смысла, чтобы сделать это:

dat <- log(model_data) 

forest(x=dat$OR, ci.lb=dat$lower, ci.ub=dat$upper, 
     annotate=TRUE, cex=1.2, at=seq(-2,2,1), digits=c(3,1), 
     xlim=c(-5,7), xlab="OR", slab=rownames(dat), atransf=exp) 

Так, журнал питания (OR) и соответствующие CI границы к функции и затем использовать atransf аргумент для обратного преобразования. По сути, это ставит ось x в логарифмическую шкалу.

Что касается 2:

Вы должны вычислить точку размеры самостоятельно, а затем поставить их в функцию через psize аргумента.

0

Благодарим за помощь!

С вашими подсказками и исходный код функции я, наконец, удалось дать фактор в одиночку кегля:

library(metafor) 
model_data <- read.table(dec = ",", text=" 
              OR  lower  upper 
         age    0,9678479 0,9326182 1,002493 
         sex    1,0679667 0,4987457 2,280504 
         ApacheeII  0,9288701 0,8728417 0,984529", 
         header=T) 

dat <- log(model_data) 
ci.lb = dat$lower 
ci.ub = dat$upper 

#taken from forest.default source code 
level = 95 
alpha <- ifelse(level > 1, (100 - level)/100, 1 - level) 
vi <- ((ci.ub - ci.lb)/(2 * qnorm(alpha/2, lower.tail = FALSE)))^2 
wi <- 1/sqrt(vi) 
psize <- wi/sum(wi, na.rm = TRUE) 
psize <- (psize - min(psize, na.rm = TRUE))/(max(psize, 
               na.rm = TRUE) - min(psize, na.rm = TRUE)) 
psize <- (psize * 1) + 0.5 

forest(x=dat$OR, 
     ci.lb = ci.lb, 
     ci.ub = ci.ub, 
     cex = 1.5, 
     annotate=FALSE, 
     at=seq(-1,1,1), 
     xlim=c(-1.1,1.1), 
     xlab="OR", 
     slab=rownames(dat), 
     psize=psize*.7, 
     atransf=exp 
) 
Смежные вопросы