Estime el tamaño de una población que se muestrea por el número de observaciones repetidas


13

Digamos que tengo una población de 50 millones de cosas únicas, y tomo 10 millones de muestras (con reemplazo) ... El primer gráfico que adjunto muestra cuántas veces pruebo la misma "cosa", lo cual es relativamente raro. La población es mayor que mi muestra.

Sin embargo, si mi población es de solo 10 millones de cosas, y tomo 10 millones de muestras, como muestra el segundo gráfico, con mayor frecuencia tomaré muestras de la misma cosa repetidas veces.

Mi pregunta es: de mi tabla de frecuencia de observaciones (los datos en los gráficos de barras) ¿es posible obtener una estimación del tamaño original de la población cuando se desconoce? Y sería genial si pudieras proporcionar un indicador sobre cómo hacer esto en R.

texto alternativo

Respuestas:


10

¿Cómo está el Garvan?

El problema es que no sabemos cuántos conteos cero se observan. Tenemos que estimar esto. Un procedimiento estadístico clásico para situaciones como esta es el algoritmo Expectation-Maximization.

Un simple ejemplo:

Supongamos que extraemos de una población desconocida (de 1,000,000) con una constante de Poisson de 0.2.

counts <- rpois(1000000, 0.2)
table(counts)

     0      1      2      3      4      5
818501 164042  16281   1111     62      3

Pero no observamos los recuentos cero. En cambio, observamos esto:

table <- c("0"=0, table(counts)[2:6])

table

     0      1      2      3      4      5
     0 164042  16281   1111     62      3

Posibles frecuencias observadas

k <- c("0"=0, "1"=1, "2"=2, "3"=3, "4"=4, "5"=5)

Inicialice la media de la distribución de Poisson: solo adivine (sabemos que es 0.2 aquí).

lambda <- 1 
  1. Expectativa - Distribución de Poisson

    P_k <- lambda^k*exp(-lambda)/factorial(k)
    P_k
                  0           1           2           3           4           5
    0.367879441 0.367879441 0.183939721 0.061313240 0.015328310 0.003065662  
    n0 <- sum(table[2:6])/(1 - P_k[1]) - sum(table[2:6])
    
    
    n0
           0
    105628.2     
    table[1] <-  105628.2
  2. Maximización

    lambda_MLE <- (1/sum(table))*(sum(table*k))        
    lambda_MLE        
    [1] 0.697252        
    lambda <- lambda_MLE
  3. Segunda iteración

    P_k <- lambda^k*exp(-lambda)/factorial(k)        
    n0 <- sum(table[2:6])/(1 - P_k[1]) - sum(table[2:6])       
    table[1] <-  n0 
    lambda <- (1/sum(table))*(sum(table*k))
    
    
    
     population lambda_MLE
    
    [1,] 361517.1 0.5537774

Ahora itere hasta la convergencia:

for (i in 1:200) {  
P_k <- lambda^k*exp(-lambda)/factorial(k)  
n0 <- sum(table[2:6])/(1 - P_k[1]) - sum(table[2:6])
table[1] <-  n0
lambda <- (1/sum(table))*(sum(table*k))
}
cbind( population = sum(table), lambda_MLE)
     population lambda_MLE
[1,]    1003774  0.1994473

Nuestra estimación de población es 1003774 y nuestra tasa de Poisson se estima en 0.1994473; esta es la proporción estimada de la población muestreada. El principal problema que tendrá en los problemas biológicos típicos con los que se enfrenta es la suposición de que la tasa de Poisson es constante.

Perdón por la publicación de largo aliento: esta wiki no es realmente adecuada para el código R.


3
Resalte su código y haga clic en el botón que parece números binarios ...
Shane

8

Esto suena como una forma de 'marca y recaptura', también conocida como 'captura-recaptura', una técnica bien conocida en ecología (y algunos otros campos como la epidemiología). No es mi área, pero el artículo de Wikipedia sobre marca y recaptura parece razonable, aunque su situación no es aquella a la que se aplica el método Lincoln-Petersen explicado allí.

Creo que shabbychef es el camino correcto para su situación, pero usar la distribución de Poisson para aproximar el binomio probablemente haría las cosas un poco más simples y debería ser una muy buena aproximación si el tamaño de la población es muy grande, como en sus ejemplos. Creo que obtener una expresión explícita para la estimación de probabilidad máxima del tamaño de la población debería ser bastante sencillo (ver, por ejemplo, Wikipedia de nuevo ), aunque no tengo tiempo para resolver los detalles en este momento.


5

nkkP=1kmmn(nm)Pm(1P)nmnnkm(1P)1

PmmPm/Pm+1(k1)m+1nmk

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.