gpt4 book ai didi

减少 R 中 ggplot 的主轴和 CI

转载 作者:行者123 更新时间:2023-12-04 22:24:37 27 4
gpt4 key购买 nike

无论如何要向ggplot添加减少的主轴(最好是CI)?我知道我可以使用 method="lm"来拟合 OLS,但似乎没有 RMA 的默认方法。我可以从包 lmodel2 中获得 RMA coefs 和 CI 间隔,但是用 geom_abline() 添加它们似乎不起作用。这是虚拟数据和代码。我只想用 RMA 线和 CI 替换 OLS 线和 CI:

dat <- data.frame(a=log10(rnorm(50, 30, 10)), b=log10(rnorm(50, 20, 2)))

ggplot(dat, aes(x=a, y=b) ) +
geom_point(shape=1) +
geom_smooth(method="lm")

Edit1:下面的代码获取 RMA(这里称为 SMA - 标准化主轴)系数和 CI。包 lmodel2 提供更详细的输出,而包 smatr 仅返回系数和 CI,如果有帮助的话:
library(lmodel2)
fit1 <- lmodel2(b ~ a, data=dat)

library(smatr)
fit2 <- line.cis(b, a, data=dat)

最佳答案

正如 Chase 所评论的,您使用的实际 lmodel2() 代码和 ggplot 代码会有所帮助。但这里有一个例子可以为您指明正确的方向:

dat <- data.frame(a=log10(rnorm(50, 30, 10)), b=log10(rnorm(50, 20, 2)))
mod <- lmodel2(a ~ b, data=dat,"interval", "interval", 99)

#EDIT: mod is a list, with components (data.frames) regression.results and
# confidence.intervals containing the intercepts+slopes for different
# estimation methods; just put the right values into geom_abline
ggplot(dat,aes(x=b,y=a)) + geom_point() +
geom_abline(intercept=mod$regression.results[4,2],
slope=mod$regression.results[4,3],colour="blue") +
geom_abline(intercept=mod$confidence.intervals[4,2],
slope=mod$confidence.intervals[4,4],colour="red") +
geom_abline(intercept=mod$confidence.intervals[4,3],
slope=mod$confidence.intervals[4,5],colour="red") +
xlim(c(-10,10)) + ylim(c(-10,10))

完全披露:我对 RMA 回归一无所知,所以我只是提取了相关的斜率和截距并将它们放入 geom_abline() 中,使用 lmodel2 中的一些示例代码作为指导。在这个玩具示例中生成的 CI 似乎没有多大意义,因为我不得不使用 xlim()ylim() 强制 ggplot 缩小才能看到 CI 线(红色)。

但也许这会帮助您在 ggplot() 中构建一个工作示例。

EDIT2:随着 OP 添加代码来提取系数, ggplot() 将是这样的:
ggplot(dat,aes(x=b,y=a)) + geom_point() + 
geom_abline(intercept=fit2[1,1],slope=fit2[2,1],colour="blue") +
geom_abline(intercept=fit2[1,2],slope=fit2[2,2],colour="red") +
geom_abline(intercept=fit2[1,3],slope=fit2[2,3],colour="red")

关于减少 R 中 ggplot 的主轴和 CI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6103288/

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