R 2.5%和5%阴影的密度图
我想尝试用R再现以下图像。目标是将单面和双面假设表示为.025和.95水平,类似于下图: 我设法利用其他问题的资源在分位数内创建了一个阴影,但我希望它位于边界之外,而不是内部。守则:R 2.5%和5%阴影的密度图,r,ggplot2,R,Ggplot2,我想尝试用R再现以下图像。目标是将单面和双面假设表示为.025和.95水平,类似于下图: 我设法利用其他问题的资源在分位数内创建了一个阴影,但我希望它位于边界之外,而不是内部。守则: set.seed(1) draws <- rnorm(1000000) dens <- density(draws) q025 <- quantile(draws, .025) q975 <- quantile(draws, .975) dd <- with(dens, data
set.seed(1)
draws <- rnorm(1000000)
dens <- density(draws)
q025 <- quantile(draws, .025)
q975 <- quantile(draws, .975)
dd <- with(dens, data.frame(x, y))
library(ggplot2)
qplot(x, y, data = dd, geom="line") +
geom_ribbon(data = subset(dd, x > q025 & x < q975),
aes(ymax = y),
ymin = 0, fill = "red", colour = NA, alpha = 0.5)
set.seed(1)
绘制这有点笨重,但似乎有效;注意,填充不是很完美
set.seed(1)
draws <- data.frame(x = rnorm(1000000))
q025 <- quantile(draws$x, .025)
q975 <- quantile(draws$x, .975)
ggplot(draws, aes(x)) +
geom_density() +
stat_function(fun = dnorm, xlim = c(min(draws$x), q025), geom = "area") +
stat_function(fun = dnorm, xlim = c(q975, max(draws$x)), geom = "area")
set.seed(1)
绘制
set.seed(1)
draws <- rnorm(1000000)
dd <- data.frame(x = draws, y = dnorm(draws))
q025 <- quantile(draws$x, .025)
q975 <- quantile(draws$x, .975)
ggplot(dd, aes(x, y)) +
geom_line() +
stat_function(fun = dnorm, xlim = c(min(draws$x), q025), geom = "area") +
stat_function(fun = dnorm, xlim = c(q975, max(draws$x)), geom = "area")