2

나는이 알고리즘을 question에 대한 답으로 보았습니다.표준 편차 증명을위한 온라인 알고리즘

표준 편차를 올바르게 계산합니까? 누군가가 수학적으로 왜이 원리를 통해 나를 걸을 수 있습니까? 바람직하게는이 공식에서 다시 작업 :

enter image description here

public class Statistics { 

    private int n; 
    private double sum; 
    private double sumsq; 

    public void reset() { 
     this.n = 0; 
     this.sum = 0.0; 
     this.sumsq = 0.0; 
    } 

    public synchronized void addValue(double x) { 
     ++this.n; 
     this.sum += x; 
     this.sumsq += x*x; 
    } 

    public synchronized double calculateMean() { 
     double mean = 0.0; 
     if (this.n > 0) { 
      mean = this.sum/this.n; 
     } 
     return mean; 
    } 

    public synchronized double calculateStandardDeviation() { 
     double deviation = 0.0; 
     if (this.n > 1) { 
      deviation = Math.sqrt((this.sumsq - this.sum*this.sum/this.n)/(this.n-1)); 
     } 
     return deviation; 
    } 
} 

답변

2

나는에 링크 된 섹션의 시작에서 proof on wikipedia 있습니다. 그런데

enter image description here

는, 어디 선가 이런 식으로 계산하면 더 많은 오류를 생성 할 수 있다는에서 기억한다. 보시다시피 this.sumsq가 커질 수 있습니다. 정상적인 방법을 계산할 때는 항상 중간 값이 더 작습니다.

어쨌든 대부분의 시간 오류가 그다지 중요하지 않기 때문에이 온라인 계산을 많이 사용합니다.

+0

빙고. 숫자 안정성을 염두에두기 시작하면 2 단계 업데이트를 수행 할 수 있습니다. 케이 바르에서 얻을 수있는 (K + 1) 바르 K + 1 K 추가, (X K + 1 - 무 K)는 제곱의 합을 얻을 수 있도록 2는 업데이 트를 해결 옛날이 아닌 새로운 평균과의 차이점. – tmyklebu

+0

위키 피 디아 페이지에서 어떻게 이것을 놓쳤는 지 잘 모르겠지만 이것은 완전히 의미가 있습니다. 감사! – kingbob939

0

나는 인구 표준 편차가 그 공식에서 N을 N-1로 대체 할 것이라고 믿는다. 왜냐하면 평균이 주어질 때 자유도가 적기 때문이다. 저는 통계학자가 아니기 때문에 증거가 없습니다.

수식이 정확합니다. 표준 편차는 평균 분산의 제곱근입니다.