표집 분포 :: 통계 - mindscale
Skip to content

표집 분포

표집분포 예시

모집단: 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)