부트 스트랩 을 사용 하여 선형 회귀 모델의 예측 간격 을 계산 하는 방법을 이해하는 데 어려움이 있습니다. 누군가 단계별 절차를 설명 할 수 있습니까? Google을 통해 검색했지만 실제로 의미가 없습니다.
모델 매개 변수의 신뢰 구간을 계산하기 위해 부트 스트랩을 사용하는 방법을 이해합니다.
부트 스트랩 을 사용 하여 선형 회귀 모델의 예측 간격 을 계산 하는 방법을 이해하는 데 어려움이 있습니다. 누군가 단계별 절차를 설명 할 수 있습니까? 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 차원 배열 ( n
x 3
x 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