Оцініть кількість населення, що відбирається, за кількістю повторних спостережень


13

Скажімо, у мене є 50 мільйонів унікальних речей, і я беру 10 мільйонів зразків (із заміною) ... Перший графік, який я додав, показує, скільки разів я відбираю ту саму «річ», що є порівняно рідкісним кількість населення більша, ніж мій зразок.

Однак якщо моє населення складає лише 10 мільйонів речей, і я беру 10 мільйонів проб, як показує другий графік, я частіше буду відбирати те саме, що повторювалося.

Моє запитання - з моєї таблиці частот спостережень (дані на гістограмах) можна отримати оцінку початкового розміру сукупності, коли це невідомо? І було б чудово, якби ви могли вказати вказівник на те, як робити це в Р.

alt текст


Дивіться про space.stackexchange.com/questions/41547/… про цікаву програму
kjetil b halvorsen

Відповіді:


10

Як Гарван?

Проблема полягає в тому, що ми не знаємо, скільки нульових підрахунків спостерігається. Ми повинні це оцінити. Класичною статистичною процедурою для таких ситуацій є алгоритм Expectation-Maximization.

Простий приклад:

Припустимо, ми черпаємо з невідомого населення (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 
  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
    
  2. Максимізація

    lambda_MLE <- (1/sum(table))*(sum(table*k))        
    lambda_MLE        
    [1] 0.697252        
    lambda <- lambda_MLE
    
  3. Друга ітерація

    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.


3
Виділіть свій код і натисніть кнопку, схожа на двійкові числа ...
Шейн

8

Це звучить як форма «маркування та повторного захоплення», також відома в екології (і в деяких інших сферах, таких як епідеміологія). Не моя область, а стаття Вікіпедії про маркування та відтворення здається розумною, хоча ваша ситуація не є тією, до якої застосовується пояснений там метод Лінкольна – Петерсена.

Я думаю, що shabbychef - це правильний шлях для вашої ситуації, але використання розподілу Пуассона для наближення двочленного, ймовірно, зробить дещо простішим і може бути дуже хорошим наближенням, якщо чисельність населення дуже велика, як у ваших прикладах. Я думаю, що отримання явного вираження для максимальної оцінки ймовірності чисельності населення тоді повинно бути досить простим (див., Наприклад, знову Вікіпедія ), хоча я зараз не маю часу опрацювати деталі.


5

Ви можете оцінити за допомогою біноміального розподілу. Якщо з об’єктів є малюнків із заміною, з ( невідомо ), ймовірність того, що об’єкт буде намальовано один раз в одному малюнку, є . Подумайте про це як про монету зараз. Імовірність точно головок (тобто дублікатів) з випробувань становить . Помножте це на щоб отримати очікувану кількість спостережуваних разів (ваш сюжет). Для великих може бути трохи волохатим відступити від даних, але для маленькихk k P = 1nkk mmnP=1kmmnn(nm)Pm(1P)nmnnkmви, ймовірно, можете зробити добре, якщо додаток дорівнює .(1P)1

редагувати : один із можливих способів виправити числові задачі - переглянути співвідношення підрахунків. Тобто, якщо - ймовірність малювання голів, то дорівнює . Потім подивіться на співвідношення підрахунків дублікатів у ваших даних, щоб отримати кілька оцінок , а потім візьміть медіану чи середнє значення.PmmPm/Pm+1(k1)m+1nmk

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.