在统计学中,标准差和方差是衡量总体中的指标偏离平均值(通常是平均值)的程度。
标准差定义为方差的平方根,方差定义为与平均值的平方差的平均值,即:
对于规模为 n 的总体:x1, x2, ..., xn
平均值:xmean
Stdevp = sqrt( ((x1-xmean)^2 + (x2-xmean)^2 + ... + (xn-xmean)^2)/n )
当整个总体的值无法获得时(大多数时候),通常会应用贝塞尔校正来更好地估计整个总体的实际标准差。贝塞尔修正只是在计算方差时除以 n-1 而不是除以 n,即:
Stdev = sqrt( ((x1-xmean)^2 + (x2-xmean)^2 + ... + (xn-xmean)^2)/(n-1) )
请注意,对于足够大的数据集,使用哪个函数并不重要。
您可以通过运行以下 T-SQL 脚本来验证我的答案:
-- temporary data set with values 2, 3, 4
declare @t table([val] int);
insert into @t values
(2),(3),(4);
select avg(val) as [avg], -- equals to 3.0
-- Estimation of the population standard devisation using a sample and Bessel's Correction:
-- ((x1 - xmean)^2 + (x2 - xmean)^2 + ... + (xn-xmean)^2)/(n-1)
stdev(val) as [stdev],
sqrt( (square(2-3.0) + square(3-3) + square(4-3))/2) as [stdev calculated], -- calculated with value 2, 3, 4
-- Population standard deviation:
-- ((x1 - xmean)^2 + (x2 - xmean)^2 + ... + (xn-xmean)^2)/n
stdevp(val) as [stdevp],
sqrt( (square(2-3.0) + square(3-3) + square(4-3))/3) as [stdevp calculated] -- calculated with value 2, 3, 4
from @t;
进一步阅读维基百科文章:标准差 http://en.wikipedia.org/wiki/Standard_deviationn and 贝塞尔修正 http://en.wikipedia.org/wiki/Bessel%27s_correction.