Central Limit Theorem (중심극한정리)
mean의 sampling distribution의 다음과 같은 속성을 기술하는 Theorem.
population이 무엇이든지 간에
sample size ($N$, 1개의 sample의 element의 수)가 충분히 크다(흔히 30 or 40이상)면,
해당 sample의 mean (또는 합계치를 사용할 수도 있음) 을
random variable로 삼아 얻은 sampling distribution은
normal distribution에 가까워진다는 Theorem(정리).
표본의 mean 혹은 합계치가 normal distribution이 된다는 것(즉, sampling distribution에 해당하는 내용임)이지
population이 항상 normal distribution임을 보장하는 정리가 아님을 주의할 것.
- mean이 $\mu$, variance $\sigma^2$인 population에서
한 sample이 $N$개의 element를 가지도록 sampling할 경우,
해당 sampling의 여러 차례(ideal하게는 무한번 반복)하여
얻은 sample들의 mean 또는 합으로 구한 - sampling distribution 의 mean과 variance는 다음과 같다.
- $\mu_{\text{sample}}=\mu$
- $\sigma^2_{\text{sample}}=\dfrac{\sigma^2}{N}$
- $N$, sample size가 증가할 수록,
해당 sampling의 mean의 sampling distribution은 normal distribution에 가까워지며,
해당 sampling distribution의 mean은 population mean에 가까워짐
(mean으로 구한 경우)- population의 distribution이 어떤 형태이었던지에 상관없이 sample들의 mean에 대한 sampling distribution은 $N$이 커질수록 normal distribution이 된다. ← Central Limit Theorem!!
- 만약 population도 normal distribution이면,
sampling distribution of the mean 역시 normal distribution임. - population이 normal distribution이 아니더라도, $N\ge30$ 정도의 충분히 큰 sample size인 경우엔
sampling distribution of the mean은 normal distribution을 가지게 됨.
- 만약 population도 normal distribution이면,
- 이때 $N$개의 element로 구성된 sample을 얻는 과정, 즉 sampling에서 각각의 샘플은 서로 독립(independent)이 되도록 얻어짐.
- 또한 모든 $N$개의 element로 구성된 sample은 같은 population에서 얻어져야 함.
- population의 distribution이 어떤 형태이었던지에 상관없이 sample들의 mean에 대한 sampling distribution은 $N$이 커질수록 normal distribution이 된다. ← Central Limit Theorem!!
- 💡 약 30 or 40개 이상의 sample을 수집하고 이들의 mean값을 해당 sample의 모집단의 mean으로 여겨도 된다는 애기임.)
요약.
- 적절한 size $N \ge 30 \text{ or }40$의 sample들로 얻어진 sampling distribution은 항상 normal distribution이다.
- 해당 samplint distribution 의 mean은 population의 mean임 : $ \mu_{\text{sample}}=\mu$.
- 해당 samplint distribution 의 variance은 다음이 성립 : $\sigma^2_{\text{sample}}=\dfrac{\sigma^2}{N}$
Example 1
1이 될 확률이 $P$인 $N$번의 Bernoulli trial을 독립적으로 수행하고 결과값을 다 더한 경우, 해당 결과값은 Binomial distribution $(N,P)$를 확률분포를 따르게 됨.
Bernoulli distribution에서
estimated value(=mean)는 $P$이고,
standard deviation은 $\sqrt{P(1-P)}$임.
하지만, 이 분포를 population으로 삼아
$N$개의 element를 가지는 sample을 뽑아 이 element들을 더한 값을 random variable로 갖는 경우
$N$이 충분히 크다면,
mean이 $\mu_{N}=NP$ 이고
standard deviation은 $\sigma_{N}=\sqrt{NP(1-P)}$인 normal distribution이 된다. ($\sigma^2_N=\frac{N^2P(1-P)}{N}$)
- $N\ge10$이고 $P\le0.1$ 인 경우, 즉 $N$이 비교적 크고 1이 될 확률이 아주 작은 경우에는 Poisson distribution 이 가까워짐.
- $N$이 크고 $P$가 아주 작지 않은 경우에는, Normal distribution 에 가까워짐.
import numpy as np
import scipy as sp
import seaborn as sns
sns.set()
# 동전던지기에서 앞면이 나올 확률분포는
# 정규분포가 아니나,
# 동전을 1000번 던진 경우의
# 앞면이 나올 횟수의 분포(sampling distibution)은
# 정규분포임.
# 무한번 10000번 던져서 sampling distribution을 만들 수는 없으니
# 여기선 50000번 10000번 던지기를 수행..
n_size = 10000
n_trials = 50000
# head 1, tail 0
coin = np.array([0,1])
n_heads =np.zeros(n_trials)
np.random.seed(1)
for i in range(0, n_trials):
n_heads[i] = sp.sum(
np.random.choice(coin, size=n_size, replace=True)
)
sns.distplot(n_heads, color = 'black')
Example 2
import numpy as np
from matplotlib import pyplot as plt
num_points = 10000
sample_size = 10
def get_population (mu, sigma, pop_size):
return np.random.randn(pop_size)*sigma+mu
def get_sampling_dist(mu, sigma,sample_size, num_sampling, ibins=None, pop_size=100000, label=None, color=None):
population = get_population(mu,sigma,pop_size)
sample_dist = np.zeros(num_sampling)
for i in range(num_sampling):
sample_idx = np.random.randint(pop_size, size=sample_size)
samples_data = population[sample_idx]
sample_dist[i] = np.mean(samples_data)
#hist, bin_edges = np.histogram
sample_sigma = sigma/np.sqrt(sample_size)
if ibins is None:
count, bins, ignored = plt.hist(sample_dist, bins='auto', density=True, color=color, label=label, alpha=0.5)
else:
count, bins, ignored = plt.hist(sample_dist, bins=ibins, density=True, color=color, label=label, alpha=0.5)
plt.legend()
plt.plot(bins, 1/(sample_sigma * np.sqrt(2 * np.pi)) *
np.exp( - (bins - mu)**2 / (2 * sample_sigma**2) ),
linewidth=2)
return bins
ibins_10 = get_sampling_dist(50,10,10,10000,color='red', label='n=10')
ibins_30 = get_sampling_dist(50,10,30,10000,ibins_10,color='blue', label='n=30')
ibins_100 = get_sampling_dist(50,10,100,10000,ibins_10,color='gray', label='n=100')
normal distibution이 population인 경우에서
sample의 사이즈에 따라, 분포가 퍼진 정도가 어떻게 달라지는지를 보여주는 script.
sample의 사이즈($N$)이 10, 30, 100인 경우를 보여줌.
population의 parameter는 다음과 같음.
- $\mu=50$
- $\sigma=10$
References
Central Limit Theorem : summary
'... > Math' 카테고리의 다른 글
[Math] The Law of Large Numbers (or The weak law of large numbers) (0) | 2022.04.21 |
---|---|
[Math] Definition of Vector Space (0) | 2022.04.05 |
[Statistics] Moment (Probability Moment) (0) | 2022.03.31 |
[Math] Vector (2) : Vector Function (0) | 2022.03.28 |
[Math] Vector (1) (0) | 2022.03.28 |