표집 분포
표집분포 예시
모집단: 0에서 100까지 균등분포
from scipy.stats import uniform
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10, 110, 1000)
y = uniform.pdf(x, loc=0, scale=100)
plt.plot(x, y)
크기 9인 표본
one_sample = uniform.rvs(loc=0, scale=100, size=9)
평균
np.mean(one_sample)
분산
np.var(one_sample, ddof=1)
크기 9인 표본 1000개(독립적인 1000번의 조사)
multiple_samples = uniform.rvs(loc=0, scale=100, size=(1000, 9))
평균들
means = np.mean(multiple_samples, axis=1)
평균들의 히스토그램
plt.hist(means, bins=20);
분산들
vars = np.var(multiple_samples, ddof=1, axis=1)
분산들의 히스토그램
plt.hist(vars, bins=20);
평균의 표집분포
평균의 히스토그램
fig, ax = plt.subplots()
ax.hist(means, bins=20, alpha=0.5, color='grey')
모표준편차를 이용해 그린 정규분포의 확률밀도함수
from scipy.stats import norm
ax2 = ax.twinx()
x = np.linspace(0, 100, 1000)
pop_sd = 100/np.sqrt(12)
y_n = norm.pdf(x, loc=50, scale=pop_sd/np.sqrt(9))
ax2.plot(x, y_n, color='blue', linestyle='—', label='normal')
표본표준편차를 이용해 그린 t 분포의 확률밀도함수
from scipy.stats import t
sample_sd = np.sqrt(vars[0])
y_t = t.pdf(x, df=8, loc=50, scale=sample_sd/np.sqrt(9))
ax2.plot(x, y_t, color='red', label='t')
plt.legend()
6면체 주사위를 10개 굴려서 나온 점수의 합계의 표집분포
from scipy.stats import randint
import seaborn as sns
data = randint.rvs(1, 7, size=(5000, 10))
s = data.sum(axis=1)
sns.displot(s, kde=True)