[英]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.