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

时间:2009-09-21 16:16:03

标签: tsql statistics

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

2 个答案:

答案 0 :(得分:24)

统计数据标准偏差和方差是衡量人口中度量偏离平均值(通常是平均值)的指标。 标准差定义为方差的平方根,方差定义为与平均值的平方差的平均值,即:

对于大小为n的种群:x1,x2,...,xn 用mean: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;

进一步阅读维基百科文章:standard deviatio n和Bessel's Correction

答案 1 :(得分:-3)

STDDEV用于计算数据集的标准偏差。 STDDEVP用于计算数据样本的总体标准偏差。

如果您的输入是整个总体,则使用STDDEV计算总体标准差。更典型的是,您的数据集是更大人口的样本。在这种情况下,数据集的标准偏差不代表人口的真实标准偏差,因为它通常偏差太低。使用STDDEVP可以更好地估算基于样本的总体标准差。

VAR和VARP的情况是一样的。

有关该主题的更全面讨论,请参阅this Wikipedia article