通过多项式回归了解置信带


14

我试图理解我在下面的图中看到的结果。通常,我倾向于使用Excel并获得线性回归线,但在以下情况下,我使用R并通过以下命令获得多项式回归:

ggplot(visual1, aes(ISSUE_DATE,COUNTED)) + geom_point() + geom_smooth()

所以我的问题可以归结为:

  1. 蓝色回归线周围的灰色区域(箭头1)是什么?这是多项式回归的标准偏差吗?

  2. 我可以说灰色区域(箭头2)外部的任何东西都是“离群值”,而灰色区域(箭头3)内部的所有东西都在标准偏差之内吗?

在此处输入图片说明

Answers:


14

灰色带是回归线的置信带。我对ggplot2不够熟悉,无法确定它是1 SE置信带还是95%置信带,但我相信它是前者编辑:显然是95%CI)。置信带表示回归线的不确定性。从某种意义上讲,您可能会认为真实的回归线与该波段的顶部一样高,而与该​​波段的底部一样低,或者在波段内以不同的方式摆动。(请注意,此说明的目的是直观的,在技术上并不正确,但是对于大多数人来说,完全正确的说明很难理解。)

您应该使用置信带来帮助您了解/思考回归线。您不应使用它来考虑原始数据点。请记住,回归线代表平均值的在各点X(如果你需要更充分地理解这一点,它可以帮助你在这儿读我的答案:什么是有条件的高斯分布背后的直觉)。另一方面,您当然不希望每个观察到的数据点都等于条件均值。换句话说,您不应使用置信带来评估数据点是否为异常值。 YX


编辑:本注释位于主​​要问题的外围,但旨在阐明OP的要点。

多项式回归并不是非线性回归,即使您得到的结果看起来并不像一条直线。术语“线性”在数学上下文中具有非常具体的含义,特别是您要估算的参数(β)都是系数。多项式回归仅表示您的协变量为X 2X 3XX2X3等,也就是说,它们彼此之间具有非线性关系,但是您的beta仍然是系数,因此它仍然是线性模型。如果您的Beta是指数,那么您将拥有一个非线性模型。

总而言之,一条直线是否看起来与模型是否线性无关。当您拟合多项式模型(例如使用X 2)时,该模型不会“知道”,例如X 2实际上只是X 1的平方。它“认为”这只是两个变量(尽管它可能认识到存在一些多重共线性)。因此,实际上它被拟合(直/平)回归平面在三维空间而不是(弯曲)回归线在二维空间中。这对于我们思考没有用,实际上,从X 2开始就很难看清XX2X2X1X2的完美函数。结果,我们不会以这种方式去考虑它,并且我们的图实际上是在X Y 平面上的二维投影。但是,在适当的空间中,该线实际上在某种意义上是“直的”。 X(X, Y)

从数学角度看,如果您要估计的参数是系数,则模型是线性的。为了进一步阐明,应考虑的标准之间的比较(OLS)线性回归模型,并在两种不同的形式呈现一个简单的逻辑回归模型:
LN π Ý

Y=β0+β1X+ε
ln(π(Y)1π(Y))=β0+β1X
π(Y)=exp(β0+β1X)1+exp(β0+β1X)
βββ广义线性模型的,因为它可以重写为线性模型。有关此的更多信息,可能有助于在此处阅读我的答案:logit模型和probit模型之间的区别。)

+1文档中的示例向我暗示了很高的信心,也许是95%。
ub

@gung感谢您提供详细的答案(您也收到了支票!)。我读了你的第一句话,有点困惑。您能否详细说明一下。如果结果线不是直线(y = mx + b),那么什么使它线性?再次感谢您的回答。
adhg 2014年

docs.ggplot2.org/0.9.3.1/stat_smooth.html上的文档断言,回归曲线的置信度为95%。
whuber

2
我认为这里使用的是默认的更平滑的黄土,而不是多项式回归?
xan 2014年

@adhg,我以为我已经在其他地方介绍了线性与非线性,但我找不到。所以我在这里添加了一些额外的材料。HTH
宫-恢复莫妮卡

11

要添加到已经存在的答案中,带表示均值的置信区间,但是显然您从问题中寻找预测区间。预测间隔是一个范围,如果您绘制一个新点,则理论上该点将包含在X%的时间范围内(可以在其中设置X的水平)。

library(ggplot2)
set.seed(5)
x <- rnorm(100)
y <- 0.5*x + rt(100,1)
MyD <- data.frame(cbind(x,y))

我们可以生成与您在初始问题中显示的图相同类型的图,其置信区间在平滑的黄土回归线的平均值附近(默认值为95%的置信区间)。

ConfiMean <- ggplot(data = MyD, aes(x,y)) + geom_point() + geom_smooth()
ConfiMean

在此处输入图片说明

对于预测间隔的快速且肮脏的示例,在这里,我使用带有平滑样条的线性回归来生成预测间隔(因此它不一定是直线)。使用示例数据,效果很好,对于100个点,只有4个不在范围内(我在预测函数上指定了90%的间隔)。

#Now getting prediction intervals from lm using smoothing splines
library(splines)
MyMod <- lm(y ~ ns(x,4), MyD)
MyPreds <- data.frame(predict(MyMod, interval="predict", level = 0.90))
PredInt <- ggplot(data = MyD, aes(x,y)) + geom_point() + 
           geom_ribbon(data=MyPreds, aes(x=fit,ymin=lwr, ymax=upr), alpha=0.5)
PredInt

在此处输入图片说明

现在再来一些笔记。我同意Ladislav的观点,您应该考虑使用时间序列预测方法,因为自2007年某个时候开始就有常规序列,并且从图中可以明显看出,如果您看上去很辛苦,那应该是季节性的(将这些点联系起来会更加清楚)。为此,我建议您检查一下预报包中的Forecast.stl函数,您可以在其中选择一个季节性窗口,它使用Loess可以对季节性和趋势进行可靠的分解。我提到健壮的方法,因为您的数据有一些明显的峰值。

对于非时间序列数据,如果您的数据偶尔有异常值,我会考虑使用其他可靠的方法。我不知道如何直接使用Loess生成预测间隔,但是您可以考虑分位数回归(取决于预测间隔的极端程度)。否则,如果您只想拟合为可能的非线性,则可以考虑样条曲线,以使函数在x上变化。


4

好吧,蓝线是平滑的局部回归线。您可以通过span参数(从0到1)控制线的摆动。但是您的示例是“时间序列”的,因此请尝试寻找一些更合适的分析方法,而不是仅仅拟合平滑曲线(这只应显示可能的趋势)。

根据文档ggplot2(并在下面的评论中):stat_smooth是用灰色显示的平滑度的置信区间。如果要关闭置信区间,请使用se = FALSE。


1
(1)在您的参考文献中,我看不到它声称灰色区域是逐点置信区间。从示例中可以很明显地看出,灰色区域是曲线的置信区间。(2)没有人会合理地将灰色区域以外的大部分分数声明为“离群值”;他们太多了。
ub

(1)我的错误,在此我添加一本书,涉及“逐点置信区间”:Wickham H(2009)ggplot2用于数据分析的优雅图形。媒体212。(第14页)。(2)我同意。
LadislavNaďo2014年

您的参考文献中有没有陈述默认的置信度设置为什么?
ub

不,我找不到有关默认设置的任何参考。
LadislavNaďo2014年

我在参考的第一页上找到了默认值:“(默认值为0.95)”。也就是说,要么这种平滑有严重错误,否则你参考的解释是错误的方法:由于数据点,如此大的比例通常在于超越灰色地带并假设代码是正确的,灰色区域具有成为置信区域预测(拟合曲线),而不是点的置信区域。
whuber
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.