Как Гарван?
Проблема в том, что мы не знаем, сколько отсчетов наблюдается. Мы должны оценить это. Классической статистической процедурой для подобных ситуаций является алгоритм максимизации ожидания.
Простой пример:
Предположим, мы берем неизвестную популяцию (из 1000000) с постоянной Пуассона 0,2.
counts <- rpois(1000000, 0.2)
table(counts)
0 1 2 3 4 5
818501 164042 16281 1111 62 3
Но мы не наблюдаем нулевые счета. Вместо этого мы наблюдаем это:
table <- c("0"=0, table(counts)[2:6])
table
0 1 2 3 4 5
0 164042 16281 1111 62 3
Наблюдаются возможные частоты
k <- c("0"=0, "1"=1, "2"=2, "3"=3, "4"=4, "5"=5)
Инициализируйте среднее значение распределения Пуассона - просто догадайтесь (мы знаем, что здесь 0,2).
lambda <- 1
Ожидание - распределение Пуассона
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
максимизация
lambda_MLE <- (1/sum(table))*(sum(table*k))
lambda_MLE
[1] 0.697252
lambda <- lambda_MLE
Вторая итерация
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
Теперь итерации до сходимости:
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
Наша оценка численности населения составляет 1003774, а наш коэффициент пуассона оценивается в 0,1994473 - это приблизительная доля выборки населения. Основная проблема, с которой вы столкнетесь в типичных биологических проблемах, с которыми вы сталкиваетесь, заключается в предположении, что скорость Пуассона является постоянной
Извините за скучный пост - эта вики не очень подходит для кода R.