Olabilirlik fonksiyonu ve olasılık
Ters doğum günü problemi hakkındaki bir soruya cevap olarak, Cody Maughan tarafından bir olasılık işlevi için bir çözüm verilmiştir.
Servet kurabiye türlerinin sayısı için olabilirlik fonksiyonu biz çizerken farklı niyet kurabiyesi (her fal kurabiyesi tipi beraberlik görünme olasılığı eşittir olduğu) olarak ifade edilebilir çizer: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
Sağ taraftaki olasılığın türetilmesi için doluluk sorununa bakın. Bu daha önce bu web sitesinde Ben tarafından açıklanmıştı . İfade Sylvain'in cevabındaki ifadeye benzer.
Maksimum olabilirlik tahmini
Biz hesaplayabilir ilk düzen ve olabilirlik fonksiyonunun maksimum ikinci dereceden türev
m1≈(n2)n−k
m2≈(n2)+(n2)2−4(n−k)(n3)−−−−−−−−−−−−−−−√2(n−k)
Olabilirlik aralığı
(not, bu bir güven aralığı ile aynı değildir bkz: Bir güven aralığı oluşturmanın temel mantığı )
Bu benim için açık bir sorun olmaya devam ediyor. Henüz nasıl başa çıkacağımdan emin değilim (elbette bir tüm değerleri hesaplayabilir ve buna dayalı sınırları seçebilir, ancak daha fazla olurdu) açık bir kesin formül veya tahmin olması güzel). Bunu, değerlendirmeye büyük ölçüde yardımcı olacak başka bir dağıtımla ilişkilendiremiyorum. Ama bu olasılık aralığı yaklaşımından hoş (basit) bir ifadenin mümkün olabileceğini hissediyorum.m−nm!(m−k)!
Güven aralığı
Güven aralığı için normal bir yaklaşım kullanabiliriz. In Ben'in cevap aşağıdaki ortalama ve varyans verilmiştir:
E[K]=m(1−(1−1m)n)
V[K]=m((m−1)(1−2m)n+(1−1m)n−m(1−1m)2n)
Belirli bir örnek ve gözlemlenen benzersiz çerezler için % 95 sınırları şöyle görünür:n=200kE[K]±1.96V[K]−−−−√
Yukarıdaki görüntüde aralık için eğriler çizgileri popülasyon büyüklüğü ve örneklem büyüklüğü bir fonksiyonu olarak ifade ederek çizilmiştir (böylece x ekseni bu eğrilerin çizilmesinde bağımlı değişkendir).mn
Zorluk, bunu tersine çevirmek ve belirli bir gözlenen değeri için aralık değerlerini elde etmektir . Hesaplamalı olarak yapılabilir, ancak muhtemelen daha doğrudan bir işlev olabilir.k
Resimde, tüm olasılıklara dayalı kümülatif dağılımın doğrudan bir hesaplamasına dayanan Clopper Pearson güven aralıklarını da ekledim (bunu, R ikinci türdeki Stirling sayısının logaritmasının asimptotik bir yaklaşımı olan CryptRndTest paketinden işlev ). Sınırların makul bir şekilde örtüştüğünü görebilirsiniz, bu nedenle normal yaklaşım bu durumda iyi performans gösterir.P(k|m,n)Strlng2
# 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))