부트 스트랩을 작은 샘플 크기의 "치료"로 볼 수 있습니까?


71

이 질문은이 대학원 수준의 통계 교과서에서 읽은 내용과 통계 세미나 에서이 프레젠테이션 중에 들었던 내용에 의해 유발되었습니다. 두 경우 모두,이 문장은 "샘플 크기가 매우 작기 때문에이 파라 메트릭 방법 대신 부트 스트랩을 통해 추정을 수행하기로 결정했습니다 .X

그들은 세부 사항을 얻지 못했지만 아마도 추론은 다음과 같습니다. 방법 는 데이터가 특정 모수 분포 따른다고 가정합니다 . 실제로 분포는 정확히 가 아니지만 표본 크기가 충분히 큰 한 괜찮습니다. 이 경우 표본 크기가 너무 작으므로 분포를 가정하지 않는 (비모수 적) 부트 스트랩으로 전환 해 봅시다. 문제 해결됨!D DXDD

제 생각에는 부트 스트랩이 아닙니다. 다음은 내가 보는 방법입니다. 부트 스트랩은 충분한 데이터가 있다는 것이 어느 정도 분명 할 때 우위를 점할 수 있지만 표준 오류, p- 값 및 유사한 통계를 얻을 수있는 닫힌 양식 솔루션이 없습니다. 전형적인 예는 이변 량 정규 분포에서 표본이 주어지면 상관 계수에 대한 CI를 얻는 것입니다. 닫힌 양식 솔루션이 존재하지만 부트 스트래핑이 더 간단 할 정도로 복잡합니다. 그러나 부트 스트랩이 어떻게 든 작은 표본 크기로 도망 갈 수 있음을 의미하지는 않습니다.

내 인식이 맞습니까?

이 질문이 흥미 롭다면, 또 다른 부트 스트랩 질문이 있습니다.

부트 스트랩 : 과적 합 문제

추신 : 나는“부트 스트랩 접근”의 하나의 중대한 예를 공유하는 것을 도울 수 없습니다. 필자는 저자의 이름을 공개하지는 않지만 2004 년 Quantitative Finance에 관한 책을 저술 한 구세대“창조들”중 한 사람입니다.

다음 문제점을 고려하십시오. 각 자산에 대해 4 개의 자산과 120 개의 월별 수익 관찰이 있다고 가정하십시오. 목표는 연간 수익률의 공동 4 차원 cdf를 구성하는 것입니다. 단일 자산의 경우에도 4 차원 cdf의 추정은 물론 10 년에 한 번의 관측만으로는 달성 할 수없는 것으로 보입니다. 그러나 "부트 스트랩 (bootstrap)"은 여러분을 도울 것입니다 : 이용 가능한 모든 4 차원 관찰을 취하고, 12를 교체하여 재 샘플링하고 그것들을 합성하여 연간 수익의 단일 "부트 스트랩"4 차원 벡터를 구성하십시오. 1000 번 반복하고, 당신은 1000 년 수익의“부트 스트랩 샘플”을 얻었습니다. cdf 추정 또는 천 년 이력에서 도출 할 수있는 다른 추론을 위해 크기가 1000 인 iid 샘플로이 샘플을 사용하십시오.


18
첫 번째 단락과 비슷한 감정을 듣거나 읽지 만 동의하지 않는 경향이 있습니다. 나는 일반적으로 부트 스트랩이 작은 샘플에서 유용하다고 생각하지 않습니다. 그것의 정당성은 점근 적 / 대형 샘플이며, 실제로는 작은 샘플 성능에 문제가있다. 예를 들어, 구간의 적용 범위는 종종 공칭 비율과 상당히 다릅니다. 또 다른 유용한 도구이지만 수년 동안 예고 된 다른 많은 도구와 마찬가지로 일부 사람들은 그것을 상상하는 만병 통치약이 아닙니다. 나는 그것이 매우 작은 샘플에 대한 해결책이라고 생각하지 않습니다.
Glen_b

Simon Sheather의 저서 (그림 3.40)에는 표본 크기가 크지 않고 오류가 정상적으로 분포되지 않은 경우의 추론에 대한 부트 스트랩을 제안하는 회귀에 대한 흐름도가 있습니다.
Tony Ladson

2
네 번째 단락의 질문에 대한 대답은 '예'입니다 (또는 적어도 수업 시간에 시험에서이 답변을 제공 한 경우 논증에 대한 크레딧을 얻게됩니다). 이 토론 을 확인 했습니까 ? 에 내 대답은 , 내가 부트 스트랩이 만드는 근사치에 대한 설명을했다, 모든 부트 스트 래퍼 방법의 한계를 알고 있어야 읽어야 타격 당신의 마음 용지에 대한 참조를했다. 귀하의 질문을 유발 한 책 / 종이 / 발표에 대한 언급을 보는 것이 좋을 것입니다
StasK

부트 스트랩은 엣지 워스 확장에 추가 항을 제공하지 않습니까? 보정 항을 사용한 정규 근사치와 같은 것입니까?
probabilityislogic

답변:


34

부트 스트랩에 백분위 수 신뢰 구간을 사용하는 것은 T 구간 대신 Z 구간을 사용 하고 분모 에 대신 을 사용하는 것과 같습니다 . 불행히도 나는 이것을 어디에서 읽었는지 기억하지 못하고 빠른 검색에서 참조를 찾을 수 없습니다. n이 큰 (때 부트 스트랩의 장점은 이러한 사소한 문제보다 중요한 때 이러한 차이는별로 중요하지 않습니다 큰), 그러나 작은과 이 문제가 발생할 수 있습니다. 시뮬레이션하고 비교할 R 코드는 다음과 같습니다.n 1 n nnn1nn

simfun <- function(n=5) {
    x <- rnorm(n)
    m.x <- mean(x)
    s.x <- sd(x)
    z <- m.x/(1/sqrt(n))
    t <- m.x/(s.x/sqrt(n))
    b <- replicate(10000, mean(sample(x, replace=TRUE)))
    c( t=abs(t) > qt(0.975,n-1), z=abs(z) > qnorm(0.975),
        z2 = abs(t) > qnorm(0.975), 
        b= (0 < quantile(b, 0.025)) | (0 > quantile(b, 0.975))
     )
}

out <- replicate(10000, simfun())
rowMeans(out)

한 번의 실행 결과는 다음과 같습니다.

     t      z     z2 b.2.5% 
0.0486 0.0493 0.1199 0.1631 

따라서 t- 검정과 z- 검정 (진정 모집단 표준 편차 포함)을 사용하면 설계 한대로 본질적으로 제 1 종 오류율이 나타납니다 . 부적절한 z 테스트 (샘플 표준 편차로 나눠 지지만 T 대신 Z 임계 값을 사용)는 null을 필요한 횟수보다 두 번 이상 거부합니다. 이제 부트 스트랩에서 null을 3 번 자주 거부합니다 (진정한 평균이 간격에 있는지 여부를 봅니다).이 작은 샘플 크기의 경우 간단한 부트 스트랩의 크기가 적절하지 않으므로 문제를 해결하지 마십시오 (그리고 데이터가 최적의 상태 일 때). 개선 된 부트 스트랩 간격 (BCa 등)은 아마도 더 나을 것입니다. 그러나 이것은 작은 표본 크기의 만병 통치약으로 부트 스트랩을 사용하는 것에 대한 우려를 제기해야합니다.α


6
당신의 마지막 문장이 저를 흥미롭게 만들었습니다. 그래서 나는 당신의 모범으로 이것을 시험해 보았습니다. boot패키지를 사용하고 가능한 모든 간격을 제공했습니다. 첫 번째 정규 근사 간격, 기본 부트 스트랩 간격, 학생 화 된 부트 스트랩 간격, 부트 스트랩 백분위 간격 (코드가 이미 제공 한) 및 조정 된 부트 스트랩 백분위 수 (BCa) 간격. 공칭 (.05) 기각 율 (표준 t- 검정과 유사하기 때문에 의미가 있음)을 갖는 학생 간격을 제외하고 결과는 본질적으로 모두 동일합니다 (약 .16-.17 부근).
Wolfgang

2
@Wolfgang, 추가 시뮬레이션을 해주셔서 감사합니다. 나는 다른 간격이 조금 더 나아지지 않았다는 것에 약간 놀랐지 만, 0.05 레벨을 만족시키지 못한다는 것에 놀라지 않았습니다.
Greg Snow

1
예, 나도 약간 놀랐습니다! 때때로 우리의 직관이 실패합니다. 그렇기 때문에 R에서 몇 분 안에 작은 스크립트를 작성하고, 10,000 \times 10,000반복을 완료하고 (완료하는 데 몇 분이 더 걸렸음), 점검 할 수 있다는 것이 매우 훌륭한 이유 입니다. 그리고 당신의 예제는 부트 스트랩이 아주 좋은 경우에도 (즉, 데이터가 실제로 정상인 경우에도) 작은 샘플로 아주 나쁘게 수행 할 수 있음을 잘 보여줍니다.
Wolfgang

실제로,이 시뮬레이션에서 볼 수있는 문제는 내가 방금 여기에 대해 물었고 @whuber의 의견에서 stats.stackexchange.com/questions/323455/… 입니다. 따라서 문제가 표본 크기라고 생각하지 않지만 각 표본 내의 모수 추론에 대한 독립성을 위반한다고 생각합니다.
하프 패스

2
백분위 신뢰 구간에 대한 귀하의 의견은 사용에 해당되는 대신 에서입니다 여기에 단지 기록을 위해. tzt
임대영

14

작은 표본 크기가 제공되는 경우 (측량으로, "작은"항목은 각 연구 분야의 일부 기본 규칙에 따라 결정되는 것처럼 보입니다) 부트 스트랩은 마법을 수행하지 않습니다. 데이터베이스에 조사중인 두 변수 각각에 대해 세 개의 관측치가 있다고 가정하면 추론이 의미가 없습니다. 내 경험상 비모수 부트 스트랩 (1,000 또는 10,000 복제)은 표본 분포 (각각 10-15 회 관찰)가 왜곡되어 일반적인 t- 검정의 전제 조건이 충족되지 않을 때 t- 검정을 대체하는 데 효과적입니다. 또한 관측 횟수에 관계없이 데이터는 항상 의료 비용으로 발생하기 때문에 데이터가 긍정적으로 왜곡 될 때 비모수 적 부트 스트랩이 필수 선택이 될 수 있습니다.


1
데이터가 긍정적으로 치우친 경우 부트 스트랩이 필수 선택 일 수 있습니다. 대신 로그 정규 분포 또는 유사한 비뚤어진 분포를 사용하지 않는 이유는 무엇입니까? SAS와 R은 선택의 폭이 넓습니다.
James

1
야고보의 대답은 고려할 가치가 있습니다. 그러나 로깅 비용 데이터에서 직면하는 일반적인 문제는 의사 결정자에게 결과를 제시하기 전에 원래 메트릭으로의 역변환입니다. 비모수 부트 스트랩으로이 문제를 피할 수 있습니다.
Carlo Lazzaro

Carlo, 로그 변환 경험이 있으므로 다른 질문에 대답하고 싶을 수도 있습니다 (50 포인트 현상금이 있습니다) : stats.stackexchange.com/a/111932/54099
James

제임스, 몇 분 전에 당신의 질문에 유혹적인 대답을 했어요.
Carlo Lazzaro

χ 2 1t -tests은 참조 기울어 인구 보정 할 수 jstor.org/stable/2286597 - 제안 된 수정처럼 매우 왜곡 된 인구와 잘 작동 10 개 관측. χ12
StasK

13

다른 답변은 부트 스트랩 자체가 아니라 부트 스트랩 신뢰 구간 의 성능을 비판합니다 . 이것은 다른 문제입니다.

컨텍스트가 부트 스트랩 배포 수렴에 대한 규칙 성 조건 (부트 스트랩 샘플 수의 수렴)을 만족하는 경우, 충분한 부트 스트랩 샘플을 사용하면이 방법이 작동합니다.

경우 당신은 정말 비모수 부트 스트랩을 사용하여 문제를 찾으려면, 여기에 두 가지 문제가 있습니다 :

(1) 리샘플링 문제.

작거나 큰 샘플의 부트 스트랩 문제 중 하나는 리샘플링 단계입니다. 샘플의 구조 (종속성, 시간적 등)를 유지하면서 항상 리샘플링 할 수있는 것은 아닙니다. 이것의 예는 중첩 된 프로세스 입니다.

각 이벤트마다 때때로 발생하는 여러 개의 독립적 인 소스가 있다고 가정하십시오. 하나의 소스에서 연속적인 이벤트 사이의 간격은 모두 동일한 분포를 갖는 독립 임의 변수 인 것으로 가정되므로 각 소스는 친숙한 유형의 갱신 프로세스를 구성합니다. 소스의 출력은 하나의 풀링 된 출력으로 결합됩니다.

의존성을 알 수없는 구조 를 유지하면서 어떻게 리샘플링 하시겠습니까?

(2) 작은 샘플에 대한 좁은 부트 스트랩 샘플 및 부트 스트랩 신뢰 구간 .

작은 샘플에서 각 서브 샘플에 대한 추정값의 최소값과 최대 값은 좁은 간격을 정의 할 수 있으며, 일부 모델에서는 신뢰 구간의 오른쪽 끝과 왼쪽 끝 점이 매우 좁습니다 (작은 샘플에서는 반 직관적입니다!).

한다고 가정 여기서 비율이다. 프로파일 우도를 사용하면 다음과 같이 근사 신뢰 구간을 얻을 수 있습니다 (95 % 근사 신뢰 구간은 0.147 수준 프로파일 우도 구간입니다).λ > 0x1,x2Exp(λ)λ>0

set.seed(1)
x <- rexp(2,1)
# Maximum likelihood estimator
1/mean(x)

# Profile likelihood: provides a confidence interval with right-end point beyond the maximum inverse of the mean
Rp <- Vectorize(function(l) exp(sum(dexp(x,rate=l,log=T))-sum(dexp(x,rate=1/mean(x),log=T))))

curve(Rp,0,5)
lines(c(0,5),c(0.147,0.147),col="red")

이 방법은 신뢰 구간을 추출 할 수있는 연속 곡선을 생성합니다. 의 최대 우도 추정값 은 입니다. 리샘플링을 통해이 추정기에 대해 얻을 수있는 값은 3 가지뿐입니다. 최대 값과 최소값은 해당 부트 스트랩 신뢰 구간의 경계를 정의합니다. 큰 부트 스트랩 샘플의 경우에도 이상하게 보일 수 있습니다 (이 숫자를 늘려도 크게 얻지 못합니다).λ = 2 / ( X 1 + X 2 )λλ^=2/(x1+x2)

library(boot)
set.seed(1)
x <- rexp(2,1)
1/mean(x)
# Bootstrap interval: limited to the maximum inverse of the mean
f.boot <- function(data,ind) 1/mean(data[ind])
b.b <- boot(data=x, statistic=f.boot, R=100000)
boot.ci(b.b, conf = 0.95, type = "all")
hist(b.b$t)

이 경우 과 가 가까울수록 부트 스트랩 분포가 좁아지고 결과적으로 신뢰 구간 (실제 값에서 멀리 떨어져있을 수 있음)이 좁아집니다. 이 예제는 사실 @GregSnow가 제시 한 예제와 관련이 있지만 그의 주장은보다 실증적입니다. 내가 언급 한 범위는 @Wolfgang에 의해 분석 된 모든 부트 스트랩 신뢰 구간의 나쁜 성능을 설명합니다.x 2x1x2


6

부트 스트랩 은 테스트의 정확성 (예 : 공칭 0.05 유의 수준이 실제 테스트 크기에 근접 함)을 보장함으로써 작은 표본 크기에서 작동 하지만 부트 스트랩은 마법의 힘을 더 이상 부여 하지 않습니다 . 작은 표본이 있다면 힘이 거의없고 이야기가 끝납니다.

파라 메트릭 (선형 모델) 및 반 파라 메트릭 (GEE) 회귀 분석은 작은 샘플 특성이 좋지 않은 경향이 있습니다. 전자는 파라 메트릭 가정에 크게 의존 한 결과이며, 후자는 작은 샘플에서 강력한 표준 오류 추정치의 확대로 인해 발생합니다. 부트 스트랩 (및 기타 리샘플링 기반 테스트)은 이러한 상황에서 실제로 잘 수행 됩니다.

예측을 위해 부트 스트랩은 분할 샘플 유효성 검사보다 내부 유효성에 대한 더 나은 (정직한) 추정치를 제공합니다.

부트 스트랩을 자주 수행하면 평균 대치 절차 / 핫 데킹 (예 : 퍼지 매칭)을 실수로 수정 ​​한 결과 전력 이 줄어 듭니다 . 부트 스트랩은 개인이 충분한 클러스터 크기를 충족하도록 재 샘플링되어 분석 데이터 세트 보다 이 큰 부트 스트랩 된 일치 데이터 세트를 제공하는 일치 분석에서 강력한 기능 을 제공하기 위해 잘못 사용되었습니다 .n


2
(예 : 공칭 0.05 유의 수준이 실제 검정 크기와 비슷 함)-위의 R 코드에서 부트 스트랩이 검정 크기를 보존하지 않는 것을 보았습니다.
James

나는 당신이 Greg Snow가 제공 한 답변을 말하는 것을 봅니다. 나는 그 결과에 놀랐다. 사실을 다시 확인하고 답을 편집해야합니다. 감사.
AdamO
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.