繁体   English   中英

ggplot2的geom_smooth()是否显示逐点置信带或同时置信带?

[英]Does geom_smooth() of ggplot2 show pointwise confidence bands, or simultaneous confidence bands?

我不确定这个问题在此处还是在交叉验证时是否更合适。 我希望我做出了正确的选择。

考虑示例:

library(dplyr)
setosa <- iris %>% filter(Species == "setosa") %>% select(Sepal.Length, Sepal.Width, Species)
library(ggplot2)
ggplot(data = setosa, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point() +
geom_smooth(method ="lm", formula = y ~ poly(x,2))

在此处输入图片说明 默认情况下, ggplot “显示平滑周围的置信区间”(请参见此处 ),由回归曲线周围的灰色区域给出。 我一直假设这些是回归曲线的同时置信带 ,而不是点状置信带。 ggplot2文档参考了predict函数,以获取有关如何计算标准误差的详细信息。 但是,在阅读有关predict.lm的文档时,并没有明确说要同时计算置信带。 那么,这里的正确解释是什么?

检查predict.lm()计算的一种方法是检查代码( predict将标准误差乘以qt((1 - level)/2, df) ,因此似乎无法为同时推断进行调整)。 另一种方法是构造同时置信区间,并将其与predict的区间进行比较。

拟合模型并构造同时置信区间:

setosa <- subset(iris, Species == "setosa")
setosa <- setosa[order(setosa$Sepal.Length), ]
fit <- lm(Sepal.Width ~ poly(Sepal.Length, 2), setosa)

K <- cbind(1, poly(setosa$Sepal.Length, 2))
cht <- multcomp::glht(fit, linfct = K)
cci <- confint(cht)

重塑和绘制:

cc <- as.data.frame(cci$confint)
cc$Sepal.Length <- setosa$Sepal.Length
cc <- reshape2::melt(cc[, 2:4], id.var = "Sepal.Length")

library(ggplot2)
ggplot(data = setosa, aes(x = Sepal.Length, y = Sepal.Width)) +
  geom_point() +
  geom_smooth(method ="lm", formula = y ~ poly(x,2)) +
  geom_line(data = cc, 
            aes(x = Sepal.Length, y = value, group = variable),
            colour = "red")

似乎predict(.., interval = "confidence")不会同时产生置信区间:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM