부트스트랩이란?

밍키·2023년 9월 6일
0

1. 부트스트랩?

데이터 사이언스에서 부트스트랩(Bootstrap)은 통계적 추론을 위한 하나의 리샘플링 방법입니다. 부트스트랩은 주어진 데이터 샘플로부터 추가적인 샘플들을 생성함으로써, 통계적 추정치(예: 평균, 중앙값, 표준편차 등)의 불확실성이나 신뢰구간을 쉽게 평가할 수 있게 해줍니다.

예를 들어, 어떤 연구에서 100명의 사람들의 키를 측정했다고 하자. 이 데이터만으로는 전체 인구에 대한 키의 평균이나 분산 등을 정확하게 알기 어렵습니다. 부트스트랩은 이렇게 작은 샘플 데이터에서 더 많은 정보를 얻기 위해 사용됩니다.

부트스트랩의 기본 아이디어는 다음과 같습니다:

원래 데이터 셋에서 무작위로 데이터 포인트를 선택합니다. 이때, 같은 데이터 포인트를 여러 번 선택할 수도 있습니다. (복원 추출)
이렇게 선택된 데이터 포인트들로 새로운 '부트스트랩 샘플'을 만듭니다.
이 새로운 샘플에 대해 원하는 통계치(예: 평균, 중앙값 등)를 계산합니다.
위의 단계를 여러 번 반복하여, 원하는 통계치의 분포를 얻습니다.
이 방법을 통해, 작은 샘플 데이터에서도 원하는 통계치의 신뢰구간이나 표준오차 등을 추정할 수 있습니다. 이는 특히 샘플 크기가 작거나 복잡한 모델을 사용할 때 유용합니다.

2. 파이썬 코드로 구현한다면?

import numpy as np

# 원래 데이터 샘플
original_data = np.array([23, 45, 56, 12, 9, 38, 56, 48, 20, 8])

# 부트스트랩 샘플을 위한 반복 횟수
n_bootstrap_samples = 1000

# 부트스트랩 샘플의 평균을 저장할 리스트
bootstrap_means = []

for _ in range(n_bootstrap_samples):
    # 복원 추출로 부트스트랩 샘플 생성
    bootstrap_sample = np.random.choice(original_data, size=len(original_data), replace=True)
    
    # 부트스트랩 샘플의 평균 계산
    bootstrap_mean = np.mean(bootstrap_sample)
    
    # 계산한 평균을 리스트에 저장
    bootstrap_means.append(bootstrap_mean)

# 부트스트랩으로 얻은 평균의 분포에서 신뢰구간 계산
lower_bound = np.percentile(bootstrap_means, 2.5)
upper_bound = np.percentile(bootstrap_means, 97.5)

print(f"원래 데이터 샘플의 평균: {np.mean(original_data):.2f}")
print(f"부트스트랩 평균의 95% 신뢰구간: ({lower_bound:.2f}, {upper_bound:.2f})")
profile
대한민국 4차 산업의 역군을 꿈꾸며.

0개의 댓글