R

如何計算 LOESS 的預測區間?

  • March 13, 2015

我有一些數據是我在 R 中使用 LOESS 模型擬合的,給了我這個:

在此處輸入圖像描述

數據具有一個預測變量和一個響應變量,並且是異方差的。

我還添加了置信區間。問題是區間是線的置信區間,而我對預測區間感興趣。例如,底部面板比頂部面板更具可變性,但這並未在間隔中捕獲。

這個問題有點相關: 從多項式回歸中理解置信帶,尤其是@AndyW 的答案,但是在他的示例中,他使用了interval="predict"存在於 中的相對簡單的論點predict.lm,但 中沒有predict.loess

所以我有兩個非常相關的問題:

  1. 如何獲得 LOESS 的逐點預測區間?
  2. 如何預測將捕獲該間隔的值,即生成一堆最終看起來有點像原始數據的隨機數?

我可能不需要 LOESS,應該使用其他東西,但我不熟悉我的選擇。基本上它應該使用局部回歸或多元線性回歸擬合線,給我對線的誤差估計,此外還有不同解釋變量的不同方差,所以我可以預測響應變量 (y) 在某些 x 值處的分佈.

我不知道如何用原始loess函數做預測帶,但loess.sd中有一個函數可以做到這一點!從文檔中幾乎逐字記錄:msirmsir

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 的正態分佈來模擬數據:

# 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)

在此處輸入圖像描述

引用自:https://stats.stackexchange.com/questions/141552

comments powered by Disqus