방법 : 부트 스트랩을 통한 선형 회귀 예측 간격


14

부트 스트랩 을 사용 하여 선형 회귀 모델의 예측 간격 을 계산 하는 방법을 이해하는 데 어려움이 있습니다. 누군가 단계별 절차를 설명 할 수 있습니까? Google을 통해 검색했지만 실제로 의미가 없습니다.

모델 매개 변수의 신뢰 구간을 계산하기 위해 부트 스트랩을 사용하는 방법을 이해합니다.


1
이에 대해서는 Davison and Hinkley ( 부트 스트랩 방법 및 응용 프로그램 )와 명시 적 알고리즘 (알고리즘 6.4) 이이 책에서 자세히 설명합니다 . 여기에서 합리적인 답변으로 가능한 것보다 더 긴 개념, 함정 및 세부 사항을 설명합니다.
Glen_b-복지 주 모니카

@Glen_b 참조 해 주셔서 감사합니다. 불행히도 나는 대학이나 회사에 있지 않아서이 책을 얻을 수있는 자료가 없습니다.
Max

아마존에서 주문할 수 있습니다. 알고리즘과 관련된 모든 경고 및 문제에 대한 자세한 설명은 실제로 몇 백 단어 나 한 페이지 답변으로 다룰 수있는 것이 아닙니다.
Glen_b-복귀 모니카

1
@Glen_b 저는 Davison과 HInkely의 알고리즘을 작성했습니다.이 문제에 대한 CV에는 몇 가지 질문이 있으므로 노력할만한 가치가 있다고 생각했습니다. 의견이 있으시면 감사하겠습니다. stats.stackexchange.com/questions/226565/…
Bill

이 글타래는 고객님의 질문에 답하는 것 같습니다 : stats.stackexchange.com/questions/226565/…
user2683832

답변:


7

신뢰 구간은 추정 불확실성을 고려합니다. 예측 구간은 기본 불확실성을 추가합니다. R predict.lm은 선형 모형에 대한 예측 구간을 제공합니다. 거기에서 부트 스트랩 된 샘플에 대해 반복해서 실행하면됩니다.

n <- 100
n.bs <- 30

dat <- data.frame( x<-runif(n), y=x+runif(n) )
plot(y~x,data=dat)


regressAndPredict <- function( dat ) {
  model <- lm( y~x, data=dat )
  predict( model, interval="prediction" )
}

regressAndPredict(dat)

replicate( n.bs, regressAndPredict(dat[ sample(seq(n),replace=TRUE) ,]) )

결과 replicate는 3 차원 배열 ( nx 3x n.bs)입니다. 길이 3 차원은 각 데이터 요소에 대한 적합치 값과 95 % 예측 간격의 하한 / 상한으로 구성됩니다.

게리 킹 방법

원하는 것에 따라 King, Tomz 및 Wittenberg 의 멋진 방법이 있습니다. 구현이 비교적 쉽고 특정 추정치 (예 :)에 대한 부트 스트래핑 문제를 피합니다 max(Y).

나는 근본적인 불확실성에 대한 그의 정의를 인용 할 것이다.

방정식 1의 확률 적 구성 요소 (분포 f)에 의해 나타나는 근본적인 불확실성의 두 번째 형태의 가변성은 Y에 영향을 미칠 수 있지만 X에는 포함되지 않는 날씨 나 질병과 같은 무수한 우연한 사건에서 비롯됩니다. 우리는 모수의 정확한 값을 알고 (따라서 추정 불확실성을 제거함), 근본적인 불확실성으로 인해 우리는 오류없이 Y를 예측할 수 없습니다.


3
이 n.bs 예측 간격 행렬에서 어떻게 신뢰 구간을 구축하는지 잘 모르겠습니다.
B_Miner December

1

부트 스트랩은 표본이 발생한 기본 모 분포 형태에 대한 지식이 없다고 가정합니다. 기존의 고전 통계 매개 변수 추정치는 정규성 가정을 기반으로합니다. 부트 스트랩은 비정규 성을 다루며 실제로는 기존 방법보다 더 정확합니다.

부트 스트랩 핑은 엄격한 이론적 분석을 위해 컴퓨터의 원시 컴퓨팅 성능을 대체합니다. 데이터 세트 오류 항의 샘플링 분포에 대한 추정치입니다. 부트 스트랩에는 데이터 세트를 지정된 횟수만큼 다시 샘플링하고 각 샘플의 평균을 계산하고 평균의 표준 오차를 찾는 것이 포함됩니다.

다음 "R"코드는 개념을 보여줍니다.

이 실제 예는 부트 스트랩의 유용성을 보여주고 표준 오류를 추정합니다. 신뢰 구간을 계산하려면 표준 오차가 필요합니다.

기울어 진 데이터 세트 "a"가 있다고 가정 해 봅시다.

a<-rexp(395, rate=0.1)          # Create skewed data

비뚤어진 데이터 세트의 시각화

plot(a,type="l")                # Scatter plot of the skewed data
boxplot(a,type="l")             # Box plot of the skewed data
hist(a)                         # Histogram plot of the skewed data

부트 스트랩 절차를 수행하십시오.

n <- length(a)                  # the number of bootstrap samples should equal the original data set
    xbarstar <- c()                 # Declare the empty set “xbarstar” variable which will be holding the mean of every bootstrap iteration
    for (i in 1:1000) {             # Perform 1000 bootstrap iteration
        boot.samp <- sample(a, n, replace=TRUE) #”Sample” generates the same number of elements as the original data set
    xbarstar[i] <- mean(boot.samp)} # “xbarstar” variable  collects 1000 averages of the original data set
    ## 
    plot(xbarstar)                  # Scatter plot of the bootstrapped data
    boxplot(xbarstar)               # Box plot of the bootstrapped data
    hist(xbarstar)                  # Histogram plot of the bootstrapped data

    meanOfMeans <- mean(xbarstar)
    standardError <- sd(xbarstar)    # the standard error is the standard deviation of the mean of means
    confidenceIntervalAboveTheMean <- meanOfMeans + 1.96 * standardError # for 2 standard deviation above the mean 
    confidenceIntervalBelowTheMean <- meanOfMeans - 1.96 * standardError # for 2 standard deviation above the mean 
    confidenceInterval <- confidenceIntervalAboveTheMean + confidenceIntervalBelowTheMean
    confidenceInterval

1
예를 들어 Ragy에게 감사합니다. 그러나 내가 볼 수 있듯이 부트 스트랩을 사용한 예측 간격 계산에는 답변이 없습니다. 내 대답에서 말했듯이 부트 스트래핑을 사용하여 신뢰 구간을 계산하는 방법을 이미 이해하고 있습니다.
Max
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.