2009-09-21 644 views
8

Tengo dificultades para comprender qué hacen estas funciones estadísticas y cómo funcionan. Me está costando aún más entender cómo funciona stdev vs stdevp y var equivelant. ¿Alguien puede por favor hacerlos mudos por mí?Comprender T-SQL stdev, stdevp, var y varp

+1

¿No comprende qué hacen estas funciones o no está seguro de qué es una desviación estándar o una variante? En otras palabras, ¿necesita ayuda con T-SQL o con estadísticas (o ambas)? –

+0

Necesito entender tanto el T-SQL como los lados de la estadística –

Respuesta

23

En estadísticas, la desviación estándar y la varianza son medidas de cuánto una métrica en una población se desvía de la media (generalmente el promedio) La desviación estándar se define como la raíz cuadrada de la varianza y la varianza se define como promedio de la diferencia al cuadrado de la media, es decir:

Para una población de tamaño n: x1, x2, ..., xn con media: xmean

Stdevp = sqrt (((x1-xmean)^2 + (x2-xmean)^2 + ... + (xn-xmean)^2)/n)

Cuando los valores para el toda la población no está disponible (la mayoría de las veces) es costumbre aplicar la corrección de Bessel para obtener una mejor estimación de la desviación estándar real para toda la población. La corrección de Bessel simplemente se divide por n-1 en lugar de por n al calcular la varianza, es decir:

Stdev = sqrt (((x1-xmean)^2 + (x2-xmean)^2 + ... + (xn-xmean)^2)/(n-1))

Tenga en cuenta que para conjuntos de datos suficientemente grandes no importará qué función se utiliza.

Puede verificar mi respuesta ejecutando el siguiente script 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; 

Otros artículos de Wikipedia para la lectura: standard deviatio ny Bessel's Correction.

-3

STDDEV se utiliza para calcular la desviación estándar de un conjunto de datos. STDDEVP se utiliza para calcular la desviación estándar de una población de la cual sus datos son una muestra.

Si su entrada es para toda la población, entonces la desviación estándar de la población se calcula con STDDEV. Más típicamente, su conjunto de datos es una muestra de una población mucho más grande. En este caso, la desviación estándar del conjunto de datos no representaría la verdadera desviación estándar de la población, ya que generalmente será sesgada demasiado baja. Se obtiene una mejor estimación de la desviación estándar de la población basada en una muestra con STDDEVP.

La situación con VAR y VARP es la misma.

Para una discusión más a fondo del tema, por favor vea this Wikipedia article.

+1

No estoy seguro acerca de SQL, pero esto no parece estar de acuerdo con las definiciones de Excel de STDEV y STDEVP. El artículo de Wikipedia explica cómo se subestima la desviación estándar de la población calculando la desviación estándar real de la muestra (dividir n), y por lo tanto, que generalmente se corrige (dividir n-1). STDEVP es (n) [http://office.microsoft.com/en-us/excel-help/stdevp-HP005209281.aspx?CTT=1] y STDEV es (n-1) [http://office.microsoft .com/en-us/excel-help/stdev-HP005209277.aspx? CTT = 1]. –

+1

La explicación está al revés. STDDEV es cuando solo tiene una muestra, STDDEVP es cuando tiene la población completa. –