4 votos

Varianza poblacional finita para una población cambiante

¿Cómo afecta la adición de una unidad a la varianza poblacional de una población finita si todo lo demás permanece inalterado? ¿Cuáles son las condiciones para que la nueva unidad no cambie la varianza (la aumente o la disminuya)?

He podido encontrar el siguiente documento relativo a las varianzas muestrales para poblaciones finitas cambiantes: http://www.amstat.org/sections/srms/Proceedings/papers/1987_087.pdf . Pero estoy preguntando específicamente sobre las varianzas de población. Se agradece cualquier ayuda.

2voto

leonho Puntos 2787

No pude encontrar los cálculos de ejemplo que corresponden al problema específico aquí (como sugiere Glen_b), pero pude confirmar la siguiente respuesta con cálculos numéricos en R al final de esta respuesta.

Sea $N$ es el número inicial de unidades de la población y $N + 1$ sea el número de unidades de la población después del cambio. Denotemos el conjunto inicial de observaciones $X = \{x_1, \ldots, x_N\}$ (es decir, una observación correspondiente a cada unidad de población). Denotemos el conjunto de observaciones después del cambio $Y = X \cup \{x_{N+1}\}$ .

La media de $X$ es

$\mu_X = \frac{\sum_{i=1}^N{x_i}}{N}$ .

La media de Y es

$\mu_Y = \frac{\sum_{i=1}^{N+1}{x_i}}{N+1} = \mu_X \frac{N}{N+1} + \frac{x_{N+1}}{N+1}$

Defina $x_{N+1}$ como la media original, $\mu_X$ y algunos $\varepsilon$ . Entonces, la media de $Y$ es

$\mu_Y = \mu_X \frac{N}{N+1} + \frac{\mu_X + \varepsilon}{N+1} = \mu_X + \frac{\varepsilon}{N+1}$

La varianza de $Y$ es

$\sigma^2_Y = \frac{\sum_{i=1}^{N+1} \left(x_i - \mu_Y \right)^2}{N+1} = \frac{\sum_{i=1}^{N+1} \left(x_i - \mu_X - \frac{\varepsilon}{N + 1} \right)^2}{N+1}$

$= \frac{\sum_{i=1}^{N} x_i^2 + \mu_X^2 + \frac{\varepsilon^2}{\left(N+1\right)^2} - 2x_i\mu_X - 2x_i\frac{\varepsilon}{N+1} + 2\mu_X\frac{\varepsilon}{N+1}}{N + 1}$

$\frac{\left(\mu_X + \varepsilon - \mu_X - \frac{\varepsilon}{N + 1}\right)}{N + 1} $

$ = \frac{N}{N+1}\sigma^2_X + \frac{N\varepsilon^2}{\left(N+1\right)^3} - \frac{2N\mu_X\varepsilon}{\left(N+1\right)^2} + \frac{2N\mu_X\varepsilon}{\left(N+1\right)^2} + \frac{N^2\varepsilon^2}{\left(N+1\right)^3}$

$ = \frac{N}{N+1} \sigma^2_X + \frac{N}{\left(N+1\right)^2}\varepsilon^2$

En $x_{N+1}$ es igual a $\mu_X$ la varianza de $Y$ es

$\frac{N}{N+1}\sigma^2_X < \sigma^2_X $

Así, cuando $\varepsilon$ es suficientemente pequeño $\sigma^2_Y$ es inferior a $\sigma^2_X$ . Para determinar el tamaño $\varepsilon$ debe ser tal que el varianza de $Y$ es mayor que la varianza de $X$ fijé las dos varianzas iguales.

$ \frac{N}{N+1} \sigma^2_X + \frac{N}{\left(N+1\right)^2}\varepsilon^2 = \sigma^2_X$

$ \frac{N}{\left(N+1\right)^2}\varepsilon^2 = \frac{1}{N+1} \sigma^2_X$

$ \varepsilon^2 = \frac{N+1}{N} \sigma^2_X $

$ \varepsilon = \pm \sigma_X \sqrt{\frac{N+1}{N}}$

Por lo tanto, añadir una unidad cuya observación esté dentro de $\sqrt{\frac{N+1}{N}}$ desviaciones típicas de la media antigua dará lugar a una varianza menor.


El siguiente script R verifica la conclusión anterior:

N <- 10
X <- runif(N)
width <- sqrt((N+1)/N)
# on the boundary
var(c(X, mean(X) + width * sqrt(var(X)))) - var(X) == 0
# outside the boundary
var(c(X, mean(X) + width * sqrt(var(X)) + 1)) - var(X) > 0
# inside the boundary
var(c(X, mean(X))) - var(X) < 0

1voto

Jeff Bauer Puntos 236

Tengo la sensación de que puede estar confundiendo una población finita con una muestra de la misma. El hecho de que una población sea finita no la hace "equivalente" a una muestra (que siempre es finita, por supuesto).

Cuando examinamos poblaciones compuestas por variables aleatorias "idéntica e independientemente distribuidas", tenemos la costumbre de hablar de el media o varianza de la población: en sentido estricto es un lenguaje incorrecto -lo que queremos decir es la media/varianza del común marginal distribución que sigue cada miembro de la población.

Si este es su caso, entonces, la expresión $\frac{\sum_{i=1}^N{x_i}}{N}$ representa el media muestral de una muestra específica de esta población finita, es decir, de un conjunto específico de realizaciones de las variables aleatorias que componen esta población finita. No es la media (valor esperado) de la población, es decir, no es el valor común esperado de las variables i.i.d. que componen la población.

Y todos sus cálculos son coherentes con el examen de la media y la varianza muestrales, no de sus homólogos poblacionales.

Visto así, sus cálculos son correctos e intuitivos: si la observación adicional es exactamente igual al muestra media de las observaciones anteriores incluidas en $X$ entonces la dispersión disminuye y el muestra variación de $Y$ será menor.

Supongo que es evidente que añadir una variable aleatoria i.i.d. a una población i.i.d. no cambia "la" media o varianza de la población (es decir, los momentos de la distribución marginal común).

0voto

Aaron Puntos 36

Supongamos que utilizamos la expresión de la varianza de la población que incorpora la corrección de Bessel:

$$S_N^2 = \frac{1}{N-1} \sum_{i=1}^N (X_i - \bar{X}_N)^2.$$

Utilizando una descomposición simple de la varianza se obtiene O'Neill (2014) (Resultado 1, p. 283) tienes:

$$S_{N+1}^2 = \frac{N-1}{N} \cdot S_N^2 + \frac{1}{N+1} \cdot (\bar{X}_N - X_{N+1})^2.$$

De este modo se obtiene una fórmula recursiva sencilla que permite actualizar la varianza de la población a medida que se añade un elemento adicional $X_{N+1}$ . Es sencillo crear una función para actualizar la varianza con un único valor nuevo. La codificaremos en R como la función update.var que requiere la especificación de la media, la varianza y el tamaño de la muestra existente, así como el nuevo valor que se añadirá a la muestra.

#Create function to update variance with one new value
update.var <- function(n, mean, var, value) {

  #Check input values
  if (!is.vector(n))          { stop('Error: n should be a single positive integer') }
  if (length(n) != 1)         { stop('Error: n should be a single positive integer') }
  if (!is.numeric(n))         { stop('Error: n should be a positive integer') }
  if (as.integer(n) != n)     { stop('Error: n should be a positive integer') }
  if (n < 1)                  { stop('Error: n should be a positive integer') }
  if (!is.vector(mean))       { stop('Error: mean should be a numeric value') }
  if (length(mean) != 1)      { stop('Error: mean should be a numeric value') }
  if (!is.numeric(mean))      { stop('Error: mean should be a numeric value') }
  if (!is.vector(var))        { stop('Error: var should be a numeric value') }
  if (length(var) != 1)       { stop('Error: var should be a numeric value') }
  if (!is.numeric(var))       { stop('Error: var should be a non-negative value') }
  if (var < 0)                { stop('Error: var should be a non-negative value') }
  if ((n == 1)&&(var != Inf)) { stop('Error: If n = 1 then var must be Inf') }
  if (!is.vector(value))      { stop('Error: value should be a numeric value') }
  if (length(value) != 1)     { stop('Error: value should be a numeric value') }
  if (!is.numeric(value))     { stop('Error: value should be a numeric value') }

  newvar <- ifelse(n == 1, ((mean - value)^2)/(n+1),
                           ((n-1)/n)*var + ((mean - value)^2)/(n+1));
  newvar; }

Podemos comprobar que este método funciona comparando el cálculo iterativo y el no iterativo. El código siguiente muestra que los valores de ambos métodos son los mismos (dentro de una tolerancia muy pequeña que se produce debido al error de redondeo en los dos métodos diferentes).

#Set initial seed and max pop size
set.seed(1);
M  <- 20;

#Generate random populations and compute the updating mean and variance values
VALUES <- rnorm(M);
MEANS  <- rep(0, M);
for (n in 1:M) { MEANS[n] <- mean(VALUES[1:n]); }
VARS1  <- rep(Inf, M);
for (n in 2:M) { VARS1[n] <- var(VALUES[1:n]); }

#Generate the variance values iteratively
VARS2  <- rep(Inf, M);
for (n in 2:M) { VARS2[n] <- update.var(n-1, MEANS[n-1], VARS2[n-1], value = VALUES[n]); }

#Check that results are the same (within rounding tolerance)
max(abs(VARS1[2:M]-VARS2[2:M]));
[1] 2.220446e-16

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