평균과 SEM의 부트스트랩 복제
이번 연습에서는 Sheffield 기상 관측소의 연평균 강수량에 대한 확률밀도함수(PDF)를 부트스트랩으로 추정해 보겠습니다. 1883년부터 2015년까지의 모든 관측을 관측소가 무한히 반복할 수 있다고 가정했을 때 얻게 될 연평균 강수량을 추정하는 것입니다. 이는 평균에 대한 ‘확률적’ 추정입니다. PDF를 히스토그램으로 그려 보면 정규분포 형태임을 확인할 수 있어요.
사실, 그다지 엄격하지 않은 조건하에서는 평균값이 항상 정규분포를 따른다는 것을 이론적으로 보일 수 있습니다. (일반적으로 모든 통계량에 적용되지는 않으며, 평균과 몇몇 통계량에만 해당합니다.) 이 분포의 표준편차는 평균의 표준 오차(SEM)라고 하며, 데이터의 표준편차를 데이터 포인트 수의 제곱근으로 나눈 값입니다. 즉, 어떤 데이터셋에 대해 sem = np.std(data) / np.sqrt(len(data))입니다. 해커 통계 접근을 사용하면 복잡한 유도를 하지 않고도 같은 결과를 얻을 수 있으며, 여기서는 부트스트랩 복제본으로 이 결과를 확인해 보겠습니다.
데이터셋은 rainfall이라는 배열로 미리 로드되어 있습니다.
이 연습은 강의의 일부입니다
Python으로 하는 통계적 사고 (2부)
연습 안내
draw_bs_reps()함수와rainfall배열을 사용해 연평균 강수량의 평균에 대한 부트스트랩 복제본10000개를 생성하세요. 힌트: 평균을 계산하려면func에np.mean을 전달하세요.- 참고로,
draw_bs_reps()는data,func,size의 3개 인수를 받습니다.
- 참고로,
rainfall의 평균 표준 오차를 계산해 출력하세요.- 계산식:
np.std(data) / np.sqrt(len(data)).
- 계산식:
- 부트스트랩 복제본
bs_replicates의 표준편차를 계산해 출력하세요. normed=True키워드 인수와50개의 빈을 사용해 복제본의 히스토그램을 그리세요.- Submit을 눌러 플롯을 확인하세요!
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Take 10,000 bootstrap replicates of the mean: bs_replicates
bs_replicates = ____
# Compute and print SEM
sem = ____ / np.sqrt(____)
print(sem)
# Compute and print standard deviation of bootstrap replicates
bs_std = ____
print(bs_std)
# Make a histogram of the results
_ = plt.hist(____, ____=50, ____=True)
_ = plt.xlabel('mean annual rainfall (mm)')
_ = plt.ylabel('PDF')
# Show the plot
plt.show()