गरवन कैसा है?
समस्या यह है कि हम यह नहीं जानते हैं कि कितने शून्य काउंट देखे जाते हैं। हमें इसका अनुमान लगाना होगा। इस तरह की स्थितियों के लिए एक क्लासिक सांख्यिकीय प्रक्रिया उम्मीद-अधिकतमकरण एल्गोरिथ्म है।
एक सरल उदाहरण:
मान लें कि हम एक अज्ञात आबादी (1,000,000 की) से 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
अब अभिसरण तक iterate:
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 अनुमानित है - यह नमूना जनसंख्या का अनुमानित अनुपात है। आपके द्वारा निपटने वाली विशिष्ट जैविक समस्याओं में मुख्य समस्या यह है कि यह अनुमान है कि पॉइसन दर एक स्थिर है।
लंबे समय से घुमावदार पोस्ट के लिए क्षमा करें - यह विकी वास्तव में आर कोड के लिए उपयुक्त नहीं है।