우도 함수와 확률
역 생일 문제 에 대한 질문에 대한 가능성 함수에 대한 해결책이 Cody Maughan에 의해 제공되었습니다.
mkn
L(m|k,n)=m−nm!(m−k)!∝P(k|m,n)===m−nm!(m−k)!⋅S(n,k)Stirling number of the 2nd kindm−nm!(m−k)!⋅1k!∑ki=0(−1)i(ki)(k−i)n(mk)∑ki=0(−1)i(ki)(k−im)n
오른쪽의 확률을 도출하려면 점유 문제를 참조하십시오. 이것은 Ben에 의해이 웹 사이트에서 이전에 설명 되었습니다 . 이 표현은 Sylvain의 답변과 비슷합니다.
최대 가능성 추정
우도 함수 최대 값의 1 차 및 2 차 근사값을 계산할 수 있습니다 .
m1≈(n2)n−k
m2≈(n2)+(n2)2−4(n−k)(n3)−−−−−−−−−−−−−−−√2(n−k)
가능성 간격
(이것은 신뢰 구간과 동일 하지 않습니다 : 신뢰 구간 을 구성하는 기본 논리 참조 )
이것은 나에게 열린 문제입니다. 아직 식을 다루는 방법을 잘 모르겠습니다미디엄− nm !( m - k ) !(물론 모든 값을 계산하고이를 기반으로 경계를 선택할 수 있지만, 명시적인 정확한 공식이나 추정치를 갖는 것이 더 좋습니다). 나는 그것을 평가하는 데 크게 도움이되는 다른 배포판과 관련이없는 것 같습니다. 그러나이 가능성 간격 접근법에서 멋진 (간단한) 표현이 가능할 것 같습니다.
신뢰 구간
신뢰 구간의 경우 정규 근사를 사용할 수 있습니다. 에서 벤의 대답은 다음과 같은 평균과 분산이 주어집니다 :
전자 [K] = m ( 1 − ( 1 − 1미디엄)엔)
V [K] = m ( ( m - 1 ) ( 1 - 2미디엄)엔+ ( 1 − 1미디엄)엔− m ( 1 − 1미디엄)2 N)
주어진 샘플에 대해 말하십시오 n = 200 독특한 쿠키를 관찰했습니다 케이 95 % 경계 전자 [K] ± 1.96 V [ K]−−−−√ 다음과 같이 보입니다.
위 이미지에서 모집단 크기의 함수로 선을 표현하여 구간에 대한 곡선을 그렸습니다. 미디엄 샘플 크기 엔 (그래서 x- 축은 이러한 곡선을 그릴 때 종속 변수입니다).
어려운 점은 이것을 반전시키고 주어진 관측 값에 대한 구간 값을 얻는 것입니다 케이. 계산적으로 수행 할 수 있지만 더 직접적인 기능이있을 수 있습니다.
이미지에서 모든 확률을 기반으로 누적 분포를 직접 계산하여 Clopper Pearson 신뢰 구간을 추가했습니다. 피( k|m , n )(R 에서이 작업을 수행 한 곳 Strlng2
에서 CryptRndTest 패키지 의 함수 를 사용해야합니다 .CryptRndTest 패키지는 두 번째 종류의 스털링 숫자의 로그에 대한 점근 근사입니다. 경계가 합리적으로 일치한다는 것을 알 수 있으므로이 경우 정규 근사치가 잘 수행됩니다.
# function to compute Probability
library("CryptRndTest")
P5 <- function(m,n,k) {
exp(-n*log(m)+lfactorial(m)-lfactorial(m-k)+Strlng2(n,k))
}
P5 <- Vectorize(P5)
# function for expected value
m4 <- function(m,n) {
m*(1-(1-1/m)^n)
}
# function for variance
v4 <- function(m,n) {
m*((m-1)*(1-2/m)^n+(1-1/m)^n-m*(1-1/m)^(2*n))
}
# compute 95% boundaries based on Pearson Clopper intervals
# first a distribution is computed
# then the 2.5% and 97.5% boundaries of the cumulative values are located
simDist <- function(m,n,p=0.05) {
k <- 1:min(n,m)
dist <- P5(m,n,k)
dist[is.na(dist)] <- 0
dist[dist == Inf] <- 0
c(max(which(cumsum(dist)<p/2))+1,
min(which(cumsum(dist)>1-p/2))-1)
}
# some values for the example
n <- 200
m <- 1:5000
k <- 1:n
# compute the Pearon Clopper intervals
res <- sapply(m, FUN = function(x) {simDist(x,n)})
# plot the maximum likelihood estimate
plot(m4(m,n),m,
log="", ylab="estimated population size m", xlab = "observed uniques k",
xlim =c(1,200),ylim =c(1,5000),
pch=21,col=1,bg=1,cex=0.7, type = "l", yaxt = "n")
axis(2, at = c(0,2500,5000))
# add lines for confidence intervals based on normal approximation
lines(m4(m,n)+1.96*sqrt(v4(m,n)),m, lty=2)
lines(m4(m,n)-1.96*sqrt(v4(m,n)),m, lty=2)
# add lines for conficence intervals based on Clopper Pearson
lines(res[1,],m,col=3,lty=2)
lines(res[2,],m,col=3,lty=2)
# add legend
legend(0,5100,
c("MLE","95% interval\n(Normal Approximation)\n","95% interval\n(Clopper-Pearson)\n")
, lty=c(1,2,2), col=c(1,1,3),cex=0.7,
box.col = rgb(0,0,0,0))