Answers:
灰色带是回归线的置信带。我对ggplot2不够熟悉,无法确定它是1 SE置信带还是95%置信带,但我相信它是前者(编辑:显然是95%CI)。置信带表示回归线的不确定性。从某种意义上讲,您可能会认为真实的回归线与该波段的顶部一样高,而与该波段的底部一样低,或者在波段内以不同的方式摆动。(请注意,此说明的目的是直观的,在技术上并不正确,但是对于大多数人来说,完全正确的说明很难理解。)
您应该使用置信带来帮助您了解/思考回归线。您不应使用它来考虑原始数据点。请记住,回归线代表平均值的在各点X(如果你需要更充分地理解这一点,它可以帮助你在这儿读我的答案:什么是有条件的高斯分布背后的直觉)。另一方面,您当然不希望每个观察到的数据点都等于条件均值。换句话说,您不应使用置信带来评估数据点是否为异常值。
(编辑:本注释位于主要问题的外围,但旨在阐明OP的要点。)
多项式回归并不是非线性回归,即使您得到的结果看起来并不像一条直线。术语“线性”在数学上下文中具有非常具体的含义,特别是您要估算的参数(β)都是系数。多项式回归仅表示您的协变量为,X 2,X 3等,也就是说,它们彼此之间具有非线性关系,但是您的beta仍然是系数,因此它仍然是线性模型。如果您的Beta是指数,那么您将拥有一个非线性模型。
总而言之,一条直线是否看起来与模型是否线性无关。当您拟合多项式模型(例如使用和X 2)时,该模型不会“知道”,例如X 2实际上只是X 1的平方。它“认为”这只是两个变量(尽管它可能认识到存在一些多重共线性)。因此,实际上它被拟合(直/平)回归平面在三维空间而不是(弯曲)回归线在二维空间中。这对于我们思考没有用,实际上,从X 2开始就很难看清是的完美函数。结果,我们不会以这种方式去考虑它,并且我们的图实际上是在(X ,Y )平面上的二维投影。但是,在适当的空间中,该线实际上在某种意义上是“直的”。
从数学角度看,如果您要估计的参数是系数,则模型是线性的。为了进一步阐明,应考虑的标准之间的比较(OLS)线性回归模型,并在两种不同的形式呈现一个简单的逻辑回归模型:
LN (π (Ý )
要添加到已经存在的答案中,带表示均值的置信区间,但是显然您从问题中寻找预测区间。预测间隔是一个范围,如果您绘制一个新点,则理论上该点将包含在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上变化。
好吧,蓝线是平滑的局部回归线。您可以通过span
参数(从0到1)控制线的摆动。但是您的示例是“时间序列”的,因此请尝试寻找一些更合适的分析方法,而不是仅仅拟合平滑曲线(这只应显示可能的趋势)。
根据文档ggplot2
(并在下面的评论中):stat_smooth是用灰色显示的平滑度的置信区间。如果要关闭置信区间,请使用se = FALSE。