도구스개발

웰퍼드 온라인 평균·분산 계산기

값을 스트림으로 하나씩 받을 때 전체를 다시 훑지 않고 평균·분산을 그때그때 갱신하는 원패스 알고리즘의 계산 과정을 보여줍니다.

숫자열 (쉼표·공백·줄바꿈으로 구분)

개수4
평균2.5
모집단분산1.25
표본분산1.67

세 방식이 계산한 M2(제곱합 편차) 비교

웰퍼드(원패스)5
두 번 훑는 편차 방식5
단순합·제곱합 공식5

스텝별 갱신 과정 (최대 30개)

순번xdeltameandelta2M2
111100
2211.50.50.5
331.5212
4422.51.55
큰 값(예: 1e9) 근처에 작은 분산이 섞인 숫자열을 넣어 보면, 웰퍼드와 두 번 훑는 방식은 거의 같지만 단순합·제곱합 공식만 크게 벗어나는 것을 확인할 수 있습니다 — 두 거대한 수를 빼는 과정에서 유효자릿수가 크게 날아가기 때문입니다.

사용 방법

  1. 1숫자를 쉼표나 줄바꿈으로 구분해 입력합니다.
  2. 2스텝별 평균·M2 갱신 과정을 확인합니다.
  3. 3두 번 훑는 편차 방식·단순합·제곱합 공식과 나란히 비교한 결과를 확인합니다.

자주 묻는 질문

값을 하나씩 받을 때마다 델타(delta = x - 이전 평균)로 평균을 갱신하고, 갱신된 평균과의 새 델타(delta2)를 곱해 M2(제곱합 편차)를 누적합니다. 분산은 M2를 개수(모집단) 또는 개수-1(표본)로 나눠 구합니다.

전체 데이터를 저장하지 않고도 값이 들어올 때마다 평균·분산을 즉시 갱신할 수 있습니다. 데이터가 스트림으로 계속 들어오거나 메모리에 다 담기 어려울 만큼 많을 때 특히 유용합니다.

평균을 먼저 구하고 다시 훑어 Σ(x-평균)²을 계산하는 두 번 훑는 방식도 사실 웰퍼드만큼 수치적으로 안정적입니다. 차이는 스트리밍 여부입니다 — 두 번 훑는 방식은 데이터를 전부 저장해 두 번 봐야 하지만, 웰퍼드는 한 번만 보면 됩니다.

통계 교과서 공식 E[X²]-E[X]²을 그대로 코드로 옮긴 "단순합·제곱합" 한 번 훑기 방식과 비교하면 차이가 뚜렷합니다. 이 방식은 큰 값 근처에 작은 분산이 섞이면 두 거대한 수를 빼는 과정에서 유효자릿수가 크게 날아갑니다(catastrophic cancellation). 이 계산기는 세 방식을 나란히 계산해 웰퍼드·두 번 훑는 방식은 거의 같고, 단순합·제곱합 공식만 크게 벗어나는 것을 보여줍니다.

알아두면 좋은 점

  • [1,2,3,4]를 손으로 계산한 스텝별 delta·mean·M2 값과 정확히 일치하는지 검증했습니다.
  • 1e9 근처 값 1000개(작은 분산)로 세 방식을 계산해, 웰퍼드와 두 번 훑는 방식은 오차 1 이내로 거의 일치하지만 단순합·제곱합 공식은 수백~수천 배 벗어나는 것을 실제로 확인했습니다.
  • JavaScript의 배정밀도 부동소수점(double) 특성상 나온 결과이며, 정확한 계산이 필요하면 웰퍼드나 두 번 훑는 방식을 쓰는 것이 안전합니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.