Давайте построим линейный тренд с некоторым «шумом» следующим образом:
X <- seq(0,20,1); Y <- X/4 + sin(X); plot(X,Y)
Теперь я сглаживаю набор данных с помощью loess
и строю «95% доверительные интервалы» с qt
и стандартной ошибкой лесса:
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% диапазоны, независимо от количества подобранных точек?