c:mrm:2022:qs_from_stu
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
c:mrm:2022:qs_from_stu [2022/04/15 21:03] – hkimscil | c:mrm:2022:qs_from_stu [2022/04/23 18:20] (current) – hkimscil | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Qs from students ====== | ====== Qs from students ====== | ||
- | ===== 새힘학생 질문 | + | ===== 질문 1 ===== |
+ | < | ||
+ | 교수님께서 샘플 분산값을 설명하실 적에 집합 x{3, | ||
+ | 혹시 어떤 차이점이 있어서 그런 걸 까요? | ||
+ | </ | ||
+ | |||
+ | 위 학생의 질문에서 앞부분, 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}}, | ||
+ | $$ | ||
+ | |||
+ | 위에서 | ||
+ | * $\overline{X}$ 는 X bar 즉 평균을 의미하고 | ||
+ | * $\sim $ 사인은 앞의 X bar 들의 집합을 의미합니다. | ||
+ | * $\mu_{\overline{X}}$ 기호는 샘플평균들로 이루어진 집합의 평균을 뜻하며 | ||
+ | * $(\sigma_{\overline{X}})^2$ 기호는 샘플평균들의 분산값을 말합니다. | ||
+ | * 여기서 [[:Central Limit Theorem]] 이 말하는 것은 | ||
+ | * 이 평균집단의 평균 $\mu_{\overline{X}}$ 값은 모집단의 평균인 $70$ 이 되고 | ||
+ | * 분산 값은 모집단 분산값을 샘플의 크기인 n으로 나누 값이 된다는 것입니다. 즉, ${\sigma_{\overline{X}}}^2 = \frac{\sigma^2}{n}$ 입니다. 위의 예에서는 $\frac {15^2} {100} $ 입니다. | ||
+ | * 그리고 이 평균들의 집합은 정상분포를 (Normal distribution) 이룬다는 것입니다. | ||
+ | $$ | ||
+ | \begin{eqnarray*} | ||
+ | \overline{X } & \sim & N(\mu_{\overline{X}}, | ||
+ | & \sim & N(\mu, \frac{\sigma^2}{n}) \\ | ||
+ | & \sim & N(70, \frac{15^2} {100}) \\ | ||
+ | \end{eqnarray*} | ||
+ | $$ | ||
+ | $- $ | ||
+ | * 그런데 이 두 번째 식이 이 집단의 분산값을 구하는 공식이고 이것이 SS를 df로 나눈다는 식을 대체하는 것은 아닙니다. 그냥 단지 가치가 (분산값이) 서로 같다는 것을 말합니다. | ||
+ | * 위의 샘플평균들의 집합에서 (distribution of sample means) 직접 분산 값을 구한다고 하면 아래와 같이 구해야 할 것입니다. | ||
+ | |||
+ | |||
+ | $$ | ||
+ | \begin{eqnarray*} | ||
+ | (\sigma_{\bar{X}})^2 | ||
+ | & = & \frac {\Sigma{(\overline{X_{i}} - \mu_\overline{X})}} {n-1} \\ | ||
+ | \end{eqnarray*} | ||
+ | $$ | ||
+ | $- $ | ||
+ | |||
+ | * 선생님이 이야기 하는 것은 바로 위의 분산 값이 $\frac{\sigma^2}{n}$ 와 같은 값이 된다는 뜻입니다. | ||
+ | * 즉, 다시 한번 쓰면 | ||
+ | |||
+ | $$ | ||
+ | \begin{eqnarray} | ||
+ | (\sigma_{\bar{X}})^2 | ||
+ | & = & \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에서 시뮬레이션하는 스크립트입니다. | ||
< | < | ||
- | set.seed(10) | + | # random sampling |
- | n <- 10 | + | # n = 10, 100, 1000 등 정할 수 있습니다. |
- | s1 <- rnorm(n, mean = 100, sd = 10) | + | # 아래는 n명의 샘플사이즈로 샘플링을 함을 예로 듭니다. |
- | mean(s1) | + | n <- 100 |
- | sd(s1) # r 펑션으로 표준편차구하기 | + | |
- | error <- s1-mean(s1) | + | # 모집단의 평균은 70, 표준편차는 15를 가정합니다 |
- | error.sq <- error^2 | + | pop.mean <- 70 |
- | sum.error.sq <- sum(error.sq) | + | pop.sd <- 15 |
- | df <- n-1 # 이 값이 df 값 | + | |
- | var.cal <- sum.error.sq/ | + | |
- | sd.cal <- sqrt(var.cal) # 실제 계산한 | + | |
- | sd.cal # 계산한 sd값 출력 | + | |
- | sd.cal == sd(s1) # 같은 값인지 확인 | + | |
- | # n이 아주 크다면 n 이나 n-1이나 차이가 없다 | + | # n=10의 |
- | # 아래는 | + | set.seed(1) |
- | set.seed(10) | + | s1 <- rnorm(n, |
- | n <- 100000000 | + | |
- | s1 <- rnorm(n, mean = 100, sd = 10) | + | |
- | mean(s1) | + | |
- | sd(s1) # 이것이 n-1로 구한 r 펑션에서의 sd값 | + | |
- | error <- s1-mean(s1) | + | # 평균을 알아봅니다. 이것이 어디에 쓰이지는 않습니다. |
- | error.sq <- error^2 | + | mean(s1) |
- | sum.error.sq <- sum(error.sq) # 분산값 구하기에서 SS 파트 | + | |
- | df <- n-1 # df 파트 | + | |
- | var.cal <- sum.error.sq/ | + | |
- | sd.cal <- sqrt(var.cal) # 계산해서 구한 표준편차값 | + | |
- | sd.cal | + | |
- | sd.cal == sd(s1) # 동일함. 여기까지는 위의 예와 같음 | + | |
- | # tweak 여기에 더하여 만약에 n-1 대신 | + | |
- | var.cal2 <- sum.error.sq/n | + | # iteration = 100, 1000, 10000 |
- | sd.cal2 <- sqrt(var.cal) | + | # iter 번을 샘플링합니다 |
- | sd.cal2 | + | # 그리고 이를 iter 개의 NA로 채워서 means에 저장합니다. |
- | sd.cal2 == sd(s1) | + | iter <- 1000000 |
+ | means <- rep (NA, iter) | ||
+ | |||
+ | # 루프문을 통해서 위의 iter 개의 means[i]에 | ||
+ | # 샘플의 (샘플 숫자 = n) 평균을 구해서 저장합니다 | ||
+ | for(i in 1:iter){ | ||
+ | means[i] = mean(rnorm(n, pop.mean, pop.sd)) | ||
+ | } | ||
+ | |||
+ | # 이 iter 개의 샘플평균들의 집합의 평균 (m), | ||
+ | # 분산 (v1), 표준편차를 (sd1) 구해봅니다. | ||
+ | m <- mean(means) | ||
+ | # 아래 값이 평균들 분포의 분산값입니다. 즉, SS/df 로 구한 값입니다. | ||
+ | v1 <- var(means) | ||
+ | # 위의 값은 sum((means - m)^2) # 을 (SS 부분) 구한 후 | ||
+ | # iter - 1 값으로 | ||
+ | v1 | ||
+ | sum((means - m)^2) / (iter - 1) | ||
+ | # 위의 값은 아래 | ||
+ | |||
+ | sd1 <- sd(means) # 이 값이 평균분포의 표준편차값입니다. | ||
+ | m | ||
+ | v1 | ||
+ | sd1 | ||
+ | |||
+ | # 아래는 평균들분포의 표준편차가 (표준오차) | ||
+ | # 모집단의 표준편차 제곱 값을 n 으로 (샘플사이즈, | ||
+ | # 나눈 값입니다. | ||
+ | se.sq <- (pop.sd^2) / n | ||
+ | se.sq | ||
+ | |||
+ | # 위에서 평균들의 집합이 무한대라면 | ||
+ | # v1 과 se.sq 값은 같게 됩니다. | ||
+ | # iter 번 샘플링을 한 경우에도 두 값이 아주 비슷합니다. | ||
</ | </ | ||
+ | |||
+ | 아래는 위 스크립트의 아웃풋입니다. | ||
+ | |||
+ | < | ||
+ | > | ||
+ | > # random sampling | ||
+ | > # n = 10, 100, 1000 등 정할 수 있습니다. | ||
+ | > # 아래는 n명의 샘플사이즈로 샘플링을 함을 예로 듭니다. | ||
+ | > n <- 100 | ||
+ | > | ||
+ | > # 모집단의 평균은 70, 표준편차는 15를 가정합니다 | ||
+ | > pop.mean <- 70 | ||
+ | > pop.sd <- 15 | ||
+ | > | ||
+ | > # n=10의 샘플을 랜덤하게 뽑습니다. | ||
+ | > set.seed(1) | ||
+ | > s1 <- rnorm(n, pop.mean, pop.sd) | ||
+ | > | ||
+ | > # 평균을 알아봅니다. 이것이 어디에 쓰이지는 않습니다. | ||
+ | > mean(s1) | ||
+ | [1] 71.63331 | ||
+ | > | ||
+ | > | ||
+ | > # iteration = 100, 1000, 10000 | ||
+ | > # iter 번을 샘플링합니다 | ||
+ | > # 그리고 이를 iter 개의 NA로 채워서 means에 저장합니다. | ||
+ | > iter <- 1000000 | ||
+ | > means <- rep (NA, iter) | ||
+ | > | ||
+ | > # 루프문을 통해서 위의 iter 개의 means[i]에 | ||
+ | > # 샘플의 (샘플 숫자 = n) 평균을 구해서 저장합니다 | ||
+ | > for(i in 1:iter){ | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > # 이 iter 개의 샘플평균들의 집합의 평균 (m), | ||
+ | > # 분산 (v1), 표준편차를 (sd1) 구해봅니다. | ||
+ | > m <- mean(means) | ||
+ | > # 아래 값이 평균들 분포의 분산값입니다. 즉, SS/df 로 구한 값입니다. | ||
+ | > v1 <- var(means) | ||
+ | > # 위의 값은 sum((means - m)^2) # 을 (SS 부분) 구한 후 | ||
+ | > # iter - 1 값으로 (df 부분) 나눠주어서 구해도 됩니다. | ||
+ | > v1 | ||
+ | [1] 2.248648 | ||
+ | > sum((means - m)^2) / (iter - 1) | ||
+ | [1] 2.248648 | ||
+ | > # 위의 값은 아래 sd(means) 와 같을 겁니다. | ||
+ | > | ||
+ | > sd1 <- sd(means) # 이 값이 평균분포의 표준편차값입니다. | ||
+ | > m | ||
+ | [1] 70.00091 | ||
+ | > v1 | ||
+ | [1] 2.248648 | ||
+ | > sd1 | ||
+ | [1] 1.499549 | ||
+ | > | ||
+ | > # 아래는 평균들분포의 표준편차가 (표준오차) | ||
+ | > # 모집단의 표준편차 제곱 값을 n 으로 (샘플사이즈, | ||
+ | > # 나눈 값입니다. | ||
+ | > se.sq <- (pop.sd^2) / n | ||
+ | > se.sq | ||
+ | [1] 2.25 | ||
+ | > | ||
+ | > # 위에서 평균들의 집합이 무한대라면 (현재는 천이지만) | ||
+ | > # v1 과 se.sq 값은 같게 됩니다. | ||
+ | > # iter 번 샘플링을 한 경우에도 두 값이 아주 비슷합니다. | ||
+ | > | ||
+ | </ | ||
+ | |||
+ | 샘플평균들을 (n= n개의) 모아놓은 집합에서 (sampling distribution 혹은 distribution of sample means 혹은 distribution of the sample mean) 이 평균은 모집단의 평균이고 표준편차는 sqrt(모집단분산/ | ||
+ | < | ||
+ | > 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 | ||
+ | > | ||
+ | </ | ||
+ | |||
+ |
c/mrm/2022/qs_from_stu.1650024233.txt.gz · Last modified: 2022/04/15 21:03 by hkimscil