방법 : 부트 스트랩을 통한 선형 회귀 예측 간격 데 어려움이 있습니다. 누군가 단계별 절차를 설명

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

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



답변

신뢰 구간은 추정 불확실성을 고려합니다. 예측 구간은 기본 불확실성을 추가합니다. 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를 예측할 수 없습니다.


답변

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

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

다음 “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