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 21:44] – [output] hkimscil | estimated_standard_deviation [2025/09/07 06:24] (current) – [수학적 증명] hkimscil | ||
---|---|---|---|
Line 138: | Line 138: | ||
</ | </ | ||
<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 465: | ||
tail(vs) | tail(vs) | ||
- | plot(msrs) | + | plot(vs, msrs, type=' |
- | plot(vs) | + | |
# scaled | # scaled | ||
Line 477: | Line 476: | ||
v.orig <- (v*sd(x))+mean(x) | v.orig <- (v*sd(x))+mean(x) | ||
v.orig | v.orig | ||
+ | |||
+ | plot(vs.orig, | ||
</ | </ | ||
Line 528: | Line 529: | ||
* 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 611: | ||
[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 629: | Line 630: | ||
* v 값으로 x집합의 평균값을 사용하는 것이 최소 msr값이 된다는 것이 맞다면 | * v 값으로 x집합의 평균값을 사용하는 것이 최소 msr값이 된다는 것이 맞다면 | ||
* v 값은 0이 될것이다 (왜냐하면 x집합을 zx로 바꿨기 때문에, 즉 평균이 0이고 sd값이 1일 집합으로 바꿨기 때문에) | * v 값은 0이 될것이다 (왜냐하면 x집합을 zx로 바꿨기 때문에, 즉 평균이 0이고 sd값이 1일 집합으로 바꿨기 때문에) | ||
+ | * 아래 그래프의 각 포인트는 v값의 이동을 나타내는데 grad*learning_rate의 영향으로 점진적으로 하가하여 최소값으로 도달한다. | ||
+ | |||
+ | {{: | ||
</ | </ | ||
</ | </ | ||
Line 666: | Line 670: | ||
> v.orig | > v.orig | ||
[1] 50 | [1] 50 | ||
+ | > | ||
+ | > plot(vs.orig, | ||
> | > | ||
> | > | ||
Line 673: | Line 679: | ||
<WRAP half column> | <WRAP half column> | ||
comment | comment | ||
+ | {{: | ||
+ | |||
+ | 만약에 처음에 구한 랜덤 v값이 평균의 오른 쪽에있었더라면, | ||
+ | {{: | ||
</ | </ | ||
</ | </ | ||
Line 796: | Line 806: | ||
\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.1757076259.txt.gz · Last modified: 2025/09/05 21:44 by hkimscil