사실 강사님께서 정말 열심히 준비하셨고, 2-3주차 때의 AARRR Framework도 복습할 수 있어서 뜻깊은 모듈이긴 했는데, 사실 이 때
강사님께서 만든 '중심극한정리' 예시가 살짝 아쉬웠다.
수업 시간 때의 첫 예시는 균등 분포, 이항 분포, 정규 분포의 '반복수'가 1000번인 경우에 해당한다. 표본의 크기와는 상관이 없다.
균등 분포, 이항 분포, 정규 분포에서 30개씩 표본을 뽑고 평균을
구한 다음, 반복수를 500번으로 설정(이게 CLT예시)
물론 이렇게 해도 되긴 한다. 위의 이항분포(파란색)와 아래의 이항분포를 비교하면 되니까.
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import uniform
np.random.seed(42)
sample_sizes = [3, 5, 10, 15, 20, 30]
num_samples = 500
true_dist = uniform(loc=0, scale=10)
plt.figure(figsize=(15, 8))
for i, n in enumerate(sample_sizes):
sample_means = []
for _ in range(num_samples):
sample = true_dist.rvs(size=n)
sample_mean = np.mean(sample)
sample_means.append(sample_mean)
plt.subplot(2, 3, i+1)
plt.hist(sample_means, bins=30, color="skyblue", edgecolor="black", alpha=0.7, density=True)
plt.title(f"Uniform Dist. Sample Means (n={n})")
plt.xlabel("Sample Mean")
plt.ylabel("Density")
plt.tight_layout()
plt.show()
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import expon #
np.random.seed(42)
sample_sizes = [3, 5, 10, 15, 20, 30]
num_samples = 500
true_dist = expon(scale=1) # 평균=1, 분산=1 (scale=1/λ)
plt.figure(figsize=(15, 8))
for i, n in enumerate(sample_sizes):
sample_means = []
for _ in range(num_samples):
sample = true_dist.rvs(size=n)
sample_mean = np.mean(sample)
sample_means.append(sample_mean)
plt.subplot(2, 3, i+1)
plt.hist(sample_means, bins=30, color="tomato", edgecolor="black", alpha=0.7, density=True)
plt.title(f"Exponential Dist. Sample Means (n={n})")
plt.xlabel("Sample Mean")
plt.ylabel("Density")
plt.tight_layout()
plt.show()