gpt4 book ai didi

r - 如何在 R 中创建优势比和 95% CI 图

转载 作者:行者123 更新时间:2023-12-04 10:06:27 25 4
gpt4 key购买 nike

我估计了 6 种污染物在 4 个滞后期内对应的 95% CI 的优势比。如何创建类似于 R 中附图的垂直图?下图是在SPSS中创建的。
生成该图的示例数据如下:

lag pollut  or  lcl ucl
0 CO 0.97 0.90 1.06
0 PM10 1.00 0.91 1.09
0 NO 0.97 0.92 1.02
0 NO2 1.01 0.89 1.15
0 SO2 0.97 0.85 1.11
0 Ozone 1.00 0.87 1.15
1 CO 1.03 0.95 1.10
1 PM10 0.93 0.86 1.01
1 NO 1.01 0.97 1.06
1 NO2 1.08 0.97 1.20
1 SO2 0.94 0.84 1.04
1 Ozone 0.94 0.84 1.04
2 CO 1.09 1.02 1.16
2 PM10 1.04 0.96 1.13
2 NO 1.04 1.00 1.08
2 NO2 1.07 0.96 1.18
2 SO2 1.05 0.95 1.17
2 Ozone 0.93 0.84 1.03
3 CO 0.98 0.91 1.06
3 PM10 1.14 1.05 1.24
3 NO 0.99 0.95 1.04
3 NO2 1.01 0.91 1.12
3 SO2 1.11 1.00 1.23
3 Ozone 1.00 0.90 1.11

最佳答案

假设您的数据在 datf ...

我会先把它按你想要的顺序排序。

datf <- datf[order(datf$pollut, datf$lag), ]

您需要在每个实验室分组前后留一个空格,因此我会在其中添加一些额外的 NA 行。这使得它更容易,因为这样你的绘图调用中会自动有空白。
datfPlusNA <- lapply(split(datf, datf$pollut), function(x) rbind(NA, x, NA))
datf <- do.call(rbind, datfPlusNA)

现在您已经对 data.frame 进行了排序,并且有了额外的 NA,绘图就很容易了。
nr <- nrow(datf)  # find out how many rows all together
with(datf, {# this allows entering your commands more succinctly
# first you could set up the plot so you can select the order of drawing
plot(1:nr, or, ylim = c(0.8, 1.3), type = 'n', xaxt = 'n', xlab = '', ylab = 'Odds Ratio and 95% CI', frame.plot = TRUE, panel.first = grid(nx = NA, ny = NULL))
# arrows(1:nr, lcl, 1:nr, ucl, length = 0.02, angle = 90, code = 3, col = factor(lag))
# you could use arrows above but you don't want ends so segments is easier
segments(1:nr, lcl, 1:nr, ucl, col = factor(lag))
# add your points
points(1:nr, or, pch = 19, cex = 0.6)
xLabels <- na.omit(unique(pollut))
axis(1, seq(4, 34, by = 6) - 0.5, xLabels)
})
abline(h = 1.0)

有一些包可以让这种事情变得更容易,但如果你能像这样做,你就可以开始做你能想象的任何图形。

关于r - 如何在 R 中创建优势比和 95% CI 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13386177/

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