Skip to content

Latest commit

 

History

History
31 lines (21 loc) · 1.56 KB

README.md

File metadata and controls

31 lines (21 loc) · 1.56 KB

zsocre-update-go

How to update score when new score list are added

표준점수(zscore) 업데이트에 대하여

표준점수를 공식은 다음과 같습니다.

(원수치 - 모집단 평균) / 모집단 표준편차

새로운 수치가 추가되면 기존의 평균과 표준편차가 바뀌게 됩니다.
이 때 평균과 표준편차를 구하기 위해 모든 수치를 누적하여 유지할 수도 있지만
계속 누적된 양이 나중에 무시못할 수준으로 간다면 문제가 될 겁니다.

때문에 수치를 누적하지 않고 최소한의 값만 유지하면서
새로운 수치에 따라 업데이트하기 위한 방법을 생각하게 되었습니다.

유지해야하는 값

수치의 개수(L), 평균(M), 수치 각각의 제곱의 합(S) 을 유지하면 됩니다.
이럴 때 평균은 다음과 같이 업데이트 할 수 있습니다.

새 평균 = ((M * L) + [새로 추가되는 수치들의 합]) / (L + [새로 추가되는 수치들의 개수])

분산은 다음과 같이 업데이트 할 수 있습니다.(새 평균을 M'이라 하겠습니다.)

새 분산 = ((S + [새로 추가되는 수치 각각의 제곱의 합]) / (L + [새로 추가되는 수치들의 개수])) - M'^2

새 분산의 제곱근이 바로 표준편차가 되겠습니다.
이제 새로 업데이트된 평균과 표준편차로 표준점수를 구할 수 있게 됩니다.

테스트 코드

  • 테스트 코드는 Go lang으로 작성되었습니다.
  • 이 개념을 테스트할 코드를 main.go 파일에 작성해 두었습니다.