如何确定一组值的标准偏差(stddev)?
我需要知道一个与一组数字相比的数字是否在均值之外的1个stddev之外。
回答:
虽然平方和算法在大多数情况下都可以正常工作,但是如果您要处理非常大的数字,可能会造成很大的麻烦。您基本上可能最终会得到负方差…
另外,永远不要永远将a ^ 2计算为pow(a,2),几乎可以肯定a * a更快。
到目前为止,计算标准差的最佳方法是韦尔福德方法。我的C非常生锈,但是看起来可能像这样:
public static double StandardDeviation(List<double> valueList){
double M = 0.0;
double S = 0.0;
int k = 1;
foreach (double value in valueList)
{
double tmpM = M;
M += (value - tmpM) / k;
S += (value - tmpM) * (value - M);
k++;
}
return Math.Sqrt(S / (k-2));
}
如果您拥有 全部 人口(而不是 样本 人口),请使用return Math.Sqrt(S / (k-1));
。
我已经根据杰森的言论更新了代码…
我还根据亚历克斯的言论更新了代码…
以上是 如何确定一组值的标准偏差(stddev)? 的全部内容, 来源链接: utcz.com/qa/431015.html