Garvan은 어때?
문제는 우리는 얼마나 많은 0 카운트가 관찰되는지 모른다는 것입니다. 우리는 이것을 추정해야합니다. 이와 같은 상황에 대한 일반적인 통계 절차는 Expectation-Maximisation 알고리즘입니다.
간단한 예 :
포아송 상수가 0.2 인 알 수없는 인구 (100,000 명)에서 추출한다고 가정합니다.
counts <- rpois(1000000, 0.2)
table(counts)
0 1 2 3 4 5
818501 164042 16281 1111 62 3
그러나 우리는 0 카운트를 관찰하지 않습니다. 대신 우리는 이것을 관찰합니다.
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 코드에 적합하지 않습니다.