Hay un servicio web donde puedo solicitar información sobre un artículo aleatorio. Por cada solicitud, cada artículo tiene la misma probabilidad de ser devuelto.
Puedo seguir solicitando artículos y registrar el número de duplicados y únicos. ¿Cómo puedo usar estos datos para estimar el número total de artículos?
Respuestas:
Esto es esencialmente una variante del problema del colector de cupones.
Si hay ítems en total y ha tomado un tamaño de muestra s con reemplazo, entonces la probabilidad de haber identificado u ítems únicos es P r ( U = u | n , s ) = S 2 ( s , u ) n !n s u
dondeS2(s,u)da
Ahora todo lo que necesita es una distribución previa para , aplicar el teorema de Bayes, y obtener una distribución posterior de N .Pr(N=n) N
fuente
Ya he dado una sugerencia basada en los números de Stirling del segundo tipo y los métodos bayesianos.
Para aquellos que consideran que los números de Stirling son demasiado grandes o que los métodos bayesianos son demasiado difíciles, un método más difícil podría ser utilizar
y volver a calcular utilizando métodos numéricos.
fuente
Se puede utilizar el método de captura-recaptura , también implementado como el paquete Rcapture R .
Aquí hay un ejemplo, codificado en R. Supongamos que el servicio web tiene N = 1000 elementos. Haremos n = 300 solicitudes. Genere una muestra aleatoria donde, numerando los elementos del 1 al k, donde k es cuántos elementos diferentes vimos.
El resultado de la simulación es
thus among the 300 requests there were 4 items seen 3 times, 27 items seen twice, and 234 items seen only once.
Now estimate N from this sample:
The result:
Thus only the Mh Chao model converged, it estimatedN^ =1262.7.
EDIT: To check the reliability of the above method I ran the above code on 10000 generated samples. The Mh Chao model converged every time. Here is the summary:
fuente