- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 LOESS 平滑时,我无法理解如何在 ggplot2
中计算置信区间。从其他几个线程中,我的理解是 ggplot2
使用基于回归标准误差计算的 t 间隔,即使用实际数据点与 LOESS 线之间的距离。但我认为,根据 ggplot2
产生的置信区间,我一定是弄错了。这是示例代码(在这种情况下实际上是 qplot
,但我认为结果应该是相同的):
qplot(Year, Purposivism, data=fig1.dat, geom=c('point', 'smooth'), level=0.99, span=0.5, method='loess', ylab="Term Frequency per Million Words") +
theme_bw() +
theme(text=element_text(family="Century", size=12)) +
expand_limits(y = 0) +
scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) +
theme(axis.text.x = element_text(angle = 45, hjust=1))
这是结果图:
在图表的左侧(例如,1920-1940 年),点紧紧围绕 LOESS 线排列,并且大部分位于置信区间内。但从 1960 年到 1980 年左右,它们无处不在,但置信区间的宽度似乎大致相同。我想我一定是误解了 CI 的工作原理,因为这看起来不直观。
在此先感谢您的帮助!很高兴提供任何其他可能有用的信息。
最佳答案
您可能感到困惑的地方在于置信区间和预测区间之间的差异。 geom_smooth
中使用的置信区间是估计均值的预测置信度。这是衡量观察值的平均值与点估计值的偏差程度。在 predict.lm
中,有一个选项可以添加 interval = "prediction"
,这将为您提供预测区间。预测区间包含来自 y ~ x %*% beta + epsilon
的误差项的不确定性,而置信区间仅包含来自 y ~ x %*% beta 的固定效应不确定性
。我没有研究过 loess
曲线和其他非参数和半参数平滑器的预测区间,但它似乎没有在 ?predict.loess
中实现p>
我们可以说明 geom_smooth
如何通过手动计算来估计置信区间。让我们从使用最无聊的可重现示例开始。 stats
包中的 mtcars
(包含在基础 R
中)。
data(mtcars)
fit <- loess(mpg ~ hp, data = mtcars)
preds <- predict(fit, se = TRUE)
names(preds)
#[1] "fit" "se.fit" "residual.scale" "df"
为了计算置信区间,我们使用您正确指定的标准公式。
T <- qt(p = 0.975, df = preds$df)
lwr <- preds$fit - T * preds$se.fit
upr <- preds$fit + T * preds$se.fit
为了创建正确的置信区间图,我将所有必要的信息合并到一个 data.frame
中,同时对输入进行排序,以确保正确的行顺序。
ord <- order(mtcars$hp)
plotData <- data.frame(lwr = lwr[ord],
upr = upr[ord],
fit = preds$fit[ord],
hp = mtcars$hp[ord],
mpg = mtcars$mpg[ord])
最后但同样重要的是,我们只需要创建绘图,并将其与 ggplot2
p1 <- ggplot(plotData, aes(x = hp, ymax = upr, ymin = lwr)) +
#Data points
geom_point(aes(y = mpg)) +
#Line from prediction
geom_line(aes(y = fit)) +
#Points from prediction
geom_point(aes(y = fit)) +
#Confidence interval
geom_ribbon(alpha = 0.3, col = "thistle1") +
labs(title = "manual")
p2 <- ggplot(mtcars, aes(x = hp, y = mpg)) +
geom_point() +
geom_smooth() +
labs(title = "ggplot2")
#Merge plots
library(gridExtra)
grid.arrange(p1, p2, ncol = 1)
除了由 ggplot
完成的一些平滑处理,以及为拟合值添加的点外,这很容易看出是相同的。
我希望这清楚了如何计算点置信区间。
关于r - qqplot2 中的 LOESS 置信区间过窄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58041940/
我需要平滑一些模拟数据,但是当要平滑的模拟纵坐标大多是相同的值时,偶尔会遇到问题。这是最简单情况的一个可重现的小示例。 > x y loess.smooth(x,y) Error in simpl
我在使用 loess 时遇到问题和 loess.smooth带有缺失数据的时间序列。 这两个命令都不适用于此玩具数据。 x 1)。 关于r - "loess"缺失数据的时间序列,我们在Stack Ov
我的结果是 NA。我做错了什么? data(Boston, package='MASS') x <- Boston$dis y <- Boston$nox n <- length(x) cvs <-
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭去年。 Im
在使用 LOESS 平滑时,我无法理解如何在 ggplot2 中计算置信区间。从其他几个线程中,我的理解是 ggplot2 使用基于回归标准误差计算的 t 间隔,即使用实际数据点与 LOESS 线之间
我试图了解 predict.loess函数能够计算点 y_hat 处的新预测值 ( x )原始数据中不存在的。例如(这是一个简单的例子,我意识到这种例子显然不需要黄土,但它说明了这一点): x 1,
如果我有一些 (x,y) 数据,我可以轻松地通过它绘制直线,例如 f=glm(y~x) plot(x,y) lines(x,f$fitted.values) 但是对于曲线数据,我想要一条曲线。似乎可以
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我正在尝试用 Python 来做 R 上的 STL 函数。 R命令是 fit <- stl(elecequip, s.window=5) plot(fit) 我如何在 Python 中执行此操作?我调
如何在 python 中拟合局部加权回归,以便它可以用于预测新数据? 有 statsmodels.nonparametric.smoothers_lowess.lowess,但它只返回原始数据集的估计
我正在尝试使用 loess 拟合模型,但出现错误,例如“3 处使用的伪逆”、“邻域半径 1”和“倒数条件数 0”。这是一个 MWE: x = 1:19 y = c(NA,71.5,53.1,53.9,
我有一个数据集,其中包含一些点,并且想要在其上拟合一条线。我用loess函数尝试过。不幸的是我得到了非常奇怪的结果。请参阅下面的情节。我期望一条线能够更多地穿过这些点并贯穿整个情节。我怎样才能做到这一
好吧,我挥舞着我的白旗。 我正在尝试对我的数据集计算 loess 回归。 我希望 loess 计算一组不同的点,这些点绘制为每个组的平滑线。 问题是 loess 计算逃避了 dplyr::group_
我正在使用平滑器来检查事件发生的概率如何取决于时间 ods graphics on; proc loess data=final plots(only MAXPOINTS=NONE)=FITPLOT;
召集所有专家研究局部回归和/或R! 我在 R 中遇到了标准 loess 函数的限制,希望您能给我一些建议。当前的实现仅支持 1-4 个预测器。让我列出我们的应用场景,以说明为什么一旦我们想要使用全局拟
我正在 R 中运行 LOESS 回归,并且在我的一些较小的数据集上遇到了警告。 警告信息: 1: In simpleLoess(y, x, w, span, degree = degree, para
我对此很陌生,实际上我并不理解绘图方法之间的差异,但是考虑到我有一个小尺寸的图表,loess似乎给了我最丰富的信息。数据集(n=~300)。我正在尝试使用 facet_wrap 按性别拆分数据,而 l
我想获取嘈杂的 2d 数据并使用 LOESS 平滑来找到更平滑的 2D 表面。数据是r行c列的数据框或矩阵的形式。 'asbio' 包将为 n*n 数据绘制曲面图,我可以计算出如何使用 stats 基
我正在尝试使用泰坦尼克号的数据绘制二元选择 glm 的模型预测与经验概率的关系图。为了显示类(Class)和性别之间的差异,我使用了分面,但有两件事我不太明白。首先,我想将黄土曲线限制在 0 和 1
尝试在 R 中使用 MA 规范化 (http://en.wikipedia.org/wiki/MA_plot) 对两个变量 x 和 y 做 loess,如下所示: > x = rnorm(100) +
我是一名优秀的程序员,十分优秀!