Jako nadpis potřebuji nakreslit něco takového:
Může být použit ggplot nebo jiné balíčky, pokud ggplot není schopen, nakreslit něco takového ?
Jako nadpis potřebuji nakreslit něco takového:
Může být použit ggplot nebo jiné balíčky, pokud ggplot není schopen, nakreslit něco takového ?
Pokud hledáte tento (metaanalýzový) typ grafu trychtýře, může být výchozím bodem následující:
knihovna (ggplot2) sada .seed (1) p <- runif (100) number <- sample (1: 1000, 100, replace = TRUE) p.se <- sqrt ((p * (1-p)) / (number)) df < - data.frame (p, number, p.se) ## společný efekt (model s pevným efektem) p.fem <- weighted.mean (p, 1 / p.se ^ 2) ## dolní a horní hranice pro 95% a 99,9% CI, na základě odhadovaného počtu FEM. seq <- seq (0,001, max (number), 0,1) number.ll95 <- p.fem - 1,96 * sqrt ((p.fem * (1-p.fem)) / (number.seq)) number.ul95 <- p.fem + 1,96 * sqrt ((p.fem * (1-p.fem)) / (number.seq)) number.ll999 <- p.fem - 3,29 * sqrt ((p.fem * (1-p.fem)) / (number.seq)) number.ul999 <- p.fem + 3,29 * sqrt ((p.fem * (1-p.fem)) / (number.seq)) dfCI <- data.frame (number.ll95, number.ul95, number.ll999, number.ul999, number.seq, p.fem) ## draw plotfp <- ggplot (a es (x = číslo, y = p), data = df) + geom_point (tvar = 1) + geom_line (aes (x = number.seq, y = number.ll95), data = dfCI) + geom_line (aes (x = number.seq, y = number.ul95), data = dfCI) + geom_line (aes (x = number.seq, y = number.ll999), linetype = "dashed", data = dfCI) + geom_line (aes (x = number.seq, y = number.ul999), linetype = "dashed", data = dfCI) + geom_hline (aes (yintercept = p.fem), data = dfCI) + scale_y_continuous (limity = c (0,1.1)) + xlab ("number") + ylab ("p") + theme_bw () fp
Ačkoli existuje prostor pro zlepšení, zde je malý pokus se simulovanými (heteroscedastickými) daty:
knihovna (ggplot2) set.seed (101) x <- runif (100, min = 1, max = 10) y <- rnorm (délka (x), průměr = 5, sd = 0,1 * x) df <- data.frame (x = x * 70, y = y) m <- lm (y ~ x, data = df) fit95 <- předpovědět (m, interval = "conf", úroveň = 0,95) fit99 <- předpovědět (m, interval = "conf", úroveň = 0,999) df <- cbind.data.frame (df, lwr95 = fit95 [, "lwr"], upr95 = fit95 [, "upr"], lwr99 = fit99 [, "lwr"], upr99 = fit99 [, "upr"]) p <- ggplot (df, aes (x, y)) p + geom_point () + geom_smooth (metoda = "lm", barva = "černá", lwd = 1,1, se = FALSE) + geom_line (aes (y = upr95), barva = "černá" , typ čáry = 2) + geom_line (aes (y = lwr95), barva = "černá", typ čáry = 2) + geom_line (aes (y = upr99), barva = "červená", typ čáry = 3) + geom_line (aes ( y = lwr99), color = "red", typ čáry = 3) + anotace ("text", 100, 6,5, štítek = "95% limit ", color =" black ", size = 3, hjust = 0) + anotace (" text ", 100, 6,4, label =" 99,9% limit ", color =" red ", size = 3, hjust = 0) + laboratoře (x = "Ne. přijetí ... ", y =" Procento pacientů ... ") + theme_bw ()
Viz také balíček jeřábů berryFunctions, který má funnelPlot pro proporce bez použití ggplot2, pokud to někdo potřebuje v základní grafice. http://cran.r-project.org/web/packages/berryFunctions/index .html
Existuje také balíček extfunnel, který jsem nezkoumal.
Kód Bernda Weissa je velmi užitečný. Níže jsem provedl několik pozměňovacích návrhů, abych změnil / přidal několik funkcí:
geom_segment
místo geom_line
pro čáru ohraničující metaanalytický průměr, takže by měla stejnou výšku jako čáry ohraničující oblasti spolehlivosti 95% a 99% Můj kód používá jako příklad metaanalytický průměr 0,0892 (se = 0,0035), ale můžete nahradit své vlastní hodnoty.
odhad = 0,0892se = 0,0035 # Uložte ve své datové sadě vektor hodnot, který zahrnuje rozsah od 0 # do maximální hodnoty zobrazení (standardní chyba). # Proveďte přírůstek (konečný hodnota) dostatečně malý (zvolím 0,001) # aby bylo zajištěno, že bude zachycen celý váš rozsah dat se.seq = seq (0, max (dat $ corr_zi_se), 0,001) # výpočetní vektory dolní a horní mezní hodnoty pro # 95% CI regionll95 = odhad- (1,96 * se.seq) ul95 = odhad + (1,96 * se.seq) # Udělejte to pro 99% CI region tooll99 = odhad- (3,29 * se.seq) ul99 = odhad + (3,29 * se.seq) # A konečně vypočítejte interval spolehlivosti pro váš metaanalytický odhad meanll95 = odhad- (1,96 * se) průměrný95 = odhad + (1,96 * se) # Vložte všechny vypočítané hodnoty do jednoho datového rámce # Může se zobrazit varování o '... názvy řádků byly nalezeny z krátké proměnné ...' # Můžete to ignorovat. dfCI = data.frame (ll95, ul95, ll99, ul99, se.seq, odhad, meanll95, meanul95) #Draw Plotfp = ggplot (aes (x = se, y = Zr), data = dat) + geom_point (tvar = 1) + xlab ('Sta ndard Error ') + ylab (' Zr ') + geom_line (aes (x = se.seq, y = ll95), linetype =' dotted ', data = dfCI) + geom_line (aes (x = se.seq, y = ul95), typ čáry = 'tečkovaný', data = dfCI) +
geom_line (aes (x = se.seq, y = ll99), typ čáry = 'přerušovaný', data = dfCI) + geom_line (aes (x = se.seq, y = ul99), typ řádku = 'přerušovaný', data = dfCI ) + geom_segment (aes (x = min (se.seq), y = meanll95, xend = max (se.seq), yend = meanll95), typ čáry = 'tečkovaný', data = dfCI) + geom_segment (aes (x = min (se.seq), y = meanul95, xend = max (se.seq), yend = meanul95), typ čáry = 'tečkovaný', data = dfCI) + scale_x_reverse () + scale_y_continuous (break = seq (-1,25,2 , 0,25)) + coord_flip () + theme_bw () fp