문과생 네버랜드의 데이터 창고

26. 통계적 부트스트랩 본문

수리통계

26. 통계적 부트스트랩

K JI 2023. 7. 7. 20:18
  1. 부트스트랩이란
    1) 표본을 이용하여 지속적인 복원(혹은 비복원) 추출을 반복하여 모수를 추정하는 추정량의 분포를 알아내는 방법론

    ${(1)}$ 모수를 추정하는 추정량분포를 추정하기 위한 시뮬레이션이다
    ${(2)}$ 추정량에 대한 분포를 시뮬레이션이기 때문에 표본(의 실현값)을 이용한다.
    ${(3)}$ 다표본 검정의 경우 비복원을 사용하고, 일표본 검정의 경우 복원 추출을 활용한다.
    ${(4)}$ 샘플이 n개라면, 추출도 n번 수행하여 n개의 재추출을 수행한다.

    부트스트래핑 기법을 이용하여 샘플의 평균과 분산을 추정하기 위한 분포를 시뮬레이션하는 예시 애니메이션

    처음에 어떤 분포인지도 알 수 없던 샘플의 평균에 대한 히스토그램은
    점차적으로 정규분포로 수렴하는 것을 볼수 있다.

    이를 이용하여 우리는 샘플의 평균이라는 모평균에 대한 불편추정량의 
    평균, 분산(표준오차) 를 알 수 있게 된다.

    2) 부트스트랩을 통해 알 수 있는 정보는 다음과 같다.
    ${(1)}$ 추정량의 평균, 분산과 같은 속성값에 대한 추정
    ${(2)}$ (속성값을 이용한) 신뢰구간 및 특정 가설에 대한 가설 검정  

    3) 일반적으로, 다음의 단계를 각 작업별로 특수화하여 활용한다.
    단계 절차
    1 재추출한 부트스트랩 데이터셋을 구성한다.
    -. 이 때, 복원 혹은 비복원 추출을 활용한다.
    -. 데이터셋의 크기는 원래 표본의 크기인 n과 동일하게 한다.
    2 모수를 추정하는 (불편)추정량의 값을 구한다.
    -. 만약, 이 값을 B개 구한다면 $[\widehat{\theta}_{i}]$의 리스트로 이를 저장한다.
    3 저장된 $[\widehat{\theta}_{i}]$로 분포를 추정하고, 이를 이용하여 원하는 정보를 확인한다.
  2. 부트스트랩 백분위수 신뢰구간 알고리즘

    1) 부트스트랩을 통해 도출된 표본의 백분위수를 이용하여 신뢰구간을 도출하는 알고리즘

    2) 다음의 이론적 근거를 가진다.
    X가 $f(x;\theta)$를 갖는 연속확률변수라고 하자.

    $[X_{1}, \dots X_{n}]$을 X에서 추출한 확률표본이라고 하자.

    또, $\widehat{\theta}$를 $\theta$에 대한 점 추정량 이라고 하자.

    우선, $\widehat{\theta}$을 정규분포 $N(\theta, \sigma_{\theta}^{2})$을 따른다고 하자. 

    그러면, 모수 $\theta$의 신뢰구간은 다음과 같이 표현할 수 있다.

    $\theta \in (\widehat{\theta} - z^{1-\alpha/2}\cdot \sigma_{\theta}^{2}, \quad \widehat{\theta} - z^{\alpha/2}\cdot \sigma_{\theta}^{2})$  

    위의 구간 정의에서
    $\widehat{\theta}_{L} = \widehat{\theta} - z^{1-\alpha/2}\cdot \sigma_{\theta}^{2}$ 그리고
    $\widehat{\theta}_{U} = \widehat{\theta} - z^{alpha/2}\cdot \sigma_{\theta}^{2}$ 라 정의하자.

    한편, 이번엔 $\widehat{\theta}^{*}$을 정의하자.
    $\widehat{\theta}^{*}$은  확률표본을 통해 도출한 실현된 통계량 $(\widehat{\theta}, \sigma_{\theta}^{2})$ 을 모수로 갖는 정규분포
    $N(\widehat{\theta},\sigma_{\theta}^{2})$를 따른다.
    ($\widehat{\theta}$와 $\widehat{\theta}^{*}$의 정의 차이에 유의하자)

    이 때 $\widehat{\theta}_{L}$을 이용하여 $\widehat{\theta}^{*}$를 표현하면 다음과 같이 표현할 수 있다.

    $$P(\widehat{\theta}^{*} \leq \widehat{\theta}_{L}) = P(\widehat{\theta}^{*} \leq \widehat{\theta} - z^{1-\alpha/2}\cdot \sigma_{\theta}^{2}) = P(\frac{\widehat{\theta}^{*} - \widehat{\theta}}{\sigma_{\theta}^{2}} \leq- z^{1-\alpha/2})$$
    위 식은 $z^{1-\alpha/2}$의 반대쪽 구간이므로, $\alpha/2$와 같다.

    마찬가지로 $\widehat{\theta}_{U}$을 이용하여 $\widehat{\theta}^{*}$를 표현하면

    $$P(\widehat{\theta}^{*} \leq \widehat{\theta}_{U}) = P(\widehat{\theta}^{*} \leq \widehat{\theta} - z^{\alpha/2}\cdot \sigma_{\theta}^{2}) = P(\frac{\widehat{\theta}^{*} - \widehat{\theta}}{\sigma_{\theta}^{2}} \leq- z^{\alpha/2})$$
    위 식은 $z^{\alpha/2}$의 반대쪽 구간이므로, 그 확률은 $1-\alpha/2$와 같다.

    $\widehat{\theta}^{*}$은 실현값을 통해 구현한 정규분포
    $N(\widehat{\theta}, \sigma_{\theta}^{2})$를 이용하여 구한 추정량이므로
    이 분포로부터 추정이 필요한 모수 $\theta$에 대한 신뢰성 있는 구간을 구할 수 있게 된다.

    3) 부트스트랩 백분위수 신뢰구간 알고리즘

    ${(1)}$ 부트스트랩 백분위수 신뢰구간 알고리즘은 다음의 절차를 통해 수행한다.
    단계 절차
    1 j = 1로 초기화한다. 반복 횟수 B를 정의한다.
    2 $j \leq B$라면 단계 (2) ~ (5)를 반복한다.
    3 다음의 복원 샘플링을 수행한다.
    -. 표본 $[x_{1}, \dots, x_{n}]$으로부터 n개의 복원 샘플을 추출한다. 
    -. 이 복원 샘플을 $x_{j}$라는 리스트에 담는다.
    4 모수를 추정할 수 있는 통계량 
    $\widehat{\theta}^{*}_{j} = \widehat{\theta}(x_{j})$를 구한다.
    5 $j \leftarrow j + 1$
    6 반복 종료 후, $[\widehat{\theta}^{*}_{1}, \dots , \widehat{\theta}^{*}_{j}]$을 크기 순서대로 재정렬한다.
     
    $m = (\alpha/2) \cdot B$라고 정의하고

    재정렬된 $[\widehat{\theta}^{*}_{1}, \dots ,\widehat{\theta}^{*}_{j}]$ 에서 
    m번째 값과  B + 1 - m 번째 값을 구한다. 이는 다시말해 $(\alpha/2)$ 와 $(1-\alpha/2)$ 백분위수를 구하는것과 같다.
  3. 부트스트랩 평균 검정절차(2표본 검정)

    1) 부트스트랩을 통해 도출한 두 개의 분포의 실현값을 통하여 가설을 검정하는 방법론

    2) 다음의 이론적 근거를 가진다.
    확률표본 $X_{i}$ 와 $Y_{i}$를 정의하자.
    이 때 추출의 대상이 된 확률변수 X와 Y는 각각 다음과 같다.

    X는 cdf F(x)를 가지는 분포를 따르는 확률변수
    Y는 cdf $F(x - \Delta)$를 갖는 분포를 따르는 확률변수

    다시말해, X와 Y는 위치모수 $\Delta$를 사이에 두고 서로 연관을 가지고있는 확률변수들이다.
    만약, 두 분포에 각각 평균 $\mu_{x}$와 $\mu_{y}$가 존재할 경우, 
    $\Delta = \mu_{x} - \mu_{y}$와 같다.

    다음의 가설을 검정하고자 한다.

    $H_{0} : \Delta = 0$ vs $H_{1} : \Delta > 0$

    이 가설의 검정을 위해, 평균 $\mu_{x}$와 $\mu_{y}$에 대한 불편추정량인 $\overline{x}$와 $\overline{y}$를 활용한다.

    $V = \overline{x} - \overline{y}$ 라고 할 때
    $V \geq c$면 $H_{0}$를 기각한다고 하자.

    또는, 기각역 c를 활용하지 않고 검정 p-value를 활용하는 다음의 식으로 검정하는 것이다.

    $\widehat{p} = P_{H_{0}}[V \geq \overline{y} - \overline{x}]$

    이제, 부트스트랩의 목적은 이 $\widehat{p}$를 추정하는 것이다.

    3) 부트스트랩 평균 검정(2표본) 알고리즘

    ${(1)}$ 부트스트랩 독립성 검정 알고리즘은 다음의 절차를 통해 수행한다.
    단계 절차
    1 $x_{i}$와 $y_{i}$를 하나로 합친다. 즉 $z = (x_{i}, y_{i})$
    $[x_{i}]$의 갯수를 $n_{x}$라고 하고, $[y_{i}]$의 갯수를 $n_{y}$라고 한다.
    임계값 $v = \overline{y} - \overline{x}$를 저장한다.
    2 j = 1로 초기화한다. 반복 횟수 B를 정의한다.
    3 $j \leq B$라면 단계 (3) ~ (6)을 반복한다.
    4 다음의 비복원 샘플링 x를 수행한다.
    -. 리스트 z로부터 n_{x}개의 비복원 샘플을 추출한다. 
    -. 이 복원 샘플을 $x_{j}$라는 리스트에 담고, 그 평균값 $\overline{x_{j}}$를 구한다.
    5 다음의 비복원 샘플링 y를 수행한다.
    -. 리스트 z로부터 n_{y}개의 비복원 샘플을 추출한다. 
    -. 이 복원 샘플을 $y_{j}$라는 리스트에 담고, 그 평균값 $\overline{y_{j}}$를 구한다.
    6 $v_{j} = \overline{x_{j}} - \overline{y_{j}}$를 구한다.

    $j \leftarrow j + 1$
    7 반복 종료 후, 다음의 값을 구한다.
    $$\widehat{p}^{*} = \frac{count_{j=1}^{B}{v_{j} \geq v}}{B}$$
    단, count는 부등호식에 해당하는 사례를 카운트하는 함수이다.

    즉, 우리가 미리 결정한 임계값 V를 초과하는 $v_{j}$의 갯수를 카운트한 후 이를 전체 반복한 횟수 B로 나누어 확률  p를 구한다.
  4. 부트스트랩 평균 검정절차(1표본)

    1) 부트스트랩을 통해 도출한 한개의 분포의 평균이 특정 평균과 유의미하게 다른지 검정하는 방법

    2) 다음의 이론적 근거를 가진다.
    $[X_{1}, \dots X_{n}]$를 연속형 cdf F(x)를 가지는 분포를 따르는 확률변수 X에서 추출한 확률표본이라 하자

    이 때, 확률변수 X가 평균 $\mu$를 가진다고 할 때, 다음의 가설을 검정한다.

    $H_{0} : \mu = \mu_{0}$ vs $H_{1} : \mu > \mu_{0}$
    이 때, $\mu_{0}$는 가설 검정을 원하는 특정 값이다.

    $\mu$에 대한 불편추정량인 $\overline{x}$를 이용하여 다음과 같은 결정규칙을 세운다.
    $\overline{x}$가 크면 $H_{0}$를 기각하고 $H_{1}$ 채택

    이 때, $[X_{1}, \dots X_{n}]$의 실현값 $[x_{1}, \dots x_{n}]$을 이용하여 $\overline{X}$에 대한 실현값
    $$\overline{x} = \frac{\sum_{i=1}^{n}x_{i}}{n}$$ 를 구한다.

    검정통게량 $\widehat{p}$는 다음과 같이 구한다.
    $$\widehat{p} = P_{H_{0}}[\overline{X} \geq \overline{x}]$$

    한편, 부트스트랩 분포는 오직 단 하나만 도출되기 때문에,
    우리는 $H_{1}$을 따르는 분포가 아닌 $H_{0}$를 따르는 분포만 고려하여 p값을 계산하고 가설을 검정해야 한다.
    따라서, $\overline{x}$를 직접 도출하는 대신 아래의 $z_{i}$를 대신 계산한다.

    $$z_{i} = x_{i} - \overline{x} + \mu_{0}$$ 

    $z_{i}$를 이용하여 $H_{0}$를 따르는 분포 하에서 $p$값이 얼마나 예외적인 수준인지 확인한다.

    3) 부트스트랩 평균 검정(1표본) 알고리즘
    단계 절차
    1 $\overline{x}$를 계산한다.
    $z_{i} = x_{i} - \overline{x} + \mu_{0}$ 를 계산하여 리스트 z에 담는다. 
    2 j = 1로 초기화한다. 반복 횟수 B를 정의한다.
    3 $j \leq B$라면 단계 (3) ~ (6)을 반복한다.
    4 다음의 복원 샘플링을 수행한다.
    -. 리스트 z로부터 n개의 복원 샘플을 추출한다. 
    -. 이 복원 샘플을 $z_{j}$라는 리스트에 담고, 그 평균값 $\overline{z_{j}}$를 구한다.
    5 $j \leftarrow j + 1$
    6 반복 종료 후, 다음의 값을 구한다.
    $$\widehat{p}^{*} = \frac{count_{j=1}^{B}{\overline{z_{j}} \geq \overline{x}}}{B}$$
    단, count는 부등호식에 해당하는 사례를 카운트하는 함수이다.

    즉, $\overline{x}$를 초과하는 $\overline{z_{j}}$의 갯수를 카운트한 후 이를 전체 반복한 횟수 B로 나누어 확률  p를 구한다.

 

'수리통계' 카테고리의 다른 글

28. 분포수렴  (1) 2023.07.11
27. 확률 수렴  (2) 2023.07.10
25. 몬테카를로 방법  (0) 2023.07.06
24. 카이제곱 검정  (0) 2023.07.05
23-1 단측검정에서 양측검정으로 일반화  (0) 2023.07.05