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 [2025/09/05 12:30] – [output] hkimscil | estimated_standard_deviation [2025/09/30 06:19] (current) – [직관적 이해] hkimscil | ||
|---|---|---|---|
| Line 25: | Line 25: | ||
| 이를 그림으로도 설명할 수 있다. 아래에서 녹색의 세로선은 모집단의 평균값이고, | 이를 그림으로도 설명할 수 있다. 아래에서 녹색의 세로선은 모집단의 평균값이고, | ||
| - | {{:pasted:20200412-002825.png?500}} | + | |
| + | < | ||
| + | > m.p1 <- 12 | ||
| + | > s1 <- c(6, 9, 15) | ||
| + | > hist(s1) | ||
| + | > s1 | ||
| + | [1] 6 9 15 | ||
| + | > abline(v=s1, | ||
| + | > abline(v=10, | ||
| + | > abline(v=12, | ||
| + | > | ||
| + | > m.s1 <- mean(s1) | ||
| + | > m.p1 <- 12 | ||
| + | > abs(s1-m.s1) | ||
| + | [1] 4 1 5 | ||
| + | > abs(s1-m.p1) | ||
| + | [1] 6 3 3 | ||
| + | > | ||
| + | </ | ||
| + | {{:pasted:20250930-150655.png?800}} | ||
| + | 붉은 선 s1 평균 (10) | ||
| + | 초록 선 모집단 평균 12 (혹은 그냥 12 가치라고 해도 됨) | ||
| + | 세개 검은 선은 각각 6, 9, 15 | ||
| + | |||
| + | 붉은 선에서 세개 검은 선까지의 길이는 4, 1, 5가 되고 이를 더하면 10 | ||
| + | 초록 선에서 세개 검은 선까지의 길이는 6, 3, 3이 되고 이를 더하면 12 | ||
| ====== 실험적, R에서 시뮬레이션으로 이해 ====== | ====== 실험적, R에서 시뮬레이션으로 이해 ====== | ||
| Line 138: | Line 164: | ||
| </ | </ | ||
| <WRAP half column> | <WRAP half column> | ||
| - | SS = sum(x-mean(x))^2 인데, mean(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 = 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값을 (SS값을 n으로 나눈 값, 즉, variance값 혹은 Mean Square값) 구해서 보려고 하는데 이것은 같은 의미를 갖는다. 즉, 모든 SS값들에 n을 공토으로 나누어준 값을 저장하고 비교하려는 것이다. | 단, 이 코드에서 SS대신 MS값을 (SS값을 n으로 나눈 값, 즉, variance값 혹은 Mean Square값) 구해서 보려고 하는데 이것은 같은 의미를 갖는다. 즉, 모든 SS값들에 n을 공토으로 나누어준 값을 저장하고 비교하려는 것이다. | ||
| Line 465: | Line 491: | ||
| tail(vs) | tail(vs) | ||
| - | plot(msrs) | + | plot(vs, msrs, type=' |
| - | plot(vs) | + | |
| # scaled | # scaled | ||
| Line 477: | Line 502: | ||
| v.orig <- (v*sd(x))+mean(x) | v.orig <- (v*sd(x))+mean(x) | ||
| v.orig | v.orig | ||
| + | |||
| + | plot(vs.orig, | ||
| </ | </ | ||
| Line 528: | Line 555: | ||
| * gradient function과 | * gradient function과 | ||
| * learning_rate 값이다. | * 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값을 | + | gradient 펑션은 dy/dv 의 연쇄 미분식인 ([[:chain rules]]) -2(x-v) / n = -2 mean(res) 값을 구하는 것이다. 이렇게 구한 값에 learning_rate값을 곱한후, 이것을 먼저 사용한 v값에서 (빨간색 지점) 빼 주어 다음 v값으로 (녹색지점) 사용하려고 한다. 이 녹색지점에서의 v값을 사용했을 때의 gradient값을 구한 후 다시 이값에 learning_rate인 0.1을 곱하여 그다음 |
| {{: | {{: | ||
| Line 610: | Line 637: | ||
| [1] 6.415945e-08 5.132756e-08 4.106205e-08 3.284964e-08 2.627971e-08 2.102377e-08 | [1] 6.415945e-08 5.132756e-08 4.106205e-08 3.284964e-08 2.627971e-08 2.102377e-08 | ||
| > | > | ||
| - | > plot(msrs) | + | > plot(vs, msrs) |
| - | > plot(vs) | + | > |
| > | > | ||
| </ | </ | ||
| Line 617: | Line 644: | ||
| <WRAP half column> | <WRAP half column> | ||
| comment | 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의 영향으로 점진적으로 하가하여 최소값으로 도달한다. | ||
| + | |||
| + | {{: | ||
| </ | </ | ||
| </ | </ | ||
| Line 654: | Line 696: | ||
| > v.orig | > v.orig | ||
| [1] 50 | [1] 50 | ||
| + | > | ||
| + | > plot(vs.orig, | ||
| > | > | ||
| > | > | ||
| Line 661: | Line 705: | ||
| <WRAP half column> | <WRAP half column> | ||
| comment | comment | ||
| + | {{: | ||
| + | |||
| + | 만약에 처음에 구한 랜덤 v값이 평균의 오른 쪽에있었더라면, | ||
| + | {{: | ||
| </ | </ | ||
| </ | </ | ||
| Line 784: | Line 832: | ||
| \end{eqnarray*} | \end{eqnarray*} | ||
| - | 즉, 원래 $\sigma^2$ 값보다 조금 작은 값을 갖게 될 것이다 (이를 biased result라고 한다). | + | 즉, 원래 $\sigma^2$ 값보다 조금 작은 값을 갖게 될 것이다 (이를 biased result라고 한다). 따라서 샘플을 취한 후에 모집단의 분산을 추정할 때에는 n 대신에 n-1을 사용하는 것이 맞다. 그렇다면 모집단의 분산을 구할 때는 n으로 (N으로) 나누어 주면 된다고 생각된다. 그러나 일반적으로 모집단의 분산을 구할 때에도 N-1로 나누어 구하게 된다. 이유는 모집단의 경우에 N이 충분히 큰 경우인데 이 때에는 N으로 나누어 주나, N-1로 나누어주나 큰 차이가 없기 때문이다. 따라서, R에서 분산을 구하는 var(x)에는 x의 성격에 상관없이 SS를 n-1로 나누어 분산을 구하게 된다. |
estimated_standard_deviation.1757075430.txt.gz · Last modified: by hkimscil
