This is an old revision of the document!
Qs from students
질문 1
교수님께서 샘플 분산값을 설명하실 적에 집합 x{3,4,3,4,6}을 예시로 드시면서, 샘플평균은 항상 모집단의 평균보다 작아 이를 극복하기 위해 n-1로 나누어준다고 하셨던 것 같습니다. 따라서 이 집합의 갯수 n=5가 아니라 n-1값인 4로 나누어 분산 값 1.5를 얻었구요. 그런데 뒤에 N(70,15^2), n=100인 샘플을 취할때나 그 이후 샘플 분산을 구할 때는 n-1을 하지 않은 것 같아서요.
혹시 어떤 차이점이 있어서 그런 걸 까요?
위 학생의 질문에서 앞부분, X = {3, 4, 3, 4, 6} 의 분산값을 구하기 위해서 SS를 n-1로 나눈다는 이야기는 맞습니다. 그러나, 뒤의 N(70, 15^2) 부분에 대한 이해는 약간 정리가 안되어 있습니다. 이를 설명해 보겠습니다.
위에서 N(70, 15^2)은 평균이 70이고 표준편차가 15인 (따라서 분산이 15^2인) 모집단을 (population) 의미하는 것입니다. 선생님은 이 모집단에서 n=100인 샘플을 구해 (샘플링을 하여서) 그 평균값을 기록하고, 다시 이 샘플을 모집단에 다시 넣고, 샘플링을 하여 또 평균값을 기록하는 것을 반복하여 이 평균값의 집합을 모아 놓는다는 것을 말하였습니다. 이것을 기호로 다시 표현하면 아래와 같이 표현할 수 있습니다.
$$
\overline{X } \sim N(\mu_{\overline{X}}, {\sigma_{\overline{X}}}^2)
$$
위에서
- $\overline{X}$ 는 X bar 즉 평균을 의미하고
- $\sim $ 사인은 앞의 X bar 들의 집합을 의미합니다. 그리고
- 이 집단에서의 평균 $\mu_{\overline{X}}$ 값은 $70$ 이 되고
- ${\sigma_{\overline{X}}}^2 = \frac{\sigma^2}{n}$ 이 된다는 뜻입니다.
- 위에서 뒤쪽의 $\sigma^2$ 은 모집단의 (population) 시그마 제곱을 (분산) 의미합니다.
$$
\begin{eqnarray*}
\overline{X } & \sim & N(\mu_{\overline{X}}, {\sigma_{\overline{X}}}^2) \\
& \sim & N(\mu, \frac{\sigma^2}{n}) \dots\dots\dots, n = 100 \\
& \sim & N(70, \frac{15^2}{100}) \\
\end{eqnarray*}
$$
* 그런데 이 두번째 식이 이 집단의 분산값을 구하는 공식이고 이것이 SS를 df로 나눈다는 식을 대체하는 것은 아닙니다.
* 사실 위의 집합에서 (이것을 distribution of sample means라고 부른다고 했습니다) 직접 분산값을 구한다고 하면 아래와 같이 구해야 할 것입니다.
$$
\begin{eqnarray*}
(\sigma_{\bar{X}})^2 & = & \frac {SS} {df} \\
& = & \frac {\Sigma{(\overline{X_{i}} - \mu_\overline{X})}} {n-1} \\
\end{eqnarray*}
$$
* 선생님이 이야기 하는 것은 바로 위의 분산 값이 $\frac{\sigma^2}{n}$ 와 같은 값이 된다는 뜻입니다.
- 즉, 다시 한번 쓰면
$$
\begin{eqnarray}
(\sigma_{\bar{X}})^2 & = & \frac {SS} {df} \\
& = & \frac {\Sigma{(\overline{X_{i}} - \mu_\overline{X})}} {n-1} \\
& = & \frac{\sigma^2}{n} \\
& = & \frac{15^2}{100}
\end{eqnarray}
$$
위에서 (2)와 (3)은 그 값이 (value) 같다는 뜻입니다. (4)는 n = 100 일 경우의 샘플평균집합의 분산값입니다. 아래는 그것을 R에서 시뮬레이션하는 스크립트입니다.
# random sampling # n = 10, 100, 1000 등 정할 수 있습니다. # 아래는 10명의 샘플사이즈로 샘플링을 함을 예로 듭니다. n <- 10 # 모집단의 평균은 70, 표준편차는 15를 가정합니다 pop.mean <- 70 pop.sd <- 15 # n=10의 샘플을 랜덤하게 뽑습니다. set.seed(1) s1 <- rnorm(n, pop.mean, pop.sd) # 평균을 알아봅니다. 이것이 어디에 쓰이지는 않습니다. mean(s1) # iteration = 100, 1000, 10000 # 백만법을 샘플링하기 위해서 iter = 백만으로 지정합니다 # 그리고 이를 백만개의 NA로 채워서 means에 저장합니다. iter <- 1000 means <- rep (NA, iter) # 루프문을 통해서 위의 iter 개의 means[i]에 샘플의 (n=10) # 평균을 구해서 저장합니다 for(i in 1:iter){ means[i] = mean(rnorm(n, pop.mean, pop.sd)) } # 이 천개의 샘플평균들의 집합의 평균 (m), # 분산 (v1), 표준편차를 (sd1) 구해봅니다. m <- mean(means) # 아래 값이 평균들 분포의 분산값입니다. 즉, SS/df 로 구한 값입니다. v1 <- var(means) # 위의 값은 # sum((means - m)^2) # 을 (SS 부분) 구한 후 # iter - 1 값으로 (df 부분) 나눠주어서 구해도 됩니다. sum((means - m)^2) / (iter - 1) sd1 <- sd(means) # 이 값이 평균분포의 표준편차값입니다. m v1 sd1 # 아래는 평균들분포의 표준편차가 (표준오차) # 모집단의 표준편차 제곱 값을 n 으로 (샘플사이즈, 10) # 나눈 값입니다. se.sq <- (pop.sd^2) / n se.sq # 위에서 평균들의 집합이 무한대라면 (현재는 천이지만) # v1 과 se.sq 값은 같게 됩니다. # 천명인 이 경우에도 두 값이 아주 비슷합니다.
아래는 위 스크립트의 아웃풋입니다.
> > # random sampling > # n = 10, 100, 1000 등 정할 수 있습니다. > # 아래는 10명의 샘플사이즈로 샘플링을 함을 예로 듭니다. > n <- 10 > > # 모집단의 평균은 70, 표준편차는 15를 가정합니다 > pop.mean <- 70 > pop.sd <- 15 > > # n=10의 샘플을 랜덤하게 뽑습니다. > set.seed(1) > s1 <- rnorm(n, pop.mean, pop.sd) > > # 평균을 알아봅니다. 이것이 어디에 쓰이지는 않습니다. > mean(s1) [1] 71.98304 > > > # iteration = 100, 1000, 10000 > # 백만법을 샘플링하기 위해서 iter = 백만으로 지정합니다 > # 그리고 이를 백만개의 NA로 채워서 means에 저장합니다. > iter <- 1000 > means <- rep (NA, iter) > > # 루프문을 통해서 위의 iter 개의 means[i]에 샘플의 (n=10) > # 평균을 구해서 저장합니다 > for(i in 1:iter){ + means[i] = mean(rnorm(n, pop.mean, pop.sd)) + } > > # 이 천개의 샘플평균들의 집합의 평균 (m), > # 분산 (v1), 표준편차를 (sd1) 구해봅니다. > m <- mean(means) > # 아래 값이 평균들 분포의 분산값입니다. 즉, SS/df 로 구한 값입니다. > v1 <- var(means) > # 위의 값은 > # sum((means - m)^2) # 을 (SS 부분) 구한 후 > # iter - 1 값으로 (df 부분) 나눠주어서 구해도 됩니다. > sum((means - m)^2) / (iter - 1) [1] 23.54275 > > sd1 <- sd(means) # 이 값이 평균분포의 표준편차값입니다. > m [1] 69.89407 > v1 [1] 23.54275 > sd1 [1] 4.852087 > > # 아래는 평균들분포의 표준편차가 (표준오차) > # 모집단의 표준편차 제곱 값을 n 으로 (샘플사이즈, 10) > # 나눈 값입니다. > se.sq <- (pop.sd^2) / n > se.sq [1] 22.5 > > # 위에서 평균들의 집합이 무한대라면 (현재는 천이지만) > # v1 과 se.sq 값은 같게 됩니다. > # 천명인 이 경우에도 두 값이 아주 비슷합니다. >
샘플평균들을 (n= n개의) 모아놓은 집합에서 (sampling distribution 혹은 distribution of sample means 혹은 distribution of the sample mean) 이 평균은 모집단의 평균이고 표준편차는 sqrt(모집단분산/n) 이라고 하면, 이제 우리는 n = n개의 샘플 하나를 취했을 때 그 샘플의 평균이 어느 범위에서 나오게 될지 추측해 (추론) 볼 수 있습니다. 위에서 se.sq 값은 샘플평균들의 분산값이고 이것이 22.5 이므로 표준편차값은 이를 sqrt 한 값이 됩니다. 이 값을 se값이라고 하고 이를 두 배한 값을 모집단의 평균을 중심으로 빼고 더해 보면 그 범위가 나오는데 이것이 n = n 명의 샘플을 취했을 때 그 샘플의 평균이 존재한 범위가 됩니다. 그리고 이 범위는 se값을 2개 썼으므로 95%의 확신만을 갖습니다 (100%가 아니라). 아래는 그 범위가 90.51317 - 109.4868 임을 보여 줍니다. 만약에 내가 n = n 개의 샘플을 취했는데 그 샘플의 평균이 110점과 같이 위의 범위 밖에서 나타난 다면 이 샘플은 원래 모집단에서 나온 샘플이 아닐 가능성이 아주 높다고 결론을 내릴 수 밖에 없습니다.
> se <- sqrt(se.sq) > se [1] 4.743416 > se*2 [1] 9.486833 > se2 <- se*2 > pop.m - se2 [1] 90.51317 > pop.m + se2 [1] 109.4868 >