User Tools

Site Tools


c:mrm:2022:qs_from_stu

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
c:mrm:2022:qs_from_stu [2022/04/21 14:10] hkimscilc:mrm:2022:qs_from_stu [2022/04/22 00:35] hkimscil
Line 5: Line 5:
 혹시 어떤 차이점이 있어서 그런 걸 까요? 혹시 어떤 차이점이 있어서 그런 걸 까요?
 </blockquote> </blockquote>
 +
 위 학생의 질문에서 앞부분, X = {3, 4, 3, 4, 6} 의 분산값을 구하기 위해서 SS를 n-1로 나눈다는 이야기는 맞습니다. 그러나, 뒤의 N(70, 15^2) 부분에 대한 이해는 약간 정리가 안되어 있습니다. 이를 설명해 보겠습니다.  위 학생의 질문에서 앞부분, X = {3, 4, 3, 4, 6} 의 분산값을 구하기 위해서 SS를 n-1로 나눈다는 이야기는 맞습니다. 그러나, 뒤의 N(70, 15^2) 부분에 대한 이해는 약간 정리가 안되어 있습니다. 이를 설명해 보겠습니다. 
  
 위에서 N(70, 15^2)은 평균이 70이고 표준편차가 15인 (따라서 분산이 15^2인) 모집단을 (population) 의미하는 것입니다. 선생님은 이 모집단에서 n=100인 샘플을 구해 (샘플링을 하여서) 그 평균값을 기록하고, 다시 이 샘플을 모집단에 다시 넣고, 샘플링을 하여 또 평균값을 기록하는 것을 반복하여 **이 평균값의 집합을** 모아 놓는다는 것을 말하였습니다. 이것을 기호로 다시 표현하면 아래와 같이 표현할 수 있습니다. 위에서 N(70, 15^2)은 평균이 70이고 표준편차가 15인 (따라서 분산이 15^2인) 모집단을 (population) 의미하는 것입니다. 선생님은 이 모집단에서 n=100인 샘플을 구해 (샘플링을 하여서) 그 평균값을 기록하고, 다시 이 샘플을 모집단에 다시 넣고, 샘플링을 하여 또 평균값을 기록하는 것을 반복하여 **이 평균값의 집합을** 모아 놓는다는 것을 말하였습니다. 이것을 기호로 다시 표현하면 아래와 같이 표현할 수 있습니다.
 +
 $$ $$
 \overline{X } \sim N(\mu_{\overline{X}}, {\sigma_{\overline{X}}}^2) \overline{X } \sim N(\mu_{\overline{X}}, {\sigma_{\overline{X}}}^2)
 $$ $$
 +
 위에서  위에서 
   * $\overline{X}$ 는 X bar 즉 평균을 의미하고    * $\overline{X}$ 는 X bar 즉 평균을 의미하고 
   * $\sim $ 사인은 앞의 X bar 들의 집합을 의미합니다. 그리고   * $\sim $ 사인은 앞의 X bar 들의 집합을 의미합니다. 그리고
-  * 이 집단에서의 평균 $\mu_{\overline{X}}$ 값은 $70$ 이 되고 +  * 이 집단에서의 평균 $\mu_{\overline{X}}$ 값은 $ 70 $ 이 되고 
   * ${\sigma_{\overline{X}}}^2 = \frac{\sigma^2}{n}$ 이 된다는 뜻입니다.    * ${\sigma_{\overline{X}}}^2 = \frac{\sigma^2}{n}$ 이 된다는 뜻입니다. 
-    * 위에서 뒤쪽의 $\sigma^2$ 은 모집단의 (population) 시그마 제곱을 (분산) 의미합니다. +    * 위에서 뒤쪽의 $\sigma^2 $ 은 모집단의 (population) 시그마 제곱을 (분산) 의미합니다. 
-  * 그런데 이 두번째 식이 이 집단의 분산값을 구하는 공식이고 이것이 SS를 df로 나눈다는 식을 대체하는 것은 아닙니다.  + 
-  * 사실 위의 집합에서 (이것을 distribution of sample means라고 부른다고 했습니다) 직접 분산값을 구한다고 하면 아래와 같이 구해야 할 것입니다.+$$ 
 +\begin{eqnarray*} 
 +\overline{X } & \sim & N(\mu_{\overline{X}}, {\sigma_{\overline{X}}}^2) \\ 
 +& \sim & N(\mu, \frac{\sigma^2}{n}) \\ 
 +& \sim & N(70, \frac{15^2} {100}) \\ 
 +\end{eqnarray*} 
 +$$  
 +$- $ 
 +  * 그런데 이 두 번째 식이 이 집단의 분산값을 구하는 공식이고 이것이 SS를 df로 나눈다는 식을 대체하는 것은 아닙니다. 그냥 단지 가치가 (분산값이) 서로 같다는 것을 말합니다.  
 +  * 위의 샘플평균들의 집합에서 (distribution of sample means) 직접 분산 값을 구한다고 하면 아래와 같이 구해야 할 것입니다. 
 + 
 $$ $$
 \begin{eqnarray*} \begin{eqnarray*}
Line 25: Line 39:
 \end{eqnarray*} \end{eqnarray*}
 $$ $$
 +$- $
 +
   * 선생님이 이야기 하는 것은 바로 위의 분산 값이 $\frac{\sigma^2}{n}$ 와 같은 값이 된다는 뜻입니다.   * 선생님이 이야기 하는 것은 바로 위의 분산 값이 $\frac{\sigma^2}{n}$ 와 같은 값이 된다는 뜻입니다.
   * 즉, 다시 한번 쓰면    * 즉, 다시 한번 쓰면 
 +
 $$ $$
 \begin{eqnarray} \begin{eqnarray}
 (\sigma_{\bar{X}})^2  & = & \frac {SS} {df} \\ (\sigma_{\bar{X}})^2  & = & \frac {SS} {df} \\
 & = & \frac {\Sigma{(\overline{X_{i}} - \mu_\overline{X})}} {n-1} \\ & = & \frac {\Sigma{(\overline{X_{i}} - \mu_\overline{X})}} {n-1} \\
-& = & \frac{\sigma^2}{n}+& = & \frac{\sigma^2}{n} \\ 
 +& = & \frac{15^2}{100}
 \end{eqnarray} \end{eqnarray}
 $$ $$
-위에서 (2)와 (3)은 그 값이 (value) 같다는 뜻입니다. 아래는 그것을 R에서 시뮬레이션하는 스크립트입니다.+위에서 (2)와 (3)은 그 값이 (value) 같다는 뜻입니다. (4)는 n = 100 일 경우의 샘플평균집합의 분산값입니다. 아래는 그것을 R에서 시뮬레이션하는 스크립트입니다.
  
 <code> <code>
 # random sampling  # random sampling 
 # n = 10, 100, 1000 등 정할 수 있습니다. # n = 10, 100, 1000 등 정할 수 있습니다.
-# 아래는 10명의 샘플사이즈로 샘플링을 함을 예로 듭니다. +# 아래는 n명의 샘플사이즈로 샘플링을 함을 예로 듭니다. 
-n <- 10+n <- 100
  
 # 모집단의 평균은 70, 표준편차는 15를 가정합니다 # 모집단의 평균은 70, 표준편차는 15를 가정합니다
Line 55: Line 73:
  
 # iteration = 100, 1000, 10000 # iteration = 100, 1000, 10000
-백만법을 샘플링하기 위해서 iter = 백만으로 지정합니다 +iter 번을 샘플링합니다 
-# 그리고 이를 백만개의 NA로 채워서 means에 저장합니다. +# 그리고 이를 iter 개의 NA로 채워서 means에 저장합니다. 
-iter <- 1000+iter <- 1000000
 means <- rep (NA, iter) means <- rep (NA, iter)
  
-# 루프문을 통해서 위의 iter 개의 means[i]에 샘플의 (n=10) +# 루프문을 통해서 위의 iter 개의 means[i]에  
-평균을 구해서 저장합니다+샘플의 (샘플 숫자 n) 평균을 구해서 저장합니다
 for(i in 1:iter){ for(i in 1:iter){
   means[i] = mean(rnorm(n, pop.mean, pop.sd))   means[i] = mean(rnorm(n, pop.mean, pop.sd))
 } }
  
-# 이 개의 샘플평균들의 집합의 평균 (m), +# 이 iter 개의 샘플평균들의 집합의 평균 (m), 
 # 분산 (v1), 표준편차를 (sd1) 구해봅니다.  # 분산 (v1), 표준편차를 (sd1) 구해봅니다. 
 m <- mean(means) m <- mean(means)
 # 아래 값이 평균들 분포의 분산값입니다. 즉, SS/df 로 구한 값입니다. # 아래 값이 평균들 분포의 분산값입니다. 즉, SS/df 로 구한 값입니다.
 v1 <- var(means) v1 <- var(means)
-# 위의 값은  +# 위의 값은 sum((means - m)^2) # 을 (SS 부분) 구한 후
-sum((means - m)^2) # 을 (SS 부분) 구한 후+
 # iter - 1 값으로 (df 부분) 나눠주어서 구해도 됩니다. # iter - 1 값으로 (df 부분) 나눠주어서 구해도 됩니다.
 +v1 
 sum((means - m)^2) / (iter - 1) sum((means - m)^2) / (iter - 1)
 +# 위의 값은 아래 sd(means) 와 같을 겁니다.
  
 sd1 <- sd(means) # 이 값이 평균분포의 표준편차값입니다. sd1 <- sd(means) # 이 값이 평균분포의 표준편차값입니다.
Line 89: Line 108:
 # 위에서 평균들의 집합이 무한대라면 (현재는 천이지만)  # 위에서 평균들의 집합이 무한대라면 (현재는 천이지만) 
 # v1 과 se.sq 값은 같게 됩니다. # v1 과 se.sq 값은 같게 됩니다.
-천명인 이 경우에도 두 값이 아주 비슷합니다.+iter 번 샘플링을 한 경우에도 두 값이 아주 비슷합니다.
  
 </code> </code>
Line 99: Line 118:
 > # random sampling  > # random sampling 
 > # n = 10, 100, 1000 등 정할 수 있습니다. > # n = 10, 100, 1000 등 정할 수 있습니다.
-> # 아래는 10명의 샘플사이즈로 샘플링을 함을 예로 듭니다. +> # 아래는 n명의 샘플사이즈로 샘플링을 함을 예로 듭니다. 
-> n <- 10+> n <- 100
  
 > # 모집단의 평균은 70, 표준편차는 15를 가정합니다 > # 모집단의 평균은 70, 표준편차는 15를 가정합니다
Line 112: Line 131:
 > # 평균을 알아봅니다. 이것이 어디에 쓰이지는 않습니다. > # 평균을 알아봅니다. 이것이 어디에 쓰이지는 않습니다.
 > mean(s1)  > mean(s1) 
-[1] 71.98304+[1] 71.63331
  
  
 > # iteration = 100, 1000, 10000 > # iteration = 100, 1000, 10000
-> # 백만법을 샘플링하기 위해서 iter = 백만으로 지정합니다 +> # iter 번을 샘플링합니다 
-> # 그리고 이를 백만개의 NA로 채워서 means에 저장합니다. +> # 그리고 이를 iter 개의 NA로 채워서 means에 저장합니다. 
-> iter <- 1000+> iter <- 1000000
 > means <- rep (NA, iter) > means <- rep (NA, iter)
  
-> # 루프문을 통해서 위의 iter 개의 means[i]에 샘플의 (n=10) +> # 루프문을 통해서 위의 iter 개의 means[i]에  
-> # 평균을 구해서 저장합니다+> # 샘플의 (샘플 숫자 n) 평균을 구해서 저장합니다
 > for(i in 1:iter){ > for(i in 1:iter){
 +   means[i] = mean(rnorm(n, pop.mean, pop.sd)) +   means[i] = mean(rnorm(n, pop.mean, pop.sd))
 + } + }
  
-> # 이 개의 샘플평균들의 집합의 평균 (m), +> # 이 iter 개의 샘플평균들의 집합의 평균 (m), 
 > # 분산 (v1), 표준편차를 (sd1) 구해봅니다.  > # 분산 (v1), 표준편차를 (sd1) 구해봅니다. 
 > m <- mean(means) > m <- mean(means)
 > # 아래 값이 평균들 분포의 분산값입니다. 즉, SS/df 로 구한 값입니다. > # 아래 값이 평균들 분포의 분산값입니다. 즉, SS/df 로 구한 값입니다.
 > v1 <- var(means) > v1 <- var(means)
-> # 위의 값은  +> # 위의 값은 sum((means - m)^2) # 을 (SS 부분) 구한 후
-> # sum((means - m)^2) # 을 (SS 부분) 구한 후+
 > # iter - 1 값으로 (df 부분) 나눠주어서 구해도 됩니다. > # iter - 1 값으로 (df 부분) 나눠주어서 구해도 됩니다.
 +> v1 
 +[1] 2.248648
 > sum((means - m)^2) / (iter - 1) > sum((means - m)^2) / (iter - 1)
-[1] 23.54275+[1] 2.248648 
 +> # 위의 값은 아래 sd(means) 와 같을 겁니다.
  
 > sd1 <- sd(means) # 이 값이 평균분포의 표준편차값입니다. > sd1 <- sd(means) # 이 값이 평균분포의 표준편차값입니다.
 > m > m
-[1] 69.89407+[1] 70.00091
 > v1 > v1
-[1] 23.54275+[1] 2.248648
 > sd1 > sd1
-[1] 4.852087+[1] 1.499549
  
 > # 아래는 평균들분포의 표준편차가 (표준오차)  > # 아래는 평균들분포의 표준편차가 (표준오차) 
Line 151: Line 172:
 > se.sq <- (pop.sd^2) / n > se.sq <- (pop.sd^2) / n
 > se.sq  > se.sq 
-[1] 22.5+[1] 2.25
  
 > # 위에서 평균들의 집합이 무한대라면 (현재는 천이지만)  > # 위에서 평균들의 집합이 무한대라면 (현재는 천이지만) 
 > # v1 과 se.sq 값은 같게 됩니다. > # v1 과 se.sq 값은 같게 됩니다.
-> # 천명인 이 경우에도 두 값이 아주 비슷합니다.+> # iter 번 샘플링을 한 경우에도 두 값이 아주 비슷합니다.
  
 </code> </code>
  
- +샘플평균들을 (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점과 같이 위의 범위 밖에서 나타난 다면 이 샘플은 원래 모집단에서 나온 샘플이 아닐 가능성이 아주 높다고 결론을 내릴 수 밖에 없습니다. 바로 이 마지막 예시는 이 샘플이 원래 모집단에서 나온 샘플이 아닌 머리가 좋아지는 약을 복용한 집단에서 나온 샘플이라는 생각을 뒤받침해 주는 결과가 됩니다
- +
-런데 추가로 . . . +
 <code> <code>
-set.seed(10+> se <- sqrt(se.sq
-<- 10 +> se 
-s1 <rnorm(n, mean = 100, sd = 10) +[1] 4.743416 
-mean(s1) # r 펑션으로 평균구하기 +> se*2 
-sd(s1) # r 펑션으로 표준편차구하기+[1] 9.486833 
 +> se2 <- se*2 
 +> pop.m se2 
 +[1] 90.51317 
 +> pop.m + se2 
 +[1] 109.4868 
 +>  
 +</code>
  
-error <- s1-mean(s1) 
-error.sq <- error^2 
-sum.error.sq <- sum(error.sq) # 이 값이 ss 파트 
-df <- n-1 # 이 값이 df 값  
-var.cal <- sum.error.sq/df # 실제 계산한 분산값 
-sd.cal <- sqrt(var.cal) # 실제 계산한 표준편차 값 
-sd.cal # 계산한 sd값 출력 
-sd.cal == sd(s1) # 같은 값인지 확인 
  
-# n이 아주 크다면 n 이나 n-1이나 차이가 없다 
-# 아래는 샘플의 크기가 일억인 경우 
-set.seed(10) 
-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 
-sum.error.sq <- sum(error.sq) # 분산값 구하기에서 SS 파트 
-df <- n-1 # df 파트 
-var.cal <- sum.error.sq/df # 계산해서 구한 분산값  
-sd.cal <- sqrt(var.cal) # 계산해서 구한 표준편차값 
-sd.cal 
-sd.cal == sd(s1) # 동일함. 여기까지는 위의 예와 같음 
- 
-# tweak 여기에 더하여 만약에 n-1 대신 n으로 나눠주면 어떻게 될까? 
-var.cal2 <- sum.error.sq/n 
-sd.cal2 <- sqrt(var.cal) 
-sd.cal2 
-sd.cal2 == sd(s1) 
- 
-</code> 
c/mrm/2022/qs_from_stu.txt · Last modified: 2022/04/23 18:20 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki