====== Why n-1 ======
문제.
우리는 모집단의 (population) 평균값을 알고 있다면 샘플의 분산값을 다음과 같이 구할 수 있다. 그리고, 이것을 모집단의 분산값으로 추정할 수 있다.
\begin{eqnarray*}
\hat{\sigma}^{2} = \dfrac {\displaystyle\sum_{i=1}^{n}{(X_{i}-\mu)}} {n}
\end{eqnarray*}
그러나, 현재 우리가 가지고 있는 것은 샘플 밖에 없다. 즉, 모집단의 평균은 알지 못하는 상태이기에 모집단 분산을 추정하는 계산에 사용할 수 없다. 따라서 샘플의 평균을 사용한다. 그런데, 샘플의 평균을 사용할 때는 분모에 N 대신에 n-1을 사용해야 한다. 왜 n-1을 사용하는것이 모집단의 분산값 추정에 도움이 되는가가 문제이다.
\begin{eqnarray*}
\hat{\sigma}^{2} \neq \frac {\displaystyle\sum_{i=1}^{n}{(X_{i}-\overline{X})}} {n}
\end{eqnarray*}
\begin{eqnarray*}
\hat{\sigma}^{2} = \frac {\displaystyle\sum_{i=1}^{n}{(X_{i}-\overline{X})}} {n-1}
\end{eqnarray*}
이 모집단의 분산값을 ($\sigma^2$) 대표함을 알아보는 것이 문제이다.
====== 직관적 이해 ======
분산은 $SS/df$ 라고 배웠는데, SS = Sum of Something Square라고 설명하고, 여기서 Something 은 error 값이라고 (개인의 점수를 평균으로 추측했을 때 틀린 만큼의 에러값) 하였다. 그리고 평균으로 예측하는 방법이 가장 작은 오차를 갖는 (예측이 들 틀리는) 방법이라고 하였다 (개인점수 중에서 평균이 제일 많이 나오므로, 평균으로 개인점수를 예측하면 제일 들 틀린다). 따라서 어느 한 집합에서 (샘플에서) 개인점수에서 평균을 빼고 이른 제곱하여 모두 더한 값은 최소값을 갖는다.
====== 시뮬레이션 이해 ======
위에서 n-1 을 사용하기 위해서 추정하는 것은
\begin{eqnarray*}
\sum_{i=1}^{n} {(X_{i}-\mu)} > \sum_{i=1}^{n} {(X_{i}-\overline{X})}
\end{eqnarray*}
라는 점이다. 따라서 n 대신 n-1로 나눠주어서 "작은 값을 갖는 경향의 문제점을" 상쇄한다.
아래는 20개의 원소를 갖는 k 집합을 예이다.
''k = {6, 4, 16, 12, 4, 13, 18, 16, 7, 11, 5, 11, 9, 11, 18, 1, 7, 2, 5, 3}''
우리는 이 집합의 평균과 분산값이 각각 8.95 와 27.2475 임을 알고 있다. 이 때 분산값은 24.2475는 SS값을 구한 후, 이를 N으로 나눈 값이다.
위의 모집단에서 3개의 샘플을 취하여 S1 = {4, 11, 18}을 얻었고, 그 평균값은 11이다. 위의 샘플에서 모집단의 분산값을 예측한다고 할 때, 모집단의 (N=20인) 평균값을 안다고 하면 우리는
| s1 | mu | deviation score | ds2 |
| 4 | 8.95 | -4.95 | 24.5025 |
| 11 | 8.95 | 2.05 | 4.2025 |
| 18 | 8.95 | 9.05 | 81.9025 |
| | | SSpop | 110.6075 |
SSpop 값으로 110.6075 값을 얻는다. 그러나, 위의 경우는 특별한 예이고 대개의 경우 우리는 모집단의 평균값을 알지 못한다. 이 경우 우리는 3개로 취한 샘플의 평균값을 이용하여 SS 부분을 구하게 된다 (SSsamp).
| s1 | $\overline{X}$ | deviation score | ds2 |
| 4 | 11 | -7 | 49 |
| 11 | 11 | 0 | 0 |
| 18 | 11 | 7 | 49 |
| | | SSsamp | 98 |
이렇게 얻은 SSsamp값은 98인데, 이 값은 SSpop 값보다 작다. 아래의 R code는 이를 확인해 보는 작업이다. 각각의 샘플에서 (n=3) 취한 SSsamp 값은 SSpop값보다 작게 된다. 따라서 이 작은 값을 상쇄하기 위해서 n 대신 n-1 로 SSsamp 값을 나누어 준다.
############
set.seed(1010)
n.pop <- 20
k <- sample(1:20, n.pop, replace = T)
k
k.mean <- mean(k)
k.pvar <- var(k)*((n.pop-1)/n.pop) ## population var(k)
k.mean
k.pvar
############
n.samp <- 3
ks <- sample(k, n.samp)
ks
ks.mean <- mean(ks)
ks.var <- var(ks)
ks.pvar <- var(ks)*((n.samp-1)/n.samp)
############
ks-k.mean
ks-ks.mean
sum((ks-k.mean)^2)
sum((ks-ks.mean)^2)
############
set.seed(3) # another sample
n.samp <- 3
ks <- sample(k, n.samp)
ks
ks.mean <- mean(ks)
ks.var <- var(ks)
ks.pvar <- var(ks)*((n.samp-1)/n.samp)
############
ks-k.mean
ks-ks.mean
sum((ks-k.mean)^2)
sum((ks-ks.mean)^2)
############
set.seed(5) # another sample
n.samp <- 3
ks <- sample(k, n.samp)
ks
ks.mean <- mean(ks)
ks.var <- var(ks)
ks.pvar <- var(ks)*((n.samp-1)/n.samp)
############
ks-k.mean
ks-ks.mean
sum((ks-k.mean)^2)
sum((ks-ks.mean)^2)
############
set.seed(7) # another sample
n.samp <- 3
ks <- sample(k, n.samp)
ks
ks.mean <- mean(ks)
ks.var <- var(ks)
ks.pvar <- var(ks)*((n.samp-1)/n.samp)
############
ks-k.mean
ks-ks.mean
sum((ks-k.mean)^2)
sum((ks-ks.mean)^2)
> ############
> set.seed(1010)
> n.pop <- 20
> k <- sample(1:20, n.pop, replace = T)
> k
[1] 6 4 16 12 4 13 18 16 7 11 5 11 9 11 18 1 7 2 5 3
> k.mean <- mean(k)
> k.pvar <- var(k)*((n.pop-1)/n.pop) ## population var(k)
> k.mean
[1] 8.95
> k.pvar
[1] 27.2475
> ############
> n.samp <- 3
> ks <- sample(k, n.samp)
> ks
[1] 11 13 18
> ks.mean <- mean(ks)
> ks.var <- var(ks)
> ks.pvar <- var(ks)*((n.samp-1)/n.samp)
> ############
> ks-k.mean
[1] 2.05 4.05 9.05
> ks-ks.mean
[1] -3 -1 4
> sum((ks-k.mean)^2)
[1] 102.5075
> sum((ks-ks.mean)^2)
[1] 26
> ############
> set.seed(3) # another sample
> n.samp <- 3
> ks <- sample(k, n.samp)
> ks
[1] 4 11 18
> ks.mean <- mean(ks)
> ks.var <- var(ks)
> ks.pvar <- var(ks)*((n.samp-1)/n.samp)
> ############
> ks-k.mean
[1] -4.95 2.05 9.05
> ks-ks.mean
[1] -7 0 7
> sum((ks-k.mean)^2)
[1] 110.6075
> sum((ks-ks.mean)^2)
[1] 98
>
> ############
> set.seed(5) # another sample
> n.samp <- 3
> ks <- sample(k, n.samp)
> ks
[1] 4 5 18
> ks.mean <- mean(ks)
> ks.var <- var(ks)
> ks.pvar <- var(ks)*((n.samp-1)/n.samp)
> ############
> ks-k.mean
[1] -4.95 -3.95 9.05
> ks-ks.mean
[1] -5 -4 9
> sum((ks-k.mean)^2)
[1] 122.0075
> sum((ks-ks.mean)^2)
[1] 122
> ############
> set.seed(7) # another sample
> n.samp <- 3
> ks <- sample(k, n.samp)
> ks
[1] 11 5 18
> ks.mean <- mean(ks)
> ks.var <- var(ks)
> ks.pvar <- var(ks)*((n.samp-1)/n.samp)
> ############
> ks-k.mean
[1] 2.05 -3.95 9.05
> ks-ks.mean
[1] -0.3333333 -6.3333333 6.6666667
> sum((ks-k.mean)^2)
[1] 101.7075
> sum((ks-ks.mean)^2)
[1] 84.66667
>
위의 코드에서
''sum%%(%%%%(%%ks-k.mean)^2) '' = $\sum({X_{i}-\mu})^{2}$
''sum%%(%%%%(%%ks-ks.mean)^2) '' = $\sum({X_{i}-\overline{X}})^{2}$
인데, 위의 케이스를 보면
''sum%%(%%%%(%%ks-k.mean)^2) '' > ''sum%%(%%%%(%%ks-ks.mean)^2) '' 즉,
$\sum({X_{i}-\mu})^{2} > \sum({X_{i}-\overline{X}})^{2}$ 이다.
이를 그림으로 설명하면 다음과 같다. 아래에서 녹색의 세로선은 모집단의 평균값이고, 붉은색의 세로선은 3개로 이루어진 샘플의 평균값이다. 그리고 녹색 가로선은 3개의 샘플요소와 모집단평균과의 ($\mu$) 차이값들이고, 적색가로선은 3개의 샘플요소와 샘플평균과의 ($\overline{X}$) 차이값이다. 이 차이값들을 모아서 길이를 비교한 것이 그래프의 하단이다. 적색가로선 세개의 합이 녹색가로선 세개의 합보다 작다.
{{:pasted:20200412-002825.png?800}}
====== 실험적, 수학적 이해 ======
\begin{eqnarray*}
\sum_{i=1}^{n}{(X_{i}-\mu)} \gt \sum_{i=1}^{n}{(X_{i}-\overline{X})}
\end{eqnarray*}
를 수학적으로 이해하는 방법이다. 우선 실험을 통해서 원하는 것이 무엇인가를 설명한다. 우선 R에서 평균이 20인 (sd = 4) 모집단을 만든다.
## population parameter 지정
n.p <- 10000
mean.p <- 20
sd.p <- 4
set.seed(23)
p <- rnorm(n.p, mean=mean.p, sd=sd.p)
p <- round(p)
hist(p, freq=F)
curve(dnorm(x, mean=mean(p), sd=sd(p)), add=TRUE, col="blue")
abline(v=mean.p,lwd=3,lty=2, col="red")
* 모집단에서 평균이 23인 4개의 원소를 샘플로 취한다. 그리고,
* 1부터 40까지의 집합을 만들어 range에 기록해두고 (range = {1,2,3,4,. . .,40}, 이 range에는 위 샘플의 평균인 23이 포함되어 있다)
* $\sum{(x-\overline{x})}$ 에서 $\overline(x)$ 대신 1:40 까지의 숫자를 넣어 결과를 구해본다. 즉, SS파트를 구해보는데 샘플의 평균인 23외에 1에서 40까지의 숫자를 대입하여 SS값을 구하여 기록한다는 뜻이다.
* 이를 plot한다.
set.seed(1953)
x <- sample(p, 4)
x
mean(x)
range <- seq(1:40)
ss <- rep (NA, length(range))
for (i in range) {
ss[i] <- sum((x-range[i])^2)
}
data <- data.frame(range,ss)
data
min(data$ss) ## ss값이 최소일 때의 x값을 살펴보자 (=mean(x)) = 23
plot(data, lty=1, lwd=1)
abline(v=mean(x),col="red")
{{:pasted:20200504-202759.png}}
> n.p <- 10000
> mean.p <- 20
> sd.p <- 4
> set.seed(23)
> p <- rnorm(n.p, mean=mean.p, sd=sd.p)
> p <- round(p)
> head(p)
[1] 21 18 24 27 24 24
> hist(p, freq=F)
> curve(dnorm(x, mean=mean(p), sd=sd(p)), add=TRUE, col="blue")
> abline(v=mean.p,lwd=3,lty=2, col="red")
>
# 모집단 평균 = 20, sd=4
> set.seed(1953)
> x <- sample(p, 4)
> x
[1] 27 21 21 23
> mean(x)
[1] 23
>
> range <- seq(1:40)
> ss <- rep (NA, length(range))
> for (i in range) {
+ ss[i] <- sum((x-range[i])^2)
+ }
> data <- data.frame(range,ss)
> data
range ss
1 1 1960
2 2 1788
3 3 1624
4 4 1468
5 5 1320
6 6 1180
7 7 1048
8 8 924
9 9 808
10 10 700
11 11 600
12 12 508
13 13 424
14 14 348
15 15 280
16 16 220
17 17 168
18 18 124
19 19 88
20 20 60
21 21 40
22 22 28
23 23 24
24 24 28
25 25 40
26 26 60
27 27 88
28 28 124
29 29 168
30 30 220
31 31 280
32 32 348
33 33 424
34 34 508
35 35 600
36 36 700
37 37 808
38 38 924
39 39 1048
40 40 1180
> min(data$ss) ## ss값이 최소일 때의 x값을 살펴보자 (=mean(x)) = 23
[1] 24
> plot(data, lty=1, lwd=1)
> abline(v=mean(x),col="red")
{{:pasted:20200504-203916.png}}
평균이 20, 표준편차가 4인 집단에서 4개의 샘플을 취하여 그 평균을 구하고, 그 평균을 이용하 SS 부분을 (Sum of Square) 구한다고 했을 때, 평균외에 다른 점수를 이용했을 때 어떻게 되는가를 본 것이다 (range <- seq(1:40)과 같이). ss값이 가장 작았을 때의 x값을 보면 샘플의 평균값임을 알 수 있다.
마지막 그래프에서 가장 작은 기울기값을 갖는 v 값을 구한다고 (derivatives) 가정하고 이해를 하면 수학적으로 이해할 수 있다. ((see https://www.mathsisfun.com/calculus/derivatives-introduction.html))
{{:pasted:20200504-223320.png}}
\begin{eqnarray*}
\dfrac{\text{d}}{\text{dv}} \dfrac{\sum{(x-v)^2}}{n} & = & \dfrac {\sum{2(x-v)*(-1)}}{n} \\
& = & \dfrac{\sum{-2(x-v)}}{n} \\
& = & -\dfrac{2}{n} \sum{(x-v)} \\
\end{eqnarray*}
위의 식이 0이 (기울기가 0이 되는 부분) 될 때의 v 값을 찾아야 하므로
\begin{eqnarray*}
-\dfrac{2}{n} \sum{(x-v)} & = & 0 \\
\sum{(x-v)} & = & 0 \\
\sum{x} - n*v & = & 0 \\
n*v & = & \sum{x} \\
v & = & \dfrac {\sum{x}}{n} \\
\end{eqnarray*}
위에 따르면, 우리가 찾는 v 값은 샘플의 평균값이 ($\frac {\sum{x}}{n}$) 된다. 따라서, 평균값으로 SS값을 구하게 되면 언제나 가장 작은 값을 취하게 되는 결과를 갖는다. 이렇게 작은 값을 갖는 현상을 보정하려고 n 대신에 n보다 조금 작은 숫자인 n-1을 가지고 SS 부분을 나누어 준다.
그렇다면 왜 n-2 혹은 n-(1/2)가 아니고 n-1인가? 이를 수학적인 증명을 통해서 살펴보면 다음 장과 같다.
====== 수학적 증명 ======
우선,
\begin{eqnarray*}
Var[X] & = & E[(X-\mu)^{2}] \\
& = & E[(X^{2} - 2 X \mu + \mu^{2})] \\
& = & E[X^{2}] - 2 \mu E[X] + E[\mu^2] \\
& = & E[X^{2}] - 2 \mu E[X] + E[\mu^{2}], \;\; \text{because}\; E[X] = \mu \text{, } \; E[\mu^2] = \mu^2, \\
& = & E[X^{2}] - 2 \mu^{2} + \mu^{2} \\
& = & E[X^{2}] - \mu^{2}
\end{eqnarray*}
이므로
\begin{align}
E\left[X^2\right] & = Var\left[X\right] + \mu^2 \nonumber \\
& = \sigma^{2} + \mu^2 \\
\end{align}
마찬가지로
\begin{align}
Var \left[ \overline{X}\right] & = E \left[\overline{X}^2 \right] - \left[E(\overline{X})\right]^2 \nonumber \\
& = E\left[\overline{X}^{2}\right] - \mu^{2} \nonumber
\end{align}
따라서
\begin{align}
E\left[\overline{X}^{2}\right] & = Var\left[\overline{X}\right] + \mu^2 \nonumber \\
& = \frac {\sigma^{2}} {n} + \mu^{2}
\end{align}
참고로 위에서 $Var\left[\overline{X}\right] = \dfrac {\sigma^{2}} {n} $ 에 해당하는 설명은 [[:mean and variance of the sample mean]] 문서를 볼 것.
----
참고로 Expected value (기대값)와 Variance (분산)의 연산에 과한 법칙으로는 (([[:statistical review]]참조))
X,Y are Independent variables.
\begin{align*}
E[aX] & = a E[X] \\
E[X+Y] & = E[X] + E[Y] \\
Var[aX] & = a^{\tiny{2}} Var[X] \\
Var[X+Y] & = Var[X] + Var[Y]
\end{align*}
----
우리가 알고자 하는 것은 아래의 식이 population의 parameter인 $\sigma^{2}$ 의 값과 같은가이다.
\begin{align*}
E[s^{2}] & = E \left[\frac{\displaystyle\sum_{i=1}^{n}(X_{i}-\overline{X})^{2}}{n-1} \right] \qquad
\cdot\cdot\cdot\cdot\cdot\cdot\cdot\cdot\cdot\cdot\cdot\cdot \;\; (a) \\
& = \sigma^{2}
\end{align*}
위의 식에서 일부만을 추출해서 먼저 보자.
\begin{align*}
E \left[\sum{(X_{i}-\overline{X})^{2}} \right] & = E \left[\sum(X_{i}^{2}- 2 X_{i} \overline{X} + \overline{X}^{2})\right] \\
& = E \left[ \sum{X_{i}^2} - \sum{2X_{i} \overline{X}} + \sum {\overline{X^2}} \right] \\
& = E \left[ \sum{X_{i}^2} - 2 \overline{X} \sum{X_{i}} + \sum{\overline{X^2}} \right] \\
& = E \left[ \sum{X_{i}^2} - 2 \overline{X} \sum{X_{i}} + n \overline{X^2} \right] \\
& = E \left[ \sum{X_{i}^2} - 2 \overline{X} \cdot (n \overline{X}) + n \overline {X^2} \right] \\
& = E \left[ \sum{X_{i}^2} - n \overline{X}^2 \right] \\
& = \sum {E\left(X_{i}^2\right)} - E\left(n\overline{X}^2\right) \\
& = \sum {E\left(X_{i}^2\right)} - n E\left(\overline{X}^2\right) \;\;\; \dots\dots\dots\dots\dots (3)
\end{align*}
한 편, 위의 $(1), (2)$에서
\begin{align*}
E\left[X_{i}^{2}\right] & = \sigma^{2} + \mu^2 \;\;\; \dots\dots\dots\dots\dots (1) \\
E\left[\overline{X}^{2}\right] & = \dfrac {\sigma^{2}} {n} + \mu^{2} \;\;\; \dots\dots\dots\dots\dots (2)
\end{align*}
위의 $(1), (2)$를 $(3)$에 대입해보면
\begin{align*}
E \left[\sum{(X_{i}-\overline{X})^{2}} \right] & = \sum{E\left(X_{i}^{2}\right)} - n E\left(\overline{X}^{2}\right) \\
& = \sum{\left(\sigma^{2} + \mu^{2}\right)} - n \left(\dfrac{\sigma^2}{n} + \mu^2\right) \\
& = n\sigma^{2} + n\mu^{2} - \sigma^{2} - n\mu^{2} \\
& = \left(n-1\right) \sigma^{2}
\end{align*}
위는 식 (a)의 일부이므로 이를 온전한 식에 대입해보면,
\begin{eqnarray*}
E \left[\sum{(X_{i}-\overline{X})^{2}} \right] & = & (n-1) \sigma^{2} \\
\end{eqnarray*}
\begin{eqnarray*}
E[s^{2}] & = & E \left[ \frac{\displaystyle\sum_{i=1}^{n}(X_{i}-\overline{X})^{2}}{n-1} \right] \\
& = & \dfrac{1}{n-1} E \left[\sum{(X_{i}-\overline{X})^{2}} \right] \\
& = & \dfrac{1}{n-1} (n-1) \sigma^{2} \\
& = & \sigma^{2}
\end{eqnarray*}
그러므로, **n-1로 나눠 준 샘플분산의 (sample's variance) 기대값은**
\begin{eqnarray*}
E(s^2) = \sigma^{2}
\end{eqnarray*}
----
만약에 우리가 population의 variance를 구하듯이 n을 이용한다고 하면,
\begin{eqnarray*}
E[s^{2}] & = & E \left[ \frac{\displaystyle\sum_{i=1}^{n}(X_{i}-\overline{X})^{2}} {n} \right], \;\;\; \text{note that we use n instead of n-1} \\
& = & \dfrac{1}{n} E \left[\sum{(X_{i}-\overline{X})^{2}} \right] \\
& = & \dfrac{1}{n} (n-1) \sigma^{2} \\
& = & \left(\dfrac{n-1}{n}\right) \sigma^{2} \\
\end{eqnarray*}
즉, 원래 $\sigma^2$ 값보다 조금 작은 값을 갖게 될 것이다 (이를 biased result라고 한다).
{{tag>"research methods" "조사방법론" "표준편차" "n-1" "자유도" "degrees of freedom" "n-1" "표준오차"}}