Требуется настройка лесного участка для отсутствующего КИ в мета-анализе - PullRequest
1 голос
/ 11 марта 2019

Это для систематического обзора, поэтому я могу анализировать только те данные, которые были предоставлены в предыдущих статьях.Для семи таких данных достаточно данных, чтобы я мог построить КИ, который я хочу представить обычным способом лесного участка, включая привлекательную особенность размеров блоков в соответствии с длиной КИ.

Длявосьмое - здесь помечено как неуклюжий - поскольку размер выборки не выявлен, я могу только показать (предпочтительно на том же лесном участке) среднее значение, но не CI.Итак, мне нужна помощь в настройке приведенного ниже кода, чтобы представить это среднее значение как одну точку на графике, не искажая размеры остальных семи полей Okay.

При добавлении чрезвычайно узкого CI для Awkward: либоCI слишком узкий, а R округляет значение, в результате чего блок не отображается, или CI настолько узок, что библиотека лесных графиков интерпретирует его как «верный» элемент и придает ему наибольший вес (поэтому очень большой блок), которыйв свою очередь все остальные ящики становятся ничтожно малыми и побеждают цель.Студент также рассмотрел назначение очень большого КИ для Awkward - это дает Awkward маленькую коробку и сохраняет относительные пропорции других состояний, хотя «усы» для верхней и нижней границ Awkward ИЛИ становятся очень длинными.

Один из способов добиться желаемого эффекта на дисплее может состоять в том, чтобы потребовать очень большой CI (уменьшающий вес) для Awkward, и напечатать эту линию CI белым / прозрачным (поэтому не видимым);Я не знаю, как это сделать.(Я, как вы уже догадались, определенно новичок.)

library(forestplot)

# grafted from https://cran.r-project.org/web/packages/forestplot/vignettes/forestplot.html
##According to this Awkward doesn't have a confidence interval; entries of 0.1 and 30 are fictitious
Table1_19225_OR <- 
  structure(list(
    mean  = c(NA, NA, 6, 4.19, 3.11, 3.79, 13.20, 3.84, 2.32, 5.78, NA, 4.41, 5.99, 5.43), 
    lower = c(NA, NA, 0.1, 2.54, 1.39, 1.83, 6.25, 2.69, 1.04, 2.89, NA, 3.13, 4.65, 4.79),
    upper = c(NA, NA, 30, 6.91, 6.96, 7.85, 27.87, 5.49, 5.2, 11.54, NA, 6.23, 7.71, 6.14)),
    .Names = c("mean", "lower", "upper"), 
    row.names = c(NA, -14L), 
    class = "data.frame")
#State data pooled using random effects model
tabletext<-cbind(
  c("", "State", "Awkward", "Okay1", "Okay2", "Okay3",  "Okay4", "Okay5", "Okay6", "Okay7", NA, "State data", "National", "National"),
  c("Change", "Year", "1977", "1977", "1977", "1982", "1989", "1997", "2000", "2012", NA, "", "1995-2003", "2005-2008"),
  c("Odds", "Ratio", "6.00", "4.19", "3.11", "3.89", "13.20", "3.84", "2.32", "5.78", NA, "4.41", "5.99", "5.43"))

forestplot(tabletext, 
           hrzl_lines = gpar(col="#444444"),
           Table1_19225_OR, new_page = TRUE,
           is.summary=c(TRUE,TRUE,rep(FALSE,9),TRUE,FALSE,FALSE), #TRUE means bold
           clip=c(2, 14), 
           ci.vertices = TRUE,
           xlog=FALSE, 
           xticks = c(2.0, 4.0, 6.0, 8.0, 10, 12),
           grid=TRUE,
           xlab="95% CIs for Odds Ratio",
           col=fpColors(box="royalblue",line="darkblue", summary="royalblue"))

Изменения размера шрифта

own <-fpTxtGp () own #checking, чтобы увидеть значения по умолчанию-Я думаю, что они загружаются каждый раз, когда вы называете библиотеку лесных участков своей собственной $ xlab $ cex <- 1.25 #default равен 1, не уверен, какие единицы этой вещи, так что методом проб и ошибок владеют $ legend $ cex <- 0.8 #0,8, изменение этого значения, похоже, ничего не меняет на собственных лесных участках $ ticks $ cex <- 0,8 # по умолчанию 0,5, изменяет размер чисел по шкале CI </p>

1 Ответ

0 голосов
/ 24 марта 2019

Поскольку вы не можете точно знать доверительный интервал в вашем сценарии, я думаю, что проще всего просто изменить функцию доверительного интервала для обработки значений графика с отсутствующими данными. В приведенном ниже примере я проверяю NA в нижнем или верхнем углу, и если я не могу его найти, я строю grid.circle вместо grid.rect, который использует fpDrawnormalCI.

library(forestplot)

fn <- function(..., 
               y.offset = 0.5,
               lower_limit, estimate, upper_limit,
               clr.marker){
  if (is.na(lower_limit) || is.na(upper_limit)) {
    grid.circle(x = unit(estimate, "native"), y = y.offset, 
                r = unit(.1, "snpc"), 
                gp = gpar(fill = clr.marker, col = clr.marker))

  } else {
    # Forward otherwise to the default function
    fpDrawNormalCI(..., 
                   y.offset = y.offset,
                   lower_limit = lower_limit, 
                   estimate = estimate,
                   upper_limit = upper_limit,
                   clr.marker = clr.marker)
  }
}

# grafted from https://cran.r-project.org/web/packages/forestplot/vignettes/forestplot.html
##According to this Awkward doesn't have a confidence interval; entries of 0.1 and 30 are fictitious
Table1_19225_OR <- 
  structure(list(
    mean  = c(NA, NA, 6, 4.19, 3.11, 3.79, 13.20, 3.84, 2.32, 5.78, NA, 4.41, 5.99, 5.43), 
    lower = c(NA, NA, NA, 2.54, 1.39, 1.83, 6.25, 2.69, 1.04, 2.89, NA, 3.13, 4.65, 4.79),
    upper = c(NA, NA, NA, 6.91, 6.96, 7.85, 27.87, 5.49, 5.2, 11.54, NA, 6.23, 7.71, 6.14)),
    .Names = c("mean", "lower", "upper"), 
    row.names = c(NA, -14L), 
    class = "data.frame")
#State data pooled using random effects model
tabletext<-cbind(
  c("", "State", "Awkward", "Okay1", "Okay2", "Okay3",  "Okay4", "Okay5", "Okay6", "Okay7", NA, "State data", "National", "National"),
  c("Change", "Year", "1977", "1977", "1977", "1982", "1989", "1997", "2000", "2012", NA, "", "1995-2003", "2005-2008"),
  c("Odds", "Ratio", "6.00", "4.19", "3.11", "3.89", "13.20", "3.84", "2.32", "5.78", NA, "4.41", "5.99", "5.43"))

forestplot(tabletext, 
           Table1_19225_OR, 
           fn.ci_norm = fn,
           hrzl_lines = gpar(col="#444444"),
           new_page = TRUE,
           is.summary=c(TRUE,TRUE,rep(FALSE,9),TRUE,FALSE,FALSE), #TRUE means bold
           clip=c(2, 14), 
           ci.vertices = TRUE,
           xlog=FALSE, 
           xticks = c(2.0, 4.0, 6.0, 8.0, 10, 12),
           grid=TRUE,
           xlab="95% CIs for Odds Ratio",
           col=fpColors(box="royalblue",line="darkblue", summary="royalblue"))

А вот и сам сюжет:

forestplot output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...