LOESS 置信区间取决于点数
LOESS confidence intervals depend on the number of points
让我们构建一个带有一些“噪音”的线性趋势如下:
X <- seq(0,20,1); Y <- X/4 + sin(X); plot(X,Y)
现在我用 loess
平滑数据集并用 qt
和黄土标准误差绘制“95% 置信区间”:
X.pred <- seq(0, 20, length.out = 1000) # To have smooth lines
Fit <- predict(loess(Y ~ X, span = 0.75), newdata = X.pred, se = TRUE)
lines(X.pred, Fit$fit)
lines(X.pred, Fit$fit + qt(0.975, Fit$df) * Fit$se.fit, lty = 3)
lines(X.pred, Fit$fit - qt(0.975, Fit$df) * Fit$se.fit, lty = 3)
结果非常直观,下方趋势清晰可见,“波段”几乎覆盖了所有点(符合 95% 置信区间的预期)。
当我们有很多点需要拟合时,问题就出现了。让我们将点数增加 10 倍:
X <- seq(0, 20, 0.1); Y <- X/4 + sin(X); plot(X, Y)
当我 运行 使用与上面相同的脚本时,带现在很窄,显然没有覆盖 95% 的点。我怎样才能获得“直观的”loess
95% 的条带,而不考虑拟合点的数量?
这是对置信带行为的误解;对于任何合理的估计形式,随着样本量的增加,置信区间将缩小为零(即使残差保持不变)。您似乎在寻找 预测区间 。您可以通过将残差方差(例如 resid.sd <- loess(Y ~ X, span = 0.75)$s; resid.var <- resid.sd^2
)添加到拟合的平方标准误差,并使用总和的平方根作为 qnorm()
中的标准差来近似地获得这些。 (将参数误差的t-distributed分布和残差的高斯分布结合起来并不容易......)
让我们构建一个带有一些“噪音”的线性趋势如下:
X <- seq(0,20,1); Y <- X/4 + sin(X); plot(X,Y)
现在我用 loess
平滑数据集并用 qt
和黄土标准误差绘制“95% 置信区间”:
X.pred <- seq(0, 20, length.out = 1000) # To have smooth lines
Fit <- predict(loess(Y ~ X, span = 0.75), newdata = X.pred, se = TRUE)
lines(X.pred, Fit$fit)
lines(X.pred, Fit$fit + qt(0.975, Fit$df) * Fit$se.fit, lty = 3)
lines(X.pred, Fit$fit - qt(0.975, Fit$df) * Fit$se.fit, lty = 3)
结果非常直观,下方趋势清晰可见,“波段”几乎覆盖了所有点(符合 95% 置信区间的预期)。
当我们有很多点需要拟合时,问题就出现了。让我们将点数增加 10 倍:
X <- seq(0, 20, 0.1); Y <- X/4 + sin(X); plot(X, Y)
当我 运行 使用与上面相同的脚本时,带现在很窄,显然没有覆盖 95% 的点。我怎样才能获得“直观的”loess
95% 的条带,而不考虑拟合点的数量?
这是对置信带行为的误解;对于任何合理的估计形式,随着样本量的增加,置信区间将缩小为零(即使残差保持不变)。您似乎在寻找 预测区间 。您可以通过将残差方差(例如 resid.sd <- loess(Y ~ X, span = 0.75)$s; resid.var <- resid.sd^2
)添加到拟合的平方标准误差,并使用总和的平方根作为 qnorm()
中的标准差来近似地获得这些。 (将参数误差的t-distributed分布和残差的高斯分布结合起来并不容易......)