How to update score when new score list are added
표준점수를 공식은 다음과 같습니다.
(원수치 - 모집단 평균) / 모집단 표준편차
새로운 수치가 추가되면 기존의 평균과 표준편차가 바뀌게 됩니다.
이 때 평균과 표준편차를 구하기 위해 모든 수치를 누적하여 유지할 수도 있지만
계속 누적된 양이 나중에 무시못할 수준으로 간다면 문제가 될 겁니다.
때문에 수치를 누적하지 않고 최소한의 값만 유지하면서
새로운 수치에 따라 업데이트하기 위한 방법을 생각하게 되었습니다.
수치의 개수(L), 평균(M), 수치 각각의 제곱의 합(S) 을 유지하면 됩니다.
이럴 때 평균은 다음과 같이 업데이트 할 수 있습니다.
새 평균 = ((M * L) + [새로 추가되는 수치들의 합]) / (L + [새로 추가되는 수치들의 개수])
분산은 다음과 같이 업데이트 할 수 있습니다.(새 평균을 M'이라 하겠습니다.)
새 분산 = ((S + [새로 추가되는 수치 각각의 제곱의 합]) / (L + [새로 추가되는 수치들의 개수])) - M'^2
새 분산의 제곱근이 바로 표준편차가 되겠습니다.
이제 새로 업데이트된 평균과 표준편차로 표준점수를 구할 수 있게 됩니다.
- 테스트 코드는 Go lang으로 작성되었습니다.
- 이 개념을 테스트할 코드를 main.go 파일에 작성해 두었습니다.