¿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
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
Maximización
lambda_MLE <- (1/sum(table))*(sum(table*k))
lambda_MLE
[1] 0.697252
lambda <- lambda_MLE
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.