所以我正在尝试计算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));
其中Values是我正在尝试获取标准差的数据数组
您认为我的代码是正确的还是我错过了什么?
顺便说一下,我试图实现这一点:http://www.johndcook.com/standard_deviation.html
答案 0 :(得分:2)
它无法正确处理period == 1
的情况。在这种可能性中,你将除以零。
否则我相信你的代码是正确的。