Як розрахувати інтервали прогнозування для LOESS?


17

У мене є деякі дані, які я встановив, використовуючи модель LOESS в R, давши мені це:

введіть тут опис зображення

Дані мають один предиктор і одну відповідь, і вони є гетеросептичними.

Я також додав інтервали довіри. Проблема полягає в тому, що інтервали - це довірчі інтервали для лінії, тоді як мене цікавлять інтервали прогнозування. Наприклад, нижня панель є більш змінною, ніж верхня панель, але це не фіксується в інтервалах.

Це питання дещо пов'язане: розуміння смуги довіри від поліноміальної регресії , особливо відповіді @AndyW, однак у своєму прикладі він використовує відносно простий interval="predict"аргумент, який існує у predict.lm, але він відсутній predict.loess.

Тож у мене є два дуже пов'язаних питання:

  1. Як я можу отримати інтервали точного прогнозування для LOESS?
  2. Як я можу передбачити значення, які захоплюють цей інтервал, тобто генерують купу випадкових чисел, які згодом будуть схожі на оригінальні дані?

Цілком можливо, що мені не потрібно ЛОСІТ і я повинен використовувати щось інше, але я не знайомий зі своїми можливостями. В основному він повинен відповідати лінії, використовуючи локальну регресію або множину лінійну регресію, даючи мені оцінки помилок для рядків, а також додатково відрізняються відхилення для різних пояснювальних змінних, тому я можу передбачити розподіл змінної відповіді (у) на певні значення x .


Це інтервал точкового прогнозування?
Glen_b -Встановіть Моніку

Що ви маєте на увазі під "цим"? І я не впевнений, це пунктуально чи ні. Моє запитання 2 - те, що я шукаю - на жаль, я не знайомий з номенклатурою.
Гімеліст

Під "цим" я маю на увазі "те, про що йдеться у назві"
Glen_b -Встановити Моніку

Тож я не впевнений - дивіться мій попередній коментар. В основному я шукаю інтервал, який буде фіксувати фактичну дисперсію в точках даних, як описано в моєму запитанні.
Гімеліст

1
Розкид може бути мінливим (саме тому я в першу чергу обрав місцеву регресію). Одиночний предиктор.
Гімеліст

Відповіді:


12

Я не знаю, як робити смуги прогнозування з оригінальною loessфункцією, але loess.sdв msirупаковці є функція, яка робить саме це! Майже дослівно з 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не має функції передбачення, але ви можете зламати його разом, лінійно інтерполюючи передбачувані засоби та 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)

введіть тут опис зображення


Саме те, що я шукав. Переглядаючи метод, який він використовував, бачачи код loess.sd, він не надто відрізняється від того, що @rnso запропонував у коментарі до іншого мого питання . Спасибі!
Гімеліст

Завантажувальна програма для генерації інтервалів?
SmallChess
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.