25 votos

¿Cómo combinar las desviaciones estándar de dos grupos?

Tengo 2 grupos de personas. Estoy trabajando con los datos sobre su edad. Conozco las medias, las desviaciones estándar y el número de personas. No conozco los datos de cada persona en los grupos.

Grupo 1 :

Media = 35 años; DE = 14; n = 137 personas

Grupo 2 :

Media = 31 años; DE = 11; n = 112 personas

Quiero combinar esos 2 grupos para obtener una nueva media y DE. Es fácil para la media, ¿pero es posible para la DE? No conozco la distribución de esas muestras, y no puedo asumir que sean distribuciones normales. ¿Existe una fórmula para distribuciones que no son necesariamente normales?

32voto

heropup Puntos 29437

Continuando desde la explicación de BruceET, es importante notar que si estamos calculando el estimador insesgado de la desviación estándar de cada muestra, es decir $$s = \sqrt{\frac{1}{n-1} \sum_{i=1}^n (x_i - \bar x)^2},$$ y esto es lo que se proporciona, entonces hay que tener en cuenta que para las muestras $\boldsymbol x = (x_1, \ldots, x_n)$, $\boldsymbol y = (y_1, \ldots, y_m)$, se tiene que $\boldsymbol z = (x_1, \ldots, x_n, y_1, \ldots, y_m)$ es la muestra combinada, por lo tanto, la media combinada de la muestra es $$\bar z = \frac{1}{n+m} \left( \sum_{i=1}^n x_i + \sum_{j=1}^m y_i \right) = \frac{n \bar x + m \bar y}{n+m}.$$ En consecuencia, la varianza combinada de la muestra es $$s_z^2 = \frac{1}{n+m-1} \left( \sum_{i=1}^n (x_i - \bar z)^2 + \sum_{j=1}^m (y_i - \bar z)^2 \right),$$ en donde es importante notar que se utiliza la media combinada. Para poder expresar esto en términos de $s_x^2$ y $s_y^2$, claramente necesitamos descomponer las sumas de cuadrados; por ejemplo, $$(x_i - \bar z)^2 = (x_i - \bar x + \bar x - \bar z)^2 = (x_i - \bar x)^2 + 2(x_i - \bar x)(\bar x - \bar z) + (\bar x - \bar z)^2,$$ por lo tanto $$\sum_{i=1}^n (x_i - \bar z)^2 = (n-1)s_x^2 + 2(\bar x - \bar z)\sum_{i=1}^n (x_i - \bar x) + n(\bar x - \bar z)^2.$$ Pero el término del medio desaparece, por lo que esto nos da $$s_z^2 = \frac{(n-1)s_x^2 + n(\bar x - \bar z)^2 + (m-1)s_y^2 + m(\bar y - \bar z)^2}{n+m-1}.$$ Al simplificar, encontramos que $$n(\bar x - \bar z)^2 + m(\bar y - \bar z)^2 = \frac{mn(\bar x - \bar y)^2}{m + n},$$ por lo que la fórmula se convierte en $$s_z^2 = \frac{(n-1) s_x^2 + (m-1) s_y^2}{n+m-1} + \frac{nm(\bar x - \bar y)^2}{(n+m)(n+m-1)}.$$ Este segundo término es el factor de corrección requerido.

10voto

BruceET Puntos 7117

Ni la sugerencia en una Respuesta anterior (ahora eliminada) ni la sugerencia en el siguiente Comentario son correctas para la desviación estándar muestral de la muestra combinada.

Datos conocidos para referencia.: Primero, es útil tener datos reales a mano para verificar resultados, por lo que simulé muestras de tamaños $n_1 = 137$ y $n_2 = 112$ que son aproximadamente iguales a las de la pregunta.

Media de la muestra combinada: Dices que 'la media es fácil', así que veamos eso primero. La media muestral $\bar X_c$ de la muestra combinada puede expresarse en términos de las medias $\bar X_1$ y $\bar X_2$ de las primeras y segundas muestras, respectivamente, de la siguiente manera. Sea $n_c = n_1 + n_2$ el tamaño de la muestra combinada, y que la notación usando corchetes en subíndices denote los índices de las respectivas muestras.

$$ \bar X_c = \frac{\sum_{[c]} X_i}{n} = \frac{\sum_{[1]} X_i + \sum_{[2]} X_i}{n_1 + n_1} = \frac{n_1\bar X_1 + n_2\bar X_2}{n_1+n_2}.$$

Verifiquemos eso en R, usando mi conjunto de datos simulados (por ahora, ignoremos las desviaciones estándar):

set.seed(2025); n1 = 137; n2 = 112  
x1 = rnorm(n1, 35, 45);  x2 = rnorm(n2, 31, 11)
x = c(x1,x2)              # conjunto de datos combinado
mean(x1); sd(x1)
[1] 31.19363              # media muestral de la muestra 1
[1] 44.96014
mean(x2); sd(x2)
[1] 31.57042              # media muestral de la muestra 2
[1] 10.47946
mean(x); sd(x)
[1] 31.36311              # media muestral de la muestra combinada
[1] 34.02507
(n1*mean(x1)+n2*mean(x2))/(n1+n2)  # fórmula mostrada arriba
[1] 31.36311              # coincide con la media de la muestra combinada

Las fórmulas propuestas dan una desviación estándar combinada incorrecta: Aquí hay una demostración de que ninguna de las fórmulas propuestas encuentra $S_c = 34.025$ la muestra combinada:

Según la primera fórmula $S_a = \sqrt{S_1^2 + S_2^2} = 46.165 \ne 34.025.$ Una razón por la que esta fórmula es incorrecta es que no tiene en cuenta los diferentes tamaños de muestra $n_1$ y $n_2.$

Según la segunda fórmula tenemos $S_b = \sqrt{(n_1-1)S_1^2 + (n_2 -1)S_2^2} = 535.82 \ne 34.025.

Para ser justos, la fórmula $S_b^\prime= \sqrt{\frac{(n_1-1)S_1^2 + (n_2 -1)S_2^2}{n_1 + n_2 - 2}} = 34.093 \ne 34.029$ es más razonable. Esta es la fórmula para la 'desviación estándar combinada' en una prueba t de 2 muestras combinadas. Si tenemos dos muestras de poblaciones con medias diferentes, esta es una estimación razonable de la (desada) desviación estándar poblacional común $\sigma$ de las dos muestras. Sin embargo, no es una fórmula correcta para la desviación estándar $S_c$ de la muestra combinada.

sd.a = sqrt(sd(x1)^2 + sd(x2)^2);  sd.a
[1] 46.16528
sd.b = sqrt((n1-1)*sd(x1)^2 + (n2-1)*sd(x2)^2);  sd.b
[1] 535.8193
sd.b1 = sqrt(((n1-1)*sd(x1)^2 + (n2-1)*sd(x2)^2)/(n1+n2-2))
sd.b1
[1] 34.09336

Método para la desviación estándar combinada correcta: Es posible encontrar $S_c$ a partir de $n_1, n_2, \bar X_1, \bar X_2, S_1,$ y $S_2.$ Daré una indicación de cómo se puede hacer esto. Por ahora, veamos las varianzas muestrales para evitar las raíces cuadradas.

$$S_c^2 = \frac{\sum_{[c]}(X_i - \bar X_c)^2}{n_c - 1} = \frac{\sum_{[c]} X_i^2 - n\bar X_c^2}{n_c - 1}$$

Tenemos todo lo que necesitamos en el lado derecho excepto por $\sum_{[c]} X_i^2 = \sum_{[1]} X_i^2 + \sum_{[2]} X_i^2.$ Los dos términos en esta suma se pueden obtener para $i = 1,2$ a partir de $n_i, \bar X_i$ y $S_c^2$ resolviendo para $\sum_{[i]} X_i^2$ en una fórmula analógica a la última ecuación mostrada. [En el código a continuación abreviamos esta suma como $Q_c = \sum_{[c]} X_i^2 = Q_1 + Q_2.$]

Aunque algo complicado, este proceso de obtener varianzas muestrales combinadas (y por lo tanto desviaciones estándar combinadas) se utiliza en muchos programas estadísticos, especialmente cuando actualizando información de archivo con una muestra posterior.

Verificación numérica del método correcto: El código a continuación verifica que esta fórmula da como resultado $S_c = 34.02507,$ que es el resultado que obtuvimos anteriormente, directamente de la muestra combinada.

q1 = (n1-1)*var(x1) + n1*mean(x1)^2; q1
[1] 408219.2 
q2 = (n2-1)*var(x2) + n2*mean(x2)^2; q1
[1] 123819.4
qc = q1 + q2
sc = sqrt( (qc - (n1+n2)*mean(x)^2)/(n1+n2-1) ); sc
[1] 34.02507

3voto

BB_ML Puntos 3432

Este enfoque funciona mejor, "La varianza agrupada exacta es la media de las varianzas más la varianza de las medias de los conjuntos de datos componentes."

d1 = np.array([32, 36, 27, 28, 30, 31])
d2 = np.array([32, 34, 30, 33, 29, 36, 24])
d3 = np.array([39, 40, 42])
n1,n2,n3 = len(d1),len(d2),len(d3)
dp = np.hstack([d1,d2,d3])
m1,m2,m3,mp = d1.mean(), d2.mean(), d3.mean(),dp.mean()
v1,v2,v3,vp = d1.var(), d2.var(), d3.var(),dp.var()
print (m1,m2,m3,mp)
print (v1,v2,v3,vp)
ap = (n1*m1 + n2*m2 + n3*m3) / (n1+n2+n3) 
mean_of_var = (n1*v1 + n2*v2 + n3*v3) / (n1+n2+n3) 
var_of_means = (n1*(m1-ap)**2 + n2*(m2-ap)**2 + n3*(m3-ap)**2) / (n1+n2+n3)
print (mean_of_var)
print (var_of_means)
print (mean_of_var + var_of_means)

30.666666666666668 31.142857142857142 40.333333333333336 32.6875
8.555555555555554 13.26530612244898 1.5555555555555554 22.83984375
9.303571428571427
13.536272321428578
22.839843750000007

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