문제 6. 중심극한정리(CLT) - 각 분포의 표본의 평균 시각화
- 출제의도
- 중심극한 정리를 구현하기 위해 부트스트래핑을 구현할 수 있다.
- 이론을 시뮬레이션하여 간접 증명을 할 수 있다.
- matplot을 이용하여 데이터를 시각화 할 수 있다.
- 문제
- numpy.choice 함수를 이용하여 각 분포 평균을 내고 이를 500번 반복하여 표본 평균을 생성해 봅시다. (ex bionmial_data 에서 30개씩 뽑아 500번 반복)
- 표본의 평균들을 히스토그램으로 시각화여 정규분포를 따르는지 확인해봅시다.
- 변수
- num_samples : 표본추출할 횟수
- sample_means: 딕셔너리 자료형으로 Binomal, Uniform, Normal 의 Key값을 가지며 해당하는 values들은 각 30개씩 복원추출하여 뽑은 샘플의 평균 값을 저장. 이를 총 500번 진행
- Skeleton code
num_samples = 500
sample_means = {
"Binomial": [],
"Uniform": [],
"Normal": []
}
'''
여기에 코드를 작성해주세요
'''
#시각화
plt.figure(figsize=(15, 5))
'''
여기에 코드를 작성해주세요.
'''
출력 결과 예시
💡 문제 풀이
`내 풀이`
## seaborn으로 풀어보자
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
num_samples = 500
sample_means = {
"Binomial": [],
"Uniform": [],
"Normal": []
}
for i in range(num_samples):
binomial_sample = np.random.choice(binomial_data, 30)
binomial_mean = binomial_sample.mean()
sample_means['Binomial'].append(binomial_mean)
uniform_sample = np.random.choice(uniform_data, 30)
uniform_mean = uniform_sample.mean()
sample_means['Uniform'].append(uniform_mean)
normal_sample = np.random.choice(normal_data, 30)
normal_mean = normal_sample.mean()
sample_means['Normal'].append(normal_mean)
#시각화
plt.figure(figsize=(15, 5)) # figure는 그래프가 그려지는 화면
# Binomial
plt.subplot(1,3,1) # subplot은 그래프, (1,3)은 화면을 1행 3열로 분류
sns.histplot(data=sample_means['Binomial'], bins=20, color='blue', edgecolor=None)
plt.xlabel('Mean Value')
plt.ylabel('Frequency')
plt.title('Binomial Distribution')
# Uniform
plt.subplot(1,3,2)
sns.histplot(data=sample_means['Uniform'], bins=20, color='green', edgecolor=None)
plt.xlabel('Mean Value')
plt.ylabel('Frequency')
plt.title('Uniform Distribution')
# Normal
plt.subplot(1,3,3)
sns.histplot(data=sample_means['Normal'], bins=20, color='red', edgecolor=None)
plt.xlabel('Mean Value')
plt.ylabel('Frequency')
plt.title('Normal Distribution')
`출력 결과`