estimated_standard_deviation
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
estimated_standard_deviation [2017/12/11 09:41] – hkimscil | estimated_standard_deviation [2025/09/07 06:24] (current) – [수학적 증명] hkimscil | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Why n-1 ====== | ====== Why n-1 ====== | ||
- | Why we use n-1 instead of n in getting standard deviation \\ | + | 문제. |
- | http:// | + | |
- | 우선, Expected value (기대값)와 Variance (분산)의 연산은 아래와 같이 계산될 수 있다. | + | |
- | <WRAP box 450px> | + | 우리는 모집단의 (population) 평균값을 알고 있다면 샘플의 분산값을 다음과 같이 구할 수 있다. 그리고, 이것을 모집단의 분산값으로 추정할 수 있다. |
- | X,Y are Independent variables. | + | |
\begin{eqnarray*} | \begin{eqnarray*} | ||
- | E[aX] &=& a E[X] \\ | + | \hat{\sigma^{2}} |
- | E[X+Y] &=& E[X] + E[Y] \\ | + | |
- | Var[aX] &=& a^{\tiny{2}} Var[X] | + | |
- | Var[X+Y] &=& Var[X] + Var[Y] | + | |
\end{eqnarray*} | \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$) 대표함을 알아보는 것이 문제이다. | ||
+ | |||
+ | |||
+ | ====== 직관적 이해 ====== | ||
+ | 분산은 $ \text{SS}/ \text{df} $ 라고 배웠다. SS = Sum of Something Square라고 설명하고, | ||
+ | |||
+ | 이를 그림으로도 설명할 수 있다. 아래에서 녹색의 세로선은 모집단의 평균값이고, | ||
+ | {{: | ||
+ | |||
+ | ====== 실험적, R에서 시뮬레이션으로 이해 ====== | ||
+ | 아래 output의 코멘트를 읽을 것 | ||
+ | < | ||
+ | rm(list=ls()) | ||
+ | |||
+ | rnorm2 <- function(n, | ||
+ | mean+sd*scale(rnorm(n)) | ||
+ | } | ||
+ | |||
+ | # set.seed(191) | ||
+ | nx <- 1000 | ||
+ | mx <- 50 | ||
+ | sdx <- mx * 0.1 | ||
+ | sdx # 5 | ||
+ | x <- rnorm2(nx, mx, sdx) | ||
+ | # x <- rnorm2(1000, | ||
+ | |||
+ | mean(x) | ||
+ | sd(x) | ||
+ | length(x) | ||
+ | hist(x) | ||
+ | |||
+ | x.span <- seq(from = mean(x)-3*sd(x), | ||
+ | to = mean(x)+3*sd(x), | ||
+ | by = .1) | ||
+ | x.span | ||
+ | |||
+ | residuals <- function(x, v) { | ||
+ | return(x - v) | ||
+ | } | ||
+ | |||
+ | # sum of square residual 값을 | ||
+ | # 구하는 펑션 | ||
+ | ssr <- function(x, v) { | ||
+ | residuals <- (x - v) | ||
+ | return(sum(residuals^2)) | ||
+ | } | ||
+ | |||
+ | # mean square residual 값을 | ||
+ | # 구하는 펑션 (mean square | ||
+ | # residual = variance) | ||
+ | msr <- function(x, v) { | ||
+ | residuals <- (x - v) | ||
+ | return((mean(residuals^2))) | ||
+ | } | ||
+ | |||
+ | ssrs <- c() # sum of square residuals | ||
+ | msrs <- c() # mean square residuals = variance | ||
+ | vs <- c() # the value of v in (x - v) | ||
+ | |||
+ | # x.span의 값들을 v값으로 삼아 sum(x-x.span)^2 처럼 구하면 | ||
+ | # SS값을 구한 것이 된다. 우리가 배운 SS값은 x.span의 값으로 | ||
+ | # 샘플의 평균을 사용했을 때의 residual 값이다. x.span은 | ||
+ | # 샘플의 평균을 중심으로 여러가지 값을 사용하는 것을 가정한다. | ||
+ | |||
+ | for (i in x.span) { | ||
+ | res.x <- residuals(x, | ||
+ | msr.x <- msr(x,i) | ||
+ | msrs <- append(msrs, | ||
+ | vs <- append(vs, i) | ||
+ | } | ||
+ | # 아래 plot은 SS값들이나 (두번째는) MS값들을 v값이 변화함에 | ||
+ | # 따라서 (x.span의 범위에 따라서 변화) 어떻게 변화하는지 | ||
+ | # 구한 것 | ||
+ | |||
+ | plot(msrs) | ||
+ | |||
+ | # v값이 x.span에 따라서 변화하여 대입되었을 때의 | ||
+ | # MS값들을 (msr 펑션으로 구한 mean square값) | ||
+ | # 모아 놓은 값이 msrs | ||
+ | msrs | ||
+ | |||
+ | # 아래는 위에서 계산한 msr 값들을 저장한 msrs값들 중에서 최소값이 | ||
+ | # 되는 것을 찾은 것. 우리는 이것이 샘플의 평균임을 안다. | ||
+ | min(msrs) | ||
+ | # 최소값일 때의 위치 (msrs에서 몇번째인지) | ||
+ | min.pos.msrs <- which(msrs == min(msrs)) | ||
+ | min.pos.msrs | ||
+ | # msr 최소값이 구해졌을 때 사용된 v값 | ||
+ | vs[min.pos.msrs] | ||
+ | </ | ||
+ | ===== output ===== | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | < | ||
+ | > rm(list=ls()) | ||
+ | > | ||
+ | > rnorm2 <- function(n, | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > # set.seed(191) | ||
+ | > nx <- 1000 | ||
+ | > mx <- 50 | ||
+ | > sdx <- mx * 0.1 | ||
+ | > sdx # 5 | ||
+ | [1] 5 | ||
+ | > x <- rnorm2(nx, mx, sdx) | ||
+ | > # x <- rnorm2(1000, | ||
+ | > | ||
+ | > mean(x) | ||
+ | [1] 50 | ||
+ | > sd(x) | ||
+ | [1] 5 | ||
+ | > length(x) | ||
+ | [1] 1000 | ||
+ | > hist(x) | ||
+ | > | ||
+ | </ | ||
</ | </ | ||
+ | <WRAP half column> | ||
+ | SS = sum(x-mean(x))^2 인데, mean(x)을 즉, x집합의 평균을, x 원소값을 예측하는데 (빼는데) 사용하면 SS값이 최소값이 된다고 하였다. 이것을 R에서 simulation으로 알아보기 위해서 mean(x) 대신에 다른 숫자들을 넣어보려고 한다. 이를 v라고 하면 sum(x-v)^2이라는 SS값들을 구해서 비교하려는 것이다. 대입할 숫자들은 (v) mean(x) +- 3 sd(x) 를 범위로 하고, 그 범위의 시작 숫자에서 (시작은 mean(x)-3sd(x)가 된다) 0.1씩 증가시키면서 대입하고, | ||
- | 이때, 한 샘플의 평균값을 | + | 단, 이 코드에서 SS대신 MS값을 |
- | $$ S_{k} = X_1 + X_2 + . . . + X_k $$ | + | </ |
+ | </ | ||
- | 와 같다. | + | <WRAP group> |
+ | <WRAP half column> | ||
+ | < | ||
+ | > x.span <- seq(from = mean(x)-3*sd(x), | ||
+ | + to = mean(x)+3*sd(x), | ||
+ | + by = .1) | ||
+ | > x.span | ||
+ | [1] 35.0 35.1 35.2 35.3 35.4 35.5 35.6 35.7 35.8 | ||
+ | [10] 35.9 36.0 36.1 36.2 36.3 36.4 36.5 36.6 36.7 | ||
+ | [19] 36.8 36.9 37.0 37.1 37.2 37.3 37.4 37.5 37.6 | ||
+ | [28] 37.7 37.8 37.9 38.0 38.1 38.2 38.3 38.4 38.5 | ||
+ | [37] 38.6 38.7 38.8 38.9 39.0 39.1 39.2 39.3 39.4 | ||
+ | [46] 39.5 39.6 39.7 39.8 39.9 40.0 40.1 40.2 40.3 | ||
+ | [55] 40.4 40.5 40.6 40.7 40.8 40.9 41.0 41.1 41.2 | ||
+ | [64] 41.3 41.4 41.5 41.6 41.7 41.8 41.9 42.0 42.1 | ||
+ | [73] 42.2 42.3 42.4 42.5 42.6 42.7 42.8 42.9 43.0 | ||
+ | [82] 43.1 43.2 43.3 43.4 43.5 43.6 43.7 43.8 43.9 | ||
+ | [91] 44.0 44.1 44.2 44.3 44.4 44.5 44.6 44.7 44.8 | ||
+ | [100] 44.9 45.0 45.1 45.2 45.3 45.4 45.5 45.6 45.7 | ||
+ | [109] 45.8 45.9 46.0 46.1 46.2 46.3 46.4 46.5 46.6 | ||
+ | [118] 46.7 46.8 46.9 47.0 47.1 47.2 47.3 47.4 47.5 | ||
+ | [127] 47.6 47.7 47.8 47.9 48.0 48.1 48.2 48.3 48.4 | ||
+ | [136] 48.5 48.6 48.7 48.8 48.9 49.0 49.1 49.2 49.3 | ||
+ | [145] 49.4 49.5 49.6 49.7 49.8 49.9 50.0 50.1 50.2 | ||
+ | [154] 50.3 50.4 50.5 50.6 50.7 50.8 50.9 51.0 51.1 | ||
+ | [163] 51.2 51.3 51.4 51.5 51.6 51.7 51.8 51.9 52.0 | ||
+ | [172] 52.1 52.2 52.3 52.4 52.5 52.6 52.7 52.8 52.9 | ||
+ | [181] 53.0 53.1 53.2 53.3 53.4 53.5 53.6 53.7 53.8 | ||
+ | [190] 53.9 54.0 54.1 54.2 54.3 54.4 54.5 54.6 54.7 | ||
+ | [199] 54.8 54.9 55.0 55.1 55.2 55.3 55.4 55.5 55.6 | ||
+ | [208] 55.7 55.8 55.9 56.0 56.1 56.2 56.3 56.4 56.5 | ||
+ | [217] 56.6 56.7 56.8 56.9 57.0 57.1 57.2 57.3 57.4 | ||
+ | [226] 57.5 57.6 57.7 57.8 57.9 58.0 58.1 58.2 58.3 | ||
+ | [235] 58.4 58.5 58.6 58.7 58.8 58.9 59.0 59.1 59.2 | ||
+ | [244] 59.3 59.4 59.5 59.6 59.7 59.8 59.9 60.0 60.1 | ||
+ | [253] 60.2 60.3 60.4 60.5 60.6 60.7 60.8 60.9 61.0 | ||
+ | [262] 61.1 61.2 61.3 61.4 61.5 61.6 61.7 61.8 61.9 | ||
+ | [271] 62.0 62.1 62.2 62.3 62.4 62.5 62.6 62.7 62.8 | ||
+ | [280] 62.9 63.0 63.1 63.2 63.3 63.4 63.5 63.6 63.7 | ||
+ | [289] 63.8 63.9 64.0 64.1 64.2 64.3 64.4 64.5 64.6 | ||
+ | [298] 64.7 64.8 64.9 65.0 | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | x-mean(x) = residual = error | ||
+ | sum(residual^2) = SS (sum of square) | ||
+ | SS/n = variance, mean square (ms, MS) | ||
- | 이렇게 얻은 샘플들(k 개의)의 평균인 $A_k$ 는, | + | 이 residual을 구하기 위해서 쓰는 mean(x)의 대체값들을 (v값들) x.span에 모아 놓은 것이다. |
+ | 이 값을 출력해보았는데 35.1 에서 시작하여 65에서 끝나며, 0.1씩 증가한다. | ||
- | $$A_k = \displaystyle \frac{(X_1 + X_2 + . . . + X_k)}{k} = \frac{S_{k}}{k} $$ | + | </ |
+ | </ | ||
- | 라고 할 수 있다. | + | <WRAP group> |
+ | <WRAP half column> | ||
+ | < | ||
+ | > | ||
+ | > residuals <- function(x, v) { | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > # sum of square residual 값을 | ||
+ | > # 구하는 펑션 | ||
+ | > ssr <- function(x, v) { | ||
+ | + | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > # mean square residual 값을 | ||
+ | > # 구하는 펑션 (mean square | ||
+ | > # residual = variance) | ||
+ | > msr <- function(x, v) { | ||
+ | + | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | * 이 후 쓸 function들. (x-v) = residual이라고 | ||
+ | * function ssr = x 집합과 v값 (x.span의 한 숫자)를 인수를 주었을 때 구할 수 있는 Sum of Square값들 (실제로는 사용하지 않는다. 대신 msr 펑션으로 MS값을 구한다). | ||
+ | * function msr = 의 ssr을 n으로 나누어 구한 mean square residual을 (분산) 구하는 function | ||
+ | </ | ||
+ | </ | ||
- | 이때, | + | <WRAP group> |
+ | <WRAP half column> | ||
+ | < | ||
+ | > ssrs <- c() # sum of square residuals | ||
+ | > msrs <- c() # mean square residuals = variance | ||
+ | > vs <- c() # the value of v in (x - v) | ||
+ | > | ||
+ | > # x.span의 값들을 v값으로 삼아 sum(x-x.span)^2 처럼 구하면 | ||
+ | > # SS값을 구한 것이 된다. 우리가 배운 SS값은 x.span의 값으로 | ||
+ | > # 샘플의 평균을 사용했을 | ||
+ | > # 샘플의 평균을 중심으로 여러가지 값을 사용하는 것을 가정한다. | ||
+ | > | ||
+ | > for (i in x.span) { | ||
+ | + res.x <- residuals(x,i) | ||
+ | + msr.x <- msr(x,i) | ||
+ | + msrs <- append(msrs, | ||
+ | + vs <- append(vs, i) | ||
+ | + } | ||
+ | > # 아래 plot은 SS값들이나 (두번째는) MS값들을 v값이 변화함에 | ||
+ | > # 따라서 (x.span의 범위에 따라서 변화) 어떻게 변화하는지 | ||
+ | > # 구한 것 | ||
+ | > | ||
+ | > plot(vs, msrs) | ||
+ | > | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | comment | ||
+ | * x.span의 처음값인 35.1을 넣어서 (x-v)를 구한 후 | ||
+ | * msr 펑션으로 mean square residual 값을 구한다. | ||
+ | * 그리고 이 값을 어딘가에 (msrs) 저장한 후 | ||
+ | * 그 다음 value인 35.2값을 v 대신에 넣어 다시 | ||
+ | * msr값을 구하여 위의 msrs에 추가하여 저장한다. | ||
+ | * 이것을 x.span의 모든값에 걸쳐 진행하면 | ||
+ | * msrs에는 x.span의 모든 값을 대응하여 구한 | ||
+ | * msr값들이 저장된다. 이 msr값 중에서 최소값을 찾고 | ||
+ | * 이 최소값을 구할 때 쓴 v값을 (x.span 중 하나의 값) 찾고자 한다. | ||
+ | * 이를 위해서 for 를 이용한 loop문을 쓴다. | ||
- | $$ | + | </ |
- | \begin{align*} | + | </ |
- | E[S_k] & = E[X_1 + X_2 + . . . +X_k] \\ | + | |
- | & = E[X_1] + E[X_2] + . . . + E[X_k] \\ | + | |
- | & = \mu + \mu + . . . + \mu = k * \mu \\ | + | |
- | \end{align*} | + | |
- | $$ | + | |
- | + | ||
- | $$ | + | |
- | \begin{align*} | + | |
- | Var[S_k] & = Var[X_1 + X_2 + . . . +X_k] \\ | + | |
- | & = Var[X_1] + Var[X_2] + \dots + Var[X_k] \\ | + | |
- | & = k * \sigma^2 | + | |
- | \end{align*} | + | |
- | $$ | + | |
- | 이다. | + | <WRAP group> |
+ | <WRAP half column> | ||
+ | < | ||
+ | > # v값이 x.span에 따라서 변화하여 대입되었을 때의 | ||
+ | > # MS값들을 (msr 펑션으로 구한 mean square값) | ||
+ | > # 모아 놓은 값이 msrs | ||
+ | > msrs | ||
+ | [1] 249.975 246.985 244.015 241.065 238.135 | ||
+ | [6] 235.225 232.335 229.465 226.615 223.785 | ||
+ | [11] 220.975 218.185 215.415 212.665 209.935 | ||
+ | [16] 207.225 204.535 201.865 199.215 196.585 | ||
+ | [21] 193.975 191.385 188.815 186.265 183.735 | ||
+ | [26] 181.225 178.735 176.265 173.815 171.385 | ||
+ | [31] 168.975 166.585 164.215 161.865 159.535 | ||
+ | [36] 157.225 154.935 152.665 150.415 148.185 | ||
+ | [41] 145.975 143.785 141.615 139.465 137.335 | ||
+ | [46] 135.225 133.135 131.065 129.015 126.985 | ||
+ | [51] 124.975 122.985 121.015 119.065 117.135 | ||
+ | [56] 115.225 113.335 111.465 109.615 107.785 | ||
+ | [61] 105.975 104.185 102.415 100.665 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | [101] 49.975 | ||
+ | [106] 45.225 | ||
+ | [111] 40.975 | ||
+ | [116] 37.225 | ||
+ | [121] 33.975 | ||
+ | [126] 31.225 | ||
+ | [131] 28.975 | ||
+ | [136] 27.225 | ||
+ | [141] 25.975 | ||
+ | [146] 25.225 | ||
+ | [151] 24.975 | ||
+ | [156] 25.225 | ||
+ | [161] 25.975 | ||
+ | [166] 27.225 | ||
+ | [171] 28.975 | ||
+ | [176] 31.225 | ||
+ | [181] 33.975 | ||
+ | [186] 37.225 | ||
+ | [191] 40.975 | ||
+ | [196] 45.225 | ||
+ | [201] 49.975 | ||
+ | [206] 55.225 | ||
+ | [211] 60.975 | ||
+ | [216] 67.225 | ||
+ | [221] 73.975 | ||
+ | [226] 81.225 | ||
+ | [231] 88.975 | ||
+ | [236] 97.225 | ||
+ | [241] 105.975 107.785 109.615 111.465 113.335 | ||
+ | [246] 115.225 117.135 119.065 121.015 122.985 | ||
+ | [251] 124.975 126.985 129.015 131.065 133.135 | ||
+ | [256] 135.225 137.335 139.465 141.615 143.785 | ||
+ | [261] 145.975 148.185 150.415 152.665 154.935 | ||
+ | [266] 157.225 159.535 161.865 164.215 166.585 | ||
+ | [271] 168.975 171.385 173.815 176.265 178.735 | ||
+ | [276] 181.225 183.735 186.265 188.815 191.385 | ||
+ | [281] 193.975 196.585 199.215 201.865 204.535 | ||
+ | [286] 207.225 209.935 212.665 215.415 218.185 | ||
+ | [291] 220.975 223.785 226.615 229.465 232.335 | ||
+ | [296] 235.225 238.135 241.065 244.015 246.985 | ||
+ | [301] 249.975 | ||
+ | > | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | comment | ||
+ | * msrs값에 저장된 msr값들 (mean square residual값들) 중에서 | ||
+ | * 가장 작은 값을 찾아서 그 값을 구하도록 한 v값을 찾고자 한다. | ||
+ | * msrs값을 눈으로 살펴보기에는 너무 힘드므로 . . . . | ||
+ | </ | ||
+ | </ | ||
- | 그렇다면, | ||
- | $$ | + | <WRAP group> |
- | \begin{align*} | + | <WRAP half column> |
- | E[A_k] & = E[\frac{S_k}{k}] \\ | + | < |
- | & = \frac{1}{k}*E[S_k] \\ | + | > # 아래는 위에서 계산한 msr 값들을 저장한 msrs값들 중에서 최소값이 되는 것을 찾은 |
- | & = \frac{1}{k}*k*\mu = \mu | + | > # 것. 우리는 이것이 샘플의 평균임을 안다. |
- | \end{align*} | + | > min(msrs) |
- | $$ | + | [1] 24.975 |
+ | > # 최소값일 때의 위치 (msrs에서 몇번째인지) | ||
+ | > min.pos.msrs <- which(msrs | ||
+ | > min.pos.msrs | ||
+ | [1] 151 | ||
+ | > # msr 최소값이 구해졌을 때 사용된 v값 | ||
+ | > vs[min.pos.msrs] | ||
+ | [1] 50 | ||
+ | > | ||
+ | > plot(vs, msrs, cex=1, lwd=1, lty=3) | ||
+ | > abline(v=vs[min.pos.msrs]) | ||
+ | > text(x=50, y=150, "msr gets minimal value, when v = 50" ) | ||
+ | > | ||
+ | > | ||
+ | > | ||
+ | > | ||
+ | > | ||
+ | > | ||
+ | > | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | comment | ||
+ | | ||
+ | | ||
+ | * 이 위치가 151이다 | ||
+ | * 이 151번째 사용된 (최소값인 msr값 = mean(x-v)^2)을 결과한) vs값을 찾는다 (vs[151]) | ||
+ | * 이 값을 출력하니 50 이고 이 값은 x의 평균값이다. | ||
+ | * 이를 plot으로 출력한 것 | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
- | 이고, | ||
- | $$ | + | 다음으로 MS값을 구하는 식인 |
- | \begin{align*} | + | * y = sum( (x-v)^2 ) / n 값을 |
- | Var[A_k] & = Var[\frac{S_k}{k}] \\ | + | * < |
- | & | + | |
- | & = \frac{1}{k^2}*k*\sigma^2 \\ | + | * 이 값이 0이 되는 지점의 v값이 무엇인지를 구하면 위의 R코드에서 구한 값을 구할 수 있게 된다. 아래는 그 과정이다. |
- | & = \frac{\sigma^2}{k} \nonumber | + | * 그래프에서 가장 작은 기울기값을 갖는 v 값을 구한다고 (derivatives) 가정하고 이해를 하면 수학적으로 이해할 수 있다. ((see https:// |
- | \end{align*} | + | |
- | $$ | + | |
- | 라고 할 수 있다. | ||
+ | {{: | ||
- | 한편, | + | \begin{eqnarray*} |
+ | \dfrac{dy}{dv} = \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*} |
- | \begin{align*} | + | -\dfrac{2}{n} \sum{(x-v)} & = & 0 \\ |
- | Var[X] & = {E{(X-\mu)^2}} \\ | + | \sum{(x-v)} |
- | & = E[(X^2 - 2 X \mu + \mu^2)] \\ | + | \sum{x} - n*v & = & 0 \\ |
- | & = E[X^2] - 2 \mu E[X] + E[\mu^2] \\ | + | n*v & = & \sum{x} |
- | & = E[X^2] - 2 \mu E[X] + E[\mu^2], \;\; \text{because E[X]=} \mu \text{, \; E[} \mu^2 \text{] | + | v & = & \dfrac {\sum{x}}{n} |
- | & = E[X^2] - 2 \mu^2 + \mu^2 \\ | + | \end{eqnarray*} |
- | & = E[X^2] - \mu^2 \;\;\; \dots \dots \dots \dots \dots [1] | + | |
- | \end{align*} | + | |
- | $$ | + | |
- | 라고 할때, | + | 즉, 기울기가 0이 될때의 v값은 x집합의 평균값일 때이다. |
+ | ===== R에서 msr이 최소값이 되는 v값 효율적으로 찾기 ===== | ||
+ | 위의 미분을 이용한 방법을 써서 MS값이 최소값이 되는 순간을 R에서 구현해 볼 수 있다. 아래 아웃풋의 코멘트 부분을 읽을 것. | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | # the above no gradient | ||
+ | gradient <- function(x, v){ | ||
+ | residuals = x - v | ||
+ | # y = (sum(x-v)^2)/ | ||
+ | # 의 식이 ms값을 구하는 식인데 | ||
+ | # 이를 v에 대해서 미분하면 chain rule을 써야 한다 | ||
+ | # 자세한 것은 http:// | ||
+ | # 문서 중에 미분 부분 참조 | ||
+ | # dy/dv = ( 2(x-v)*-1 ) / n chain rule | ||
+ | # dy/dv = -2 (x-v) / n = -2 (mean(residual)) | ||
+ | dx = -2 * mean(residuals) | ||
+ | # return(list(" | ||
+ | return(dx) | ||
+ | } # function returns ds value | ||
- | $ Var[X + Y] $ 를 구하고자 한다면, 우선 | + | zx <- (x-mean(x))/ |
+ | # pick one random v in (x-v) | ||
+ | v <- rnorm(1) | ||
- | $$ | + | # Train the model with scaled features |
- | \begin{align} | + | learning.rate |
- | \displaystyle E[X] = \mu_{X} = a \\ | + | |
- | \displaystyle E[Y] = \mu_{Y} | + | |
- | \end{align} | + | |
- | $$ | + | |
- | 이라고 할 때, | + | msrs <- c() |
+ | vs <- c() | ||
+ | nlen <- 75 | ||
+ | for (epoch in 1:nlen) { | ||
+ | residual <- residuals(zx, | ||
+ | msr.x <- msr(zx, v) | ||
+ | msrs <- append(msrs, | ||
+ | | ||
+ | grad <- gradient(zx, | ||
+ | step.v <- grad * learning.rate # | ||
+ | v <- v - step.v # 그 다음 v값 | ||
+ | vs <- append(vs, v) # v값 저장 | ||
+ | } | ||
- | $$ | + | tail(msrs) |
- | \begin{align*} | + | tail(vs) |
- | Var [X + Y] & = \displaystyle E[(X+Y)^2] - (a+b)^2 \\ | + | |
- | & = E[(X^2 + 2XY + Y^2)] - (a^2 + 2ab - b^2) \; | + | |
- | \end{align*} | + | |
- | $$ | + | |
+ | plot(vs, msrs, type=' | ||
- | 그런데 | + | # scaled |
+ | vs # 변화하는 v 값들의 집합 | ||
+ | vs.orig <- (vs*sd(x))+mean(x) | ||
+ | vs.orig | ||
- | $ E[XY] = E[X] E[Y], $ , $X$ 와 $Y$ 가 서로 독립적 | + | # 마지막 v값이 최소값에 근접한 값 |
- | $$ E[XY] = a b $$ | + | v |
+ | v.orig <- (v*sd(x))+mean(x) | ||
+ | v.orig | ||
+ | plot(vs.orig, | ||
- | 이에 | + | </ |
+ | ===== output ===== | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | < | ||
+ | > # the above no gradient | ||
+ | > | ||
+ | > gradient <- function(x, v){ | ||
+ | + | ||
+ | + # y = (sum(x-v)^2)/ | ||
+ | + # 의 식이 ms값을 구하는 식인데 | ||
+ | + # 이를 v에 대해서 미분하면 chain rule을 써야 한다 | ||
+ | + # 자세한 것은 http:// | ||
+ | + # 문서 중에 미분 부분 참조 | ||
+ | + # dy/dv = ( 2(x-v)*-1 ) / n chain rule | ||
+ | + # dy/dv = -2 (x-v) / n = -2 (mean(residual)) | ||
+ | + dx = -2 * mean(residuals) | ||
+ | + # return(list(" | ||
+ | + | ||
+ | + } # function returns ds value | ||
+ | > | ||
- | $$ | ||
- | \begin{align*} | ||
- | Var [X + Y] & = E[(X^2 + 2XY + Y^2)] - (a^2 - 2ab - b^2) \\ | ||
- | & = E[X^2] - a^2 + E[Y^2] - b^2 \\ | ||
- | & = Var[X] + Var[Y] | ||
- | \end{align*} | ||
- | $$ | ||
- | 한편, | ||
- | $$ | ||
- | \begin{align*} | ||
- | | ||
- | s_{\overline{X}} & = \frac {\displaystyle \sum_{i=1}^n (X_i - \overline{X})^2} {n-1} | ||
- | \end{align*} | ||
- | $$ | ||
- | 그리고 Sampling distribution of mean과 관련된 샘플 평균들에 대한 기대값 $E[\overline{X}]$ 과 $Var[\overline{X}]$ 는 각각 | ||
- | $$ | ||
- | \begin{align*} | ||
- | E[\overline{X}] & = E[\frac{1}{n} \sum_{\tiny{i=1}}^{\tiny{n}} \overline{X_i}] \\ | ||
- | & = \frac{1}{n} n \mu \\ | ||
- | & = \mu \; | ||
- | Var[\overline{X}] & = Var[\frac{1}{n} \sum_{\tiny{i=1}}^{\tiny{n}} \overline{X_i}] \\ | ||
- | & = \frac{1}{n^2} n \sigma^2 \\ | ||
- | & = \frac{\sigma^2}{n} \; | ||
- | \end{align*} | ||
- | $$ | ||
- | 같은 논리로 sampling distribution of sample variance를 구한다고 하면, 그리고 이를 구할 때 n을 사용한다고 하면, | ||
- | $$ | + | |
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | > | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP half column> | ||
+ | comment | ||
+ | 이 R script의 목적은 v값이 최소값이 되는 지점을 자동적으로 찾아보려는 것이다. 이것을 위해서 우선 v값으로 사용할 첫 점수를 랜덤하게 구한 후 (아래 그래프에서 빨간색 지점), 자동적으로 그 다음 v 점수를 찾고 (녹색지점), | ||
+ | * gradient function과 | ||
+ | * learning_rate 값이다. | ||
+ | gradient 펑션은 dy/dv 의 연쇄 미분식인 ([[:chain rules]]) -2(x-v) / n = -2 mean(res) 값을 구하는 것이다. 이렇게 구한 값에 learning_rate값을 곱한후, 이것을 먼저 사용한 v값에서 (빨간색 지점) 빼 주어 다음 v값으로 (녹색지점) 사용하려고 한다. 이 녹색지점에서의 v값을 사용했을 때의 gradient값을 구한 후 다시 이값에 learning_rate인 0.1을 곱하여 그다음 스텝의 값을 얻고, 이 값을 바로 전의 v값에서 빼 준 값을 그 다음 v값으로 사용한다. 이렇게 구하는 v값들은 0.1씩 곱해주는 효과때문에 오른 쪽으로 옮겨가는 지점이 "< | ||
+ | |||
+ | {{: | ||
+ | 클릭하면 큰 이미지로 볼 수 있음 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | < | ||
+ | > zx <- (x-mean(x))/ | ||
+ | > # pick one random v in (x-v) | ||
+ | > v <- rnorm(1) | ||
+ | > | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | > | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | comment | ||
+ | * 랜덤하게 v값을 찾음 '' | ||
+ | * 원래는 mean(x)값 근처의 값을 랜덤하게 골라야 하므로 | ||
+ | * '' | ||
+ | * 그렇게 하질 않고 x 집합의 원소들을 표준점수화 한 후 '' | ||
+ | * '' | ||
+ | * 이렇게 하는 이유는 혹시 나중에 다른 x집합에 똑같은 작업을 하더라도 그 집합의 평균과 표준편차를 사용하지 않고 | ||
+ | * 단순히 '' | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | < | ||
+ | > # Train the model with scaled features | ||
+ | > learning.rate = 1e-1 | ||
+ | > | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | comment | ||
+ | * 이 0.1은 gradient function으로 구한 해당 v값에 대한 y 미분값을 (기울기 값을) 구한 후, 여기에 곱하기 위해서 지정한다. | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | < | ||
+ | > msrs <- c() | ||
+ | > vs <- c() | ||
+ | > | ||
+ | > nlen <- 75 | ||
+ | > for (epoch in 1:nlen) { | ||
+ | + | ||
+ | + msr.x <- msr(zx, v) | ||
+ | + msrs <- append(msrs, | ||
+ | + | ||
+ | + grad <- gradient(zx, | ||
+ | + | ||
+ | + v <- v - step.v # 그 다음 v값 | ||
+ | + vs <- append(vs, v) # v값 저장 | ||
+ | + } | ||
+ | > | ||
+ | > tail(msrs) | ||
+ | [1] 0.999 0.999 0.999 0.999 0.999 0.999 | ||
+ | > tail(vs) | ||
+ | [1] 6.415945e-08 5.132756e-08 4.106205e-08 3.284964e-08 2.627971e-08 2.102377e-08 | ||
+ | > | ||
+ | > plot(vs, msrs) | ||
+ | > | ||
+ | > | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | comment | ||
+ | * nlen는 그냥 자의적으로 지정한다. 여기서는 75로 했다. | ||
+ | * for 문에서 처음 v값은 위에서 랜덤으로 구한 값이다 (v). | ||
+ | * 이 v값으로 gradient 펑션의 아웃풋 값을 구하고 (-2(residual)) = '' | ||
+ | * 이 값에 learning_rate값을 곱한 값을 구하여 '' | ||
+ | * 이 값을 원래 v값에서 빼준 후에 | ||
+ | * 다시 (for 문에서 반복하는 동안) v값으로 바꾼 후 '' | ||
+ | * for문을 nlen번 만큼 반복한다. | ||
+ | * 이 과정에서 저장한 | ||
+ | * msr값들과 | ||
+ | * vs값들의 마지막 6개를 살펴본다. | ||
+ | * v 값으로 x집합의 평균값을 사용하는 것이 최소 msr값이 된다는 것이 맞다면 | ||
+ | * v 값은 0이 될것이다 (왜냐하면 x집합을 zx로 바꿨기 때문에, 즉 평균이 0이고 sd값이 1일 집합으로 바꿨기 때문에) | ||
+ | * 아래 그래프의 각 포인트는 v값의 이동을 나타내는데 grad*learning_rate의 영향으로 점진적으로 하가하여 최소값으로 도달한다. | ||
+ | |||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | < | ||
+ | > # scaled | ||
+ | > vs # 변화하는 v 값들의 집합 | ||
+ | [1] 3.119260e-01 2.495408e-01 1.996326e-01 1.597061e-01 1.277649e-01 1.022119e-01 8.176952e-02 | ||
+ | [8] 6.541561e-02 5.233249e-02 4.186599e-02 3.349279e-02 2.679424e-02 2.143539e-02 1.714831e-02 | ||
+ | [15] 1.371865e-02 1.097492e-02 8.779935e-03 7.023948e-03 5.619158e-03 4.495327e-03 3.596261e-03 | ||
+ | [22] 2.877009e-03 2.301607e-03 1.841286e-03 1.473029e-03 1.178423e-03 9.427383e-04 7.541907e-04 | ||
+ | [29] 6.033525e-04 4.826820e-04 3.861456e-04 3.089165e-04 2.471332e-04 1.977066e-04 1.581652e-04 | ||
+ | [36] 1.265322e-04 1.012258e-04 8.098061e-05 6.478449e-05 5.182759e-05 4.146207e-05 3.316966e-05 | ||
+ | [43] 2.653573e-05 2.122858e-05 1.698286e-05 1.358629e-05 1.086903e-05 8.695226e-06 6.956181e-06 | ||
+ | [50] 5.564945e-06 4.451956e-06 3.561565e-06 2.849252e-06 2.279401e-06 1.823521e-06 1.458817e-06 | ||
+ | [57] 1.167054e-06 9.336428e-07 7.469143e-07 5.975314e-07 4.780251e-07 3.824201e-07 3.059361e-07 | ||
+ | [64] 2.447489e-07 1.957991e-07 1.566393e-07 1.253114e-07 1.002491e-07 8.019931e-08 6.415945e-08 | ||
+ | [71] 5.132756e-08 4.106205e-08 3.284964e-08 2.627971e-08 2.102377e-08 | ||
+ | > vs.orig <- (vs*sd(x))+mean(x) | ||
+ | > vs.orig | ||
+ | [1] 51.55963 51.24770 50.99816 50.79853 50.63882 50.51106 50.40885 50.32708 50.26166 50.20933 | ||
+ | [11] 50.16746 50.13397 50.10718 50.08574 50.06859 50.05487 50.04390 50.03512 50.02810 50.02248 | ||
+ | [21] 50.01798 50.01439 50.01151 50.00921 50.00737 50.00589 50.00471 50.00377 50.00302 50.00241 | ||
+ | [31] 50.00193 50.00154 50.00124 50.00099 50.00079 50.00063 50.00051 50.00040 50.00032 50.00026 | ||
+ | [41] 50.00021 50.00017 50.00013 50.00011 50.00008 50.00007 50.00005 50.00004 50.00003 50.00003 | ||
+ | [51] 50.00002 50.00002 50.00001 50.00001 50.00001 50.00001 50.00001 50.00000 50.00000 50.00000 | ||
+ | [61] 50.00000 50.00000 50.00000 50.00000 50.00000 50.00000 50.00000 50.00000 50.00000 50.00000 | ||
+ | [71] 50.00000 50.00000 50.00000 50.00000 50.00000 | ||
+ | > | ||
+ | > # 마지막 v값이 최소값에 근접한 값 | ||
+ | > v | ||
+ | [1] 2.102377e-08 | ||
+ | > v.orig <- (v*sd(x))+mean(x) | ||
+ | > v.orig | ||
+ | [1] 50 | ||
+ | > | ||
+ | > plot(vs.orig, | ||
+ | > | ||
+ | > | ||
+ | > | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP half column> | ||
+ | comment | ||
+ | {{: | ||
+ | |||
+ | 만약에 처음에 구한 랜덤 v값이 평균의 오른 쪽에있었더라면, | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | 그렇다면 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== 수학적 증명 ====== | ||
+ | 우선, | ||
+ | |||
+ | \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^{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] | ||
+ | & = \frac {\sigma^{2}} {n} + \mu^{2} | ||
+ | \end{align} | ||
+ | |||
+ | 참고로 위에서 | ||
+ | |||
+ | ---- | ||
+ | 참고로 Expected value (기대값)와 Variance (분산)의 연산에 과한 법칙으로는 (([[: | ||
+ | <WRAP box 450px> | ||
+ | X,Y are Independent variables. | ||
\begin{align*} | \begin{align*} | ||
- | E[s^2] & = E \left [ \frac{1}{\large n} \sum_{i=1}^n (X_i- \overline{X})^2 \right | + | E[aX] & = a E[X] \\ |
- | & = \frac{1}{\large n} E \left [ \sum_{i=1}^n (X_i^2 - 2\overline{X}X_i + \overline{X}^2) \right | + | E[X+Y] & = E[X] + E[Y] \\ |
- | & = \frac{1}{\large n} E \left [ \sum_{i=1}^n X_i^2 - \sum_{i=1}^n 2\overline{X}X_i + \sum_{i=1}^n \overline{X}^2 \right | + | Var[aX] |
- | & = \frac{1}{\large n} E \left [ \sum_{i=1}^n X_i^2 - 2n\overline{X}^2 +n\overline{X}^2 \right | + | Var[X+Y] & = Var[X] + Var[Y] |
- | & = \frac{1}{\large n} E \left [ \sum_{i=1}^n X_i^2 - n\overline{X}^2 \right | + | |
- | & = \frac{1}{\large n} E \left [ \sum_{i=1}^n X_i^2 \right ] - E \left [ \overline{X}^2 \right | + | |
\end{align*} | \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*} | \begin{align*} | ||
- | \sum 2 X_i \overline{X} & = 2 \sum X_i \overline{X} \\ | + | E \left[\sum{(X_{i}-\overline{X})^{2}} \right] & = E \left[\sum(X_{i}^{2}- 2 X_{i} \overline{X} |
- | & = 2 n \overline{X} | + | & = E \left[ \sum{X_{i}^2} - \sum{2X_{i} |
- | & = 2 n \overline{X}^2 | + | & = E \left[ \sum{X_{i}^2} - 2 \overline{X} |
+ | & = E \left[ \sum{X_{i}^2} - 2 \overline{X} | ||
+ | & = 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 | ||
+ | & = \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) | ||
\end{align*} | \end{align*} | ||
- | $$ | ||
+ | 한 편, 위의 $(1), (2)$에서 | ||
- | 여기서 | + | <WRAP box> |
+ | \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*} | ||
+ | </ | ||
- | $$ E \left [ \displaystyle \sum_{i=1}^n X_i^2 \right ] = Var[X_i] + \mu = \sigma^2 + \mu$$ | + | 위의 |
- | $$ E \left [ \displaystyle \overline{X}^2 \right ] = Var \left [\overline{X} \right ] + \mu = \frac{\sigma^2}{n} + \mu $$ 이므로 [4]의 식은 | + | |
- | $$ | ||
\begin{align*} | \begin{align*} | ||
- | E[s^2] & = \frac{1}{n} (\sigma^2+\mu) - ( \frac{\sigma^2}{n} + \mu) \\ | + | E \left[\sum{(X_{i}-\overline{X})^{2}} \right] & = \sum{E\left(X_{i}^{2}\right)} - n E\left(\overline{X}^{2}\right) \\ |
- | & = \frac{1}{n} \left [n(\sigma^2+\mu) - n(\frac{\sigma^2}{n} + \mu) \right | + | & = \sum{\left(\sigma^{2} + \mu^{2}\right)} - n \left(\dfrac{\sigma^2}{n} + \mu^2\right) \\ |
- | & = \frac{1}{n} \left [n \sigma^2 - \sigma^2 \right ] \\ | + | & = n\sigma^{2} + n\mu^{2} - \sigma^{2} - n\mu^{2} \\ |
- | & = \frac{(n-1)\sigma^2}{n} \; | + | & = \left(n-1\right) \sigma^{2} |
\end{align*} | \end{align*} | ||
- | $$ | ||
+ | 위는 식 (a)의 일부이므로 이를 온전한 식에 대입해보면, | ||
+ | \begin{eqnarray*} | ||
+ | E \left[\sum{(X_{i}-\overline{X})^{2}} \right] & = & (n-1) \sigma^{2} \\ | ||
+ | \end{eqnarray*} | ||
- | 즉 sample에서 구하는 variance로 모집단의 variance를 구하는데 오차가 보인다. 이를 모집단의 variance와 근사하게 하기 위해서 | + | \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*} | ||
- | $ \displaystyle | + | 그러므로, |
+ | \begin{eqnarray*} | ||
+ | E(s^2) = \sigma^{2} | ||
+ | \end{eqnarray*} | ||
- | 을 [5]에 곱하면, | ||
- | $ E[S^2] = \displaystyle \frac{(n-1)\sigma^2}{n} * \frac{n}{n-1} = \sigma^2 $ | + | ---- |
+ | 만약에 우리가 population의 variance를 구하듯이 | ||
- | {{tag>" | + | \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 | ||
+ | & = & \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라고 한다). 따라서 샘플을 취한 후에 모집단의 분산을 추정할 때에는 n 대신에 n-1을 사용하는 것이 맞다. 그렇다면 모집단의 분산을 구할 때는 n으로 (N으로) 나누어 주면 된다고 생각된다. 그러나 일반적으로 모집단의 분산을 구할 때에도 N-1로 나누어 구하게 된다. 이유는 모집단의 경우에 N이 충분히 큰 경우인데 이 때에는 N으로 나누어 주나, N-1로 나누어주나 큰 차이가 없기 때문이다. 따라서, R에서 분산을 구하는 var(x)에는 x의 성격에 상관없이 SS를 n-1로 나누어 분산을 구하게 된다. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== tags ====== | ||
+ | {{tag>" | ||
estimated_standard_deviation.1512954716.txt.gz · Last modified: 2017/12/11 09:41 by hkimscil