26 votos

Desviación típica de las observaciones agrupadas

Tengo un conjunto de datos de observaciones de muestras, almacenadas como recuentos dentro de intervalos de rango. p. ej:

min/max  count
40/44    1
45/49    2
50/54    3
55/59    4
70/74    1

A partir de aquí, calcular la media es bastante sencillo. Basta con utilizar la media (o mediana) de cada intervalo como observación y el recuento como ponderación para hallar la media ponderada:

$$\bar{x}^* = \frac{1}{\sum_{i=1}^N w_i} \sum_{i=1}^N w_ix_i$$

Para mi caso de prueba, esto me da 53,82.

Mi pregunta ahora es, ¿cuál es el método correcto para hallar la desviación típica (o varianza)?

En mi búsqueda he encontrado varias respuestas, pero no estoy seguro de cuál es la más adecuada para mi conjunto de datos. Pude encontrar la siguiente fórmula tanto sobre otra pregunta aquí y un documento NIST aleatorio .

$$s^{2*} = \frac{ \sum_{i=1}^N w_i (x_i - \bar{x}^*)^2 }{ \frac{(M-1)}{M} \sum_{i=1}^N w_i }$$

Lo que da una desviación típica de 8,35 para mi caso de prueba. Sin embargo, el artículo de Wikipedia sobre medios ponderados da tanto la fórmula:

$$s^{2*} = \frac{ \sum_{i=1}^N w_i}{(\sum_{i=1}^N w_i)^2 - \sum_{i=1}^N w_i^2} \sum_{i=1}^N w_i(x_i-\bar{x}^*)^2$$

y

$$s^{2*} = \frac{1}{(\sum_{i=1}^N w_i) - 1} \sum_{i=1}^N w_i(x_i-\bar{x}^*)^2$$

Que dan desviaciones estándar de 8,66 y 7,83, respectivamente, para mi caso de prueba.

Actualización

Gracias a @whuber que sugirió buscar en las Correcciones de Sheppard, y sus útiles comentarios relacionados con ellas. Desafortunadamente, estoy teniendo dificultades para entender los recursos que puedo encontrar al respecto (y no puedo encontrar buenos ejemplos). Sin embargo, para recapitular, entiendo que lo siguiente es una estimación sesgada de la varianza:

$$s^{2*} = \frac{1}{\sum_{i=1}^N w_i} \sum_{i=1}^N w_i(x_i-\bar{x}^*)^2$$

También tengo entendido que la mayoría de las correcciones estándar del sesgo son para muestras aleatorias directas de una distribución normal. Por lo tanto, veo dos problemas potenciales para mí:

  1. Se trata de muestras aleatorias binned (que, estoy bastante seguro, es donde entran las correcciones de Sheppard).
  2. Se desconoce si los datos corresponden o no a una distribución normal (por lo que asumo que no, lo que, estoy bastante seguro, invalida las Correcciones de Sheppard).

Así pues, mi pregunta actualizada es: ¿Cuál es el método adecuado para tratar el sesgo impuesto por la fórmula "simple" de desviación estándar ponderada/varianza en una distribución no normal? Más concretamente, en lo que respecta a los datos agrupados.

Nota: Utilizo los siguientes términos:

  • $s^{2*}$ es la varianza ponderada
  • $N$ es el número de observaciones. (es decir, el número de bins)
  • $M$ es el número de pesos distintos de cero. (es decir, el número de bins con recuentos)
  • $w_i$ son los pesos (es decir, los recuentos)
  • $x_i$ son las observaciones. (es decir, las medias de los contenedores)
  • $\bar{x}^*$ es la media ponderada.

18voto

jldugger Puntos 7490

Esta respuesta presenta dos soluciones: Las correcciones de Sheppard y una estimación de máxima verosimilitud. Ambos coinciden en una estimación de la desviación típica: $7.70$ para la primera y $7.69$ para el segundo (cuando se ajusta para que sea comparable al estimador "insesgado" habitual).


Correcciones de Sheppard

Las "correcciones de Sheppard" son fórmulas que ajustan los momentos calculados a partir de datos binned (como éstos) donde

  • se supone que los datos se rigen por una distribución soportada en un intervalo finito $[a,b]$

  • ese intervalo se divide secuencialmente en intervalos iguales de anchura común $h$ que es relativamente pequeño (ningún contenedor contiene una gran proporción de todos los datos)

  • la distribución tiene una función de densidad continua.

Se derivan de la fórmula de la suma de Euler-Maclaurin, que aproxima las integrales en términos de combinaciones lineales de valores del integrando en puntos regularmente espaciados, y por lo tanto de aplicación general (y no sólo a las distribuciones Normales).

Aunque en sentido estricto una distribución Normal es no apoyado en un intervalo finito, a una aproximación extremadamente cercana lo es. Esencialmente, toda su probabilidad está contenida dentro de siete desviaciones estándar de la media. Por lo tanto, las correcciones de Sheppard son aplicables a los datos que se supone proceden de una distribución Normal.

Las dos primeras correcciones de Sheppard son

  1. Utilice la media de los datos divididos en cubos para la media de los datos (es decir, no es necesaria ninguna corrección para la media).

  2. Resta $h^2/12$ a partir de la varianza de los datos agrupados para obtener la varianza (aproximada) de los datos.

¿Dónde está $h^2/12$ ¿De dónde viene? Es igual a la varianza de una variante uniforme distribuida en un intervalo de longitud $h$ . Intuitivamente, entonces, la corrección de Sheppard para el segundo momento sugiere que Al dividir los datos por intervalos -sustituyéndolos por el punto medio de cada intervalo- parece que se añade un valor distribuido de forma aproximadamente uniforme que oscila entre los siguientes valores $-h/2$ y $h/2$ por lo que infla la varianza en $h^2/12$ .

Hagamos los cálculos. Utilizo R para ilustrarlas, empezando por especificar los recuentos y los intervalos:

counts <- c(1,2,3,4,1)
bin.lower <- c(40, 45, 50, 55, 70)
bin.upper <- c(45, 50, 55, 60, 75)

La fórmula adecuada para realizar los recuentos es la siguiente replicando las anchuras de las casillas por las cantidades dadas por los recuentos; es decir, los datos divididos en casillas equivalen a

42.5, 47.5, 47.5, 52.5, 52.5, 57.5, 57.5, 57.5, 57.5, 72.5

Sin embargo, su número, media y varianza pueden calcularse directamente sin tener que expandir los datos de esta forma: cuando un contenedor tiene punto medio $x$ y un recuento de $k$ entonces su contribución a la suma de cuadrados es $kx^2$ . Esto conduce a la segundo de las fórmulas de Wikipedia citadas en la pregunta.

bin.mid <- (bin.upper + bin.lower)/2
n <- sum(counts)
mu <- sum(bin.mid * counts) / n
sigma2 <- (sum(bin.mid^2 * counts) - n * mu^2) / (n-1)

La media ( mu ) es $1195/22 \approx 54.32$ (que no necesita corrección) y la varianza ( sigma2 ) es $675/11 \approx 61.36$ . (Su raíz cuadrada es $7.83$ como se indica en la pregunta). Dado que la anchura común de los contenedores es $h=5$ restamos $h^2/12 = 25/12 \approx 2.08$ de la varianza y sacar su raíz cuadrada, obteniendo $\sqrt{675/11 - 5^2/12} \approx 7.70$ para la desviación típica.


Estimaciones de máxima verosimilitud

Un método alternativo consiste en aplicar una estimación de máxima verosimilitud. Cuando la distribución subyacente supuesta tiene una función de distribución $F_\theta$ (en función de los parámetros $\theta$ a estimar) y el bin $(x_0, x_1]$ contiene $k$ de un conjunto de valores independientes e idénticamente distribuidos de $F_\theta$ entonces la contribución (aditiva) a la logverosimilitud de este bin es

$$\log \prod_{i=1}^k \left(F_\theta(x_1) - F_\theta(x_0)\right) = k\log\left(F_\theta(x_1) - F_\theta(x_0)\right)$$

(véase MLE/verosimilitud del intervalo con distribución lognormal ).

La suma de todos los intervalos da la probabilidad logarítmica $\Lambda(\theta)$ para el conjunto de datos. Como de costumbre, encontramos una estimación $\hat\theta$ que minimiza $-\Lambda(\theta)$ . Esto requiere una optimización numérica y eso se agiliza suministrando buenos valores de partida para $\theta$ . Los siguientes R hace el trabajo para una distribución Normal:

sigma <- sqrt(sigma2) # Crude starting estimate for the SD
likelihood.log <- function(theta, counts, bin.lower, bin.upper) {
  mu <- theta[1]; sigma <- theta[2]
  -sum(sapply(1:length(counts), function(i) {
    counts[i] * 
      log(pnorm(bin.upper[i], mu, sigma) - pnorm(bin.lower[i], mu, sigma))
  }))
}
coefficients <- optim(c(mu, sigma), function(theta) 
  likelihood.log(theta, counts, bin.lower, bin.upper))$par

Los coeficientes resultantes son $(\hat\mu, \hat\sigma) = (54.32, 7.33)$ .

Recuerde, sin embargo, que para distribuciones normales la estimación de máxima verosimilitud de $\sigma$ (cuando los datos se dan exactamente y no se dividen) es el población de los datos, no la estimación "corregida de sesgo" más convencional en la que la varianza se multiplica por $n/(n-1)$ . Corrijamos entonces (por comparación) la MLE de $\sigma$ , encontrando $\sqrt{n/(n-1)} \hat\sigma = \sqrt{11/10}\times 7.33 = 7.69$ . Esto se compara favorablemente con el resultado de la corrección de Sheppard, que fue $7.70$ .

Verificación de los supuestos

Para visualizar estos resultados podemos trazar la densidad Normal ajustada sobre un histograma:

hist(unlist(mapply(function(x,y) rep(x,y), bin.mid, counts)),
     breaks = breaks, xlab="Values", main="Data and Normal Fit")
curve(dnorm(x, coefficients[1], coefficients[2]), 
      from=min(bin.lower), to=max(bin.upper), 
      add=TRUE, col="Blue", lwd=2)

Figure

Para algunos, esto podría no parecer una buena opción. Sin embargo, como el conjunto de datos es pequeño (sólo $11$ ), pueden producirse desviaciones sorprendentemente grandes entre la distribución de las observaciones y la verdadera distribución subyacente.

Comprobemos más formalmente el supuesto (realizado por el MLE) de que los datos se rigen por una distribución Normal. Se puede obtener una prueba aproximada de bondad de ajuste a partir de un $\chi^2$ prueba: los parámetros estimados indican la cantidad esperada de datos en cada recipiente; la $\chi^2$ compara los recuentos observados con los esperados. He aquí una prueba en R :

breaks <- sort(unique(c(bin.lower, bin.upper)))
fit <- mapply(function(l, u) exp(-likelihood.log(coefficients, 1, l, u)),
              c(-Inf, breaks), c(breaks, Inf))
observed <- sapply(breaks[-length(breaks)], function(x) sum((counts)[bin.lower <= x])) -
  sapply(breaks[-1], function(x) sum((counts)[bin.upper < x]))
chisq.test(c(0, observed, 0), p=fit, simulate.p.value=TRUE)

El resultado es

Chi-squared test for given probabilities with simulated p-value (based on 2000 replicates)

data:  c(0, observed, 0) 
X-squared = 7.9581, df = NA, p-value = 0.2449

El programa ha realizado una prueba de permutación (que es necesaria porque la estadística de la prueba no sigue exactamente una distribución chi-cuadrado: véase mi análisis en Cómo entender los grados de libertad ). Su valor p de $0.245$ que no es pequeño, muestra muy pocos indicios de desviación de la normalidad: tenemos motivos para confiar en los resultados de máxima verosimilitud.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X