2012-01-08 17 views
0

だから私はC#で標準偏差を計算しようとしていると私は、次のコードだ:値は、私は、標準偏差は私のC#標準偏差コードが正しいですか?

ドを得るために、データの配列をしようとしているされている

double M = 0.0; 
    double S = 0.0; 
    int period = Values.Length; 
    int k; 
    double tmpM; 
    double value; 
    for(int i = 0; i < period; i++){ 
     tmpM = M; 
     value = Values[i]; 
     k = i + 1; 
     M += (value - tmpM)/k; 
     S += (value - tmpM) * (value - M); 
    } 
    stdev = Math.Sqrt(S/(period - 1)); 

をあなたは私のコードが正しいと思うか、私は何かが恋しいですか?

ところで、私はこれを実装しようとしていた:http://www.johndcook.com/standard_deviation.html

+7

おそらくコードレビューになるはずです – Dave

+0

あなたの問題は何ですか? – msarchet

+0

解決したい特定の問題がありますか? –

答えて

1

それは、period == 1正しくケースを処理しません。その場合、あなたはゼロで割ります。

それ以外の場合は、コードが正しいと思われます。

+0

この場合、標準偏差のサンプル推定値は無限大です。 –

+0

実行後、最初の反復では紙と同じことが起こります。しかし、私は論文の説明が嫌いです、Knuthのアルゴリズムのプレゼンテーションを探しています。 –

+0

@Benあなたは正しいです。提示されたコードは正しい。 –