ガーバンはどうですか?
問題は、観測されたゼロカウントの数がわからないことです。これを見積もる必要があります。このような状況の古典的な統計手順は、期待値最大化アルゴリズムです。
簡単な例:
ポアソン定数が0.2の未知の母集団(1,000,000)から描画するとします。
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
2回目の反復
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と推定されます。これは、サンプリングされた人口の推定割合です。あなたが扱っている典型的な生物学的問題であなたが抱える主な問題は、ポアソン率が一定であるという仮定です。
長時間の投稿で申し訳ありません-このwikiはRコードにはあまり適していません。