了解T-SQL stdev,stdevp,var和varp

Jam*_*der 9 t-sql statistics

我很难理解这些统计功能的作用以及它们的工作原理.我有更难以理解stdev如何与stdevp和var equivelant一起工作.有人可以为我打破这些愚蠢吗?

Eli*_*nti 24

在统计中,标准偏差和方差是衡量人口中度量偏离平均值(通常是平均值)的程度.标准偏差定义为方差的平方根,方差定义为平方差的平均值从平均值,即:

对于大小为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;
Run Code Online (Sandbox Code Playgroud)

进一步阅读维基百科的文章:标准偏差贝塞尔的更正.