gpt4 book ai didi

r - 如果可能,在 R - 基 R 中着色置信区间

转载 作者:行者123 更新时间:2023-12-02 07:21:53 28 4
gpt4 key购买 nike

我正在比较使用 LOESS 回归的两条线。我想清楚地显示两条线的置信区间,我遇到了一些困难。

我尝试过使用各种线型和颜色,但在我看来,结果仍然是忙碌和凌乱。我认为置信区间之间的阴影可能会使事情变得更清晰,但是考虑到我的编码到目前为止的结构,我在解决这个问题时遇到了一些困难。我已经包含了生成的图、Analysis5k 和 Analysis5kz 两组的数据,以及到目前为止的代码。

我看到了一些示例,其中两个多边形重叠以显示置信区间重叠的位置,这似乎是呈现数据的好方法。如果有一种方法可以在两个置信区间共享的区域中绘制多边形,那可能是呈现数据的另一种好方法。

我了解如何制作多边形的基本概念,但我发现的示例已应用于更简单的线条和数据。到目前为止,对于一些糟糕的组织来说,部分原因是我自己的错,但由于这一步基本上是我数据呈现的最后润色,我真的不想从头开始重新工作。

非常感谢任何帮助或见解。

更新

我更新了标题。我收到了一些使用 ggplot 的好例子,虽然我想在未来使用 ggplot,但到目前为止我只处理了基础 R。对于这个特定的项目,如果可能的话,想尝试将其保留在基础 R 中。 plot without shading

分析5k

Period  15p5    Total_5plus
-4350 0.100529101 12.6
-3900 0.4 20
-3650 0.0625 9.6
-3900 0.126984127 16.8
-3958 0.133333333 5
-4350 0.150943396 10.6
-3400 0.146341463 8.2
-3650 0.255319149 9.4
-3400 0.222222222 9
-3500 0.245014245 39
-3600 0.125 8
-3808 0.1 20
-3900 0.160493827 18
-3958 0.238095238 7
-4058 0.2 5
-3500 0.086956522 28.75
-4117 0.141414141 6.6
-4350 0.171038825 31.76666667
-4350 0.166666667 6
-3650 0.143798024 30.36666667
-2715 0.137931034 7.25
-4350 0.235588972 26.6
-3500 0.228840125 79.75
-4350 0.041666667 8
-3650 0.174757282 20.6
-2715 0.377777778 11.25
-3500 0.2 7.5
-3650 0.078947368 7.6
-3400 0.208333333 24
-4233 0.184027778 19.2
-3650 0.285714286 12.6
-4350 0.166666667 6

分析5kz

Period  15p5    Total_5plus
-4350 0.100529101 12.6
-4350 0 5
-3900 0.4 20
-3650 0.0625 9.6
-3400 0 6
-3900 0.126984127 16.8
-3958 0.133333333 5
-4350 0.150943396 10.6
-3400 0.146341463 8.2
-3650 0.255319149 9.4
-3400 0.222222222 9
-3500 0.245014245 39
-3600 0.125 8
-3650 0 28
-3808 0.1 20
-3900 0.160493827 18
-3958 0.238095238 7
-4058 0.2 5
-3500 0 25
-3500 0.086956522 28.75
-4117 0.141414141 6.6
-4350 0.171038825 31.76666667
-4350 0.166666667 6
-3650 0.143798024 30.36666667
-2715 0.137931034 7.25
-4350 0.235588972 26.6
-3500 0.228840125 79.75
-4350 0.041666667 8
-3500 0 5
-3650 0.174757282 20.6
-3800 0 9
-2715 0.377777778 11.25
-3500 0.2 7.5
-3650 0.078947368 7.6
-4117 0 8
-4350 0 8
-3400 0.208333333 24
-4233 0.184027778 19.2
-3025 0 7
-3650 0.285714286 12.6
-4350 0.166666667 6

代码

  ppi <- 300 
png("5+ KC shaded CI.png", width=6*ppi, height=6*ppi, res=ppi)
library(Hmisc)
Analysis5k <- read.csv(file.choose(), header = T)
Analysis5kz <- read.csv(file.choose(), header = T)
par(mfrow = c(1,1), pty = "s", oma=c(1,2,1,1), mar=c(4,4,2,2))
plot(X15p5 ~ Period, Analysis5kz, xaxt = "n", yaxt= "n", ylim=c(-0.2,0.7), xlim=c(-5000,-2500), xlab = "Years B.P.", ylab = expression(''[15]*'p'[5]), main = "")
vx <- seq(-5000,-2000, by = 500)
vy <- seq(-0.2,0.7, by = 0.1)
axis(1, at = vx)
axis(2, at = vy)
a5k <- order(Analysis5k$Period)
a5kz <- order(Analysis5kz$Period)
Analysis5k.lo <- loess(X15p5 ~ Period, Analysis5k, weights = Total_5plus, span = 0.6)
Analysis5kz.lo <- loess(X15p5 ~ Period, Analysis5kz, weights = Total_5plus, span = 0.6)
pred5k <- predict(Analysis5k.lo, se = TRUE)
pred5kz <- predict(Analysis5kz.lo, se = TRUE)
lines(Analysis5k$Period[a5k], pred5k$fit[a5k], col="blue", lwd=2)
lines(Analysis5kz$Period[a5kz], pred5kz$fit[a5kz], col="skyblue", lwd=2)
lines(Analysis5K$Period[a5K], pred5K$fit[a5K] - qt(0.975, pred5K$df)*pred5K$se[a5K],col="blue",lty=2)
lines(Analysis5K$Period[a5K], pred5K$fit[a5K] + qt(0.975, pred5K$df)*pred5K$se[a5K],col="blue",lty=2)
lines(Analysis5Kz$Period[a5Kz], pred5Kz$fit[a5Kz] - qt(0.975, pred5Kz$df)*pred5Kz$se[a5Kz],col="skyblue",lty=2)
lines(Analysis5Kz$Period[a5Kz], pred5Kz$fit[a5Kz] + qt(0.975, pred5Kz$df)*pred5Kz$se[a5Kz],col="skyblue",lty=2)
abline(h=0.173, lty=3)
abline(v=-4700, lty=3)
abline(v=-4000, lty=3)
abline(v=-3000, lty=3)
minor.tick(nx=5, ny=4, tick.ratio=0.5)
dev.off()

最佳答案

这是一个基于您的代码的基础图解决方案。

polygon 的诀窍在于,您必须在一个向量中提供 2 倍的 x 坐标,一次以正常顺序,一次以相反顺序(使用函数 rev)和您必须提供 y 坐标作为上界的向量,后跟以相反顺序的下界。

我们使用 adjustcolor 函数使标准颜色透明。

library(Hmisc) 
ppi <- 300
par(mfrow = c(1,1), pty = "s", oma=c(1,2,1,1), mar=c(4,4,2,2))
plot(X15p5 ~ Period, Analysis5kz, xaxt = "n", yaxt= "n", ylim=c(-0.2,0.7), xlim=c(-5000,-2500), xlab = "Years B.P.", ylab = expression(''[15]*'p'[5]), main = "")
vx <- seq(-5000,-2000, by = 500)
vy <- seq(-0.2,0.7, by = 0.1)
axis(1, at = vx)
axis(2, at = vy)
a5k <- order(Analysis5k$Period)
a5kz <- order(Analysis5kz$Period)
Analysis5k.lo <- loess(X15p5 ~ Period, Analysis5k, weights = Total_5plus, span = 0.6)
Analysis5kz.lo <- loess(X15p5 ~ Period, Analysis5kz, weights = Total_5plus, span = 0.6)
pred5k <- predict(Analysis5k.lo, se = TRUE)
pred5kz <- predict(Analysis5kz.lo, se = TRUE)

polygon(x = c(Analysis5k$Period[a5k], rev(Analysis5k$Period[a5k])),
y = c(pred5k$fit[a5k] - qt(0.975, pred5k$df)*pred5k$se[a5k],
rev(pred5k$fit[a5k] + qt(0.975, pred5k$df)*pred5k$se[a5k])),
col = adjustcolor("dodgerblue", alpha.f = 0.10), border = NA)

polygon(x = c(Analysis5kz$Period[a5kz], rev(Analysis5kz$Period[a5kz])),
y = c(pred5kz$fit[a5kz] - qt(0.975, pred5kz$df)*pred5kz$se[a5kz],
rev( pred5kz$fit[a5kz] + qt(0.975, pred5kz$df)*pred5kz$se[a5kz])),
col = adjustcolor("orangered", alpha.f = 0.10), border = NA)

lines(Analysis5k$Period[a5k], pred5k$fit[a5k], col="dodgerblue", lwd=2)
lines(Analysis5kz$Period[a5kz], pred5kz$fit[a5kz], col="orangered", lwd=2)

abline(h=0.173, lty=3)
abline(v=-4700, lty=3)
abline(v=-4000, lty=3)
abline(v=-3000, lty=3)
minor.tick(nx=5, ny=4, tick.ratio=0.5)

enter image description here

关于r - 如果可能,在 R - 基 R 中着色置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43692394/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com