如何计算黄土的预测间隔?


17

我有一些数据是使用R中的LOESS模型拟合的,给了我这个:

在此处输入图片说明

数据具有一个预测变量和一个响应,并且是异方差的。

我还添加了置信区间。问题在于间隔是该行的置信区间,而我对预测间隔感兴趣。例如,底部面板比顶部面板更具可变性,但是不会在间隔中捕获。

这个问题有点相关: 从多项式回归中了解置信带,尤其是@AndyW的答案,但是在他的示例中,他使用了interval="predict"中存在的相对简单的论点predict.lm,但从中没有predict.loess

所以我有两个非常相关的问题:

  1. 如何获得LOESS的逐点预测间隔?
  2. 我如何预测将捕获该间隔的值,即生成一堆最终看起来看起来像原始数据的随机数?

我可能不需要黄土,应该使用其他东西,但是我不熟悉我的选择。基本上,它应该使用局部回归或多元线性回归来拟合线,从而为线提供误差估计,此外,还为不同的解释变量提供了不同的方差,因此我可以在某些x值处预测响应变量(y)的分布。


这是逐点预测间隔吗?
Glen_b-恢复莫妮卡2015年

“这个”是什么意思?而且我不确定这是否正确。我的问题2是我要寻找的-不幸的是,我对术语不熟悉。
Gimelist,2015年

“这个”的意思是“标题中的问题”
Glen_b -Reinstate Monica 2015年

所以我不确定-请参阅我之前的评论。基本上,我正在寻找一个间隔,该间隔将捕获数据点中的实际方差,如我的问题所述。
Gimelist,2015年

1
价差可能是可变的(这就是为什么我首先选择局部回归的原因)。单一预测变量。
Gimelist

Answers:


12

我不知道该怎么办预测波段与原有loess的功能,但有一个功能,loess.sdmsir包装,做这一点!从msir文档中几乎逐字记录:

library(msir)
data(cars)
# Calculates and plots a 1.96 * SD prediction band, that is,
# a 95% prediction band
l <- loess.sd(cars, nsigma = 1.96)
plot(cars, main = "loess.sd(cars)", col="red", pch=19)
lines(l$x, l$y)
lines(l$x, l$upper, lty=2)
lines(l$x, l$lower, lty=2)

在此处输入图片说明

您的第二个问题有点棘手,因为loess.sd它没有预测功能,但是您可以通过线性插值loess.sd(使用approx)获得的预测均值和SD来破解它。这些反过来又可以用于使用正态分布以及预测的均值和SD来模拟数据:

# Simulate x data uniformly and y data acording to the loess fit
sim_x <- runif(100, min(cars[,1]), max(cars[,1]))
pred_mean <- approx(l$x, l$y, xout = sim_x)$y
pred_sd <- approx(l$x, l$sd, xout = sim_x)$y
sim_y <- rnorm(100, pred_mean, pred_sd) 

# Plots 95% prediction bands with simulated data 
plot(cars, main = "loess.sd(cars)", col="red", pch=19)
points(sim_x, sim_y, col="blue")
lines(l$x, l$y)
lines(l$x, l$upper, lty=2)
lines(l$x, l$lower, lty=2)

在此处输入图片说明


正是我想要的。在查看代码所用的方法时loess.sd,与@rnso在我的另一个问题的注释中所建议的并没有太大不同。谢谢!
Gimelist'Apr 9'15

引导程序生成间隔?
SmallChess
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.