평균과 SEM의 부트스트랩 복제값
이번 연습 문제에서는 셰필드 기상 관측소(Sheffield Weather Station)의 연간 평균 강수량에 대한 확률 밀도 함수(PDF)를 부트스트랩으로 추정합니다. 셰필드 기상 관측소가 1883년부터 2015년까지의 모든 측정을 반복할 수 있다고 가정했을 때 얻게 될 연간 평균 강수량을 추정하는 것입니다. 이는 평균에 대한 확률적 추정입니다. PDF를 히스토그램으로 시각화하면 정규 분포를 따르는 것을 확인할 수 있습니다.
실제로, 그리 엄격하지 않은 조건 하에서 평균값은 항상 정규 분포를 따른다는 것이 이론적으로 증명되어 있습니다. (이는 일반적인 경우에는 해당되지 않으며, 평균과 일부 통계량에만 적용됩니다.) 이 분포의 표준 편차를 평균의 표준 오차(standard error of the mean, SEM)라고 하며, 데이터의 표준 편차를 데이터 포인트 수의 제곱근으로 나눈 값입니다. 즉, sem = np.std(data) / np.sqrt(len(data))로 계산합니다. 해커 통계(hacker statistics) 방식을 사용하면 이 결과를 직접 유도하지 않고도 동일한 값을 얻을 수 있으며, 부트스트랩 복제값을 통해 이 결과를 검증해 볼 것입니다.
데이터셋은 rainfall이라는 배열로 미리 불러와져 있습니다.
이 연습은 강의의 일부입니다
Python으로 하는 통계적 사고 (2부)
연습 안내
draw_bs_reps()함수와rainfall배열을 사용하여 연간 강수량 평균에 대한 부트스트랩 복제값을10000개 추출하세요. 힌트: 평균을 계산하려면func에np.mean을 전달하세요.- 참고로,
draw_bs_reps()는data,func,size세 가지 인수를 받습니다.
- 참고로,
rainfall의 평균의 표준 오차를 계산하고 출력하세요.- 계산 공식은
np.std(data) / np.sqrt(len(data))입니다.
- 계산 공식은
- 부트스트랩 복제값
bs_replicates의 표준 편차를 계산하고 출력하세요. density=True키워드 인수와 빈(bin)50개를 사용하여 복제값의 히스토그램을 그리세요.- 답변을 제출하면 플롯을 확인할 수 있습니다!
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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()