LOESS의 예측 구간을 계산하는 방법은 무엇입니까?


17

R의 LOESS 모델을 사용하여 피팅 한 데이터가 있는데,이를 제공합니다.

여기에 이미지 설명을 입력하십시오

데이터에는 하나의 예측 변수와 하나의 응답이 있으며 이분법 적입니다.

또한 신뢰 구간을 추가했습니다. 문제는 간격이 선에 대한 신뢰 구간이고 예측 구간에 관심이 있다는 것입니다. 예를 들어, 하단 패널은 상단 패널보다 더 가변적이지만 간격으로 캡처되지는 않습니다.

이 질문은 약간 관련이 있습니다. 다항식 회귀 분석 , 특히 @AndyW의 답에서 신뢰 구간을 이해하지만 그의 예에서는에 interval="predict"존재 하는 비교적 간단한 인수를 사용 predict.lm하지만에 없습니다 predict.loess.

그래서 두 가지 매우 관련된 질문이 있습니다.

  1. LOESS에 대한 포인트 단위 예측 간격을 어떻게 얻습니까?
  2. 해당 간격을 캡처하는 값을 어떻게 예측할 수 있습니까? 즉, 원래 데이터와 다소 비슷한 임의의 난수를 생성합니까?

LOESS가 필요하지 않고 다른 것을 사용해야 할 수도 있지만 옵션에 익숙하지 않습니다. 기본적으로 로컬 회귀 또는 다중 선형 회귀를 사용하여 선에 적합해야 선에 대한 오차 추정치와 설명 변수에 따라 다른 분산을 제공하므로 특정 x 값에서 반응 변수 (y)의 분포를 예측할 수 있습니다 .


이것이 점별 예측 간격입니까?
Glen_b-복지 주 모니카

"this"는 무슨 뜻인가요? 그리고 그것이 지적인지 확실하지 않습니다. 내 질문 2는 내가 찾고있는 것입니다-불행히도 나는 명명법에 익숙하지 않습니다.
Gimelist

"이것"이란 뜻은 "제목에서 의문이 제기되는 문제"를 의미합니다
Glen_b -Reinstate Monica

확실하지 않습니다-이전 의견을 참조하십시오. 기본적으로 내 질문에 설명 된 것처럼 데이터 포인트의 실제 분산을 캡처하는 간격을 찾고 있습니다.
Gimelist

1
스프레드는 가변적 일 수 있습니다 (먼저 로컬 회귀 분석을 선택한 이유). 단일 예측 변수.
Gimelist

답변:


12

원래 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예측 기능이 없기 때문에 조금 까다 롭지 만 예측 수단과 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 가 내 다른 질문 에 대한 의견 에서 제안한 것과 크게 다르지 않습니다 . 감사!
Gimelist

간격을 생성하는 부트 스트랩?
SmallChess
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.