Tamaño de muestra necesario para estimar la probabilidad de "éxito" en el ensayo de Bernoulli


13

Supongamos que un juego ofrece un evento que, una vez completado, da una recompensa o no da nada. Se desconoce el mecanismo exacto para determinar si se otorga la recompensa, pero supongo que se usa un generador de números aleatorios, y si el resultado es mayor que algún valor codificado, obtendrá la recompensa.

Si básicamente quiero realizar ingeniería inversa, ¿qué valor utilizaron los programadores para determinar con qué frecuencia se otorga la recompensa (estimado 15-30%), ¿cómo calculo la cantidad de muestras que necesito?

Comencé con la sección "Estimador de probabilidad real" aquí: Verificando_si_un_coin_es_juego , pero no estoy seguro de estar yendo por el camino correcto. Estaba obteniendo resultados de ~ 1000 muestras necesarias para un error máximo del 3% con una confianza del 95%.

En definitiva, esto es lo que estoy tratando de resolver:

  • El evento n. ° 1 otorga la recompensa 1.0R, X% del tiempo
  • Evento # 2 da recompensa 1.4R, Y% del tiempo

Me gustaría estimar X e Y con la precisión suficiente para determinar qué evento es más eficiente. Los tamaños de muestra grandes son un problema ya que solo puedo obtener 1 muestra cada 20 minutos, como máximo.


66
" Estaba obteniendo resultados de ~ 1000 muestras necesarias para un error máximo del 3% al 95% de confianza " . --- más o menos; Es por eso que las encuestas a menudo muestrean a unas 1000 personas ... y luego informan un margen de error del orden del 3%. Se aplica bastante bien cuando el porcentaje no está cerca de 0 o 1 (es demasiado amplio en esos casos)
Glen_b -Reinstate Monica

1
¿Qué quieres decir con "que incluso es más eficiente"? ¿Quiere decir "qué evento tiene la mayor recompensa esperada"?
Glen_b -Reinstate Monica

1
Sí, estoy tratando de averiguar cuál tiene la mayor recompensa esperada con el tiempo. No puedo hacer ambos eventos, tengo que elegir uno u otro. Si bien el Evento 1 da menos recompensa, es posible que otorgue la recompensa con mayor frecuencia.
Brad

2
Puede utilizar muestras secuenciales , en las que el tamaño de la muestra no se fija de antemano. La ventaja de este enfoque es que garantiza una confianza sin importar cuál sea la probabilidad (desconocida). Ver por ejemplo aquí ; especialmente el último artículo
Luis Mendo el

Respuestas:


5

Suponiendo que sus ensayos individuales son independientes, observa una variante binomial donde decide sobre desea estimar . Ahora, el estimador de máxima verosimilitud de , la fracción de muestra tiene varianza que se logra para . Entonces, el error estándar es . Un intervalo de confianza aproximado aproximado de muestra grande tiene un ancho medio de alrededor de 2 errores estándar, por lo que para mantenerlo en un máximo de , por ejemplo, debe resolver que da

XBin(n,p)
nppp^=X/np(1p)n14np=121/4n=12n0.03
22n0.03
n1112 . Ahora puede resolver otros requisitos para medio ancho, de la misma manera. Si sabe (o está dispuesto a asumir) que está delimitada por 0.5, puede hacerlo con menos observaciones.p

2

Sé que es menos elegante, pero tuve que simularlo. No solo construí una simulación bastante simple, sino que es poco elegante y lenta de ejecutar. Sin embargo, es lo suficientemente bueno. Una ventaja es que, siempre y cuando algunos de los conceptos básicos sean correctos, me dirá cuándo se cae el enfoque elegante.

El tamaño de la muestra variará en función del valor codificado.

Entonces aquí está el código:

#main code
#want 95% CI to be no more than 3% from prevalence
#expect prevalence around 15% to 30%
#think sample size is ~1000

my_prev <- seq(from=0.15, to=0.30, by = 0.002)

samp_sizes <- seq(from=400, to=800, by = 1)
samp_sizes

N_loops <- 2000

store <- matrix(0,
                nrow = length(my_prev)*length(samp_sizes),
                ncol = 3)
count <- 1

#for each prevalence
for (i in 1:length(my_prev)){

     #for each sample size
     for(j in 1:length(samp_sizes)){

          temp <- 0

          for(k in 1:N_loops){

               #draw samples
               y <- rbinom(n = samp_sizes[j],
                           size = 1,
                           prob = my_prev[i])

               #compute prevalence, store
               temp[k] <- mean(y)

          }

          #compute 5% and 95% of temp
          width <-  diff(quantile(x = temp,probs = c(0.05,0.95)))

          #store samp_size, prevalence, and CI half-width
          store[count,1] <- my_prev[i]
          store[count,2] <- samp_sizes[j]
          store[count,3] <- width[[1]]

          count <- count+1
     }

}


store2 <- numeric(length(my_prev))

#go through store
for(i in 1:length(my_prev)){
     #for each prevalence
     #find first CI half-width below 3%
     #store samp_size

     idx_p <- which(store[,1]==my_prev[i],arr.ind = T)
     idx_p

     temp <- store[idx_p,]
     temp

     idx_2 <- which(temp[,3] <= 0.03*2, arr.ind = T)
     idx_2

     temp2 <- temp[idx_2,]
     temp2

     if (length(temp2[,3])>1){
     idx_3 <- which(temp2[,3]==max(temp2[,3]),arr.ind = T)
     store2[i] <- temp2[idx_3[1],2]
     } else {
          store2[i] <- temp2[2]
     }


}


#plot it
plot(x=my_prev,y=store2,
     xlab = "prevalence", ylab = "sample size")
lines(smooth.spline(x=my_prev,y=store2),col="Red")
grid()

Y aquí está la trama de tamaño de la muestra frente a la prevalencia que la incertidumbre en tales IC del 95% para la prevalencia es lo más cerca posible a 3% sin tener que pasar por encima.±

tamaño de muestra vs prevalencia

Lejos del 50%, parecen requerirse "observaciones algo menos", como sugirió kjetil.

Creo que puede obtener una estimación decente de la prevalencia antes de 400 muestras y ajustar su estrategia de muestreo a medida que avanza. No creo que deba haber un trote en el medio, por lo que puede subir N_loops hasta 10e3, y subir "by" en "my_prev" a 0.001.


Si esto es lento, ¡es porque los pasos son demasiado pequeños!
kjetil b halvorsen

@kjetilbhalvorsen: fue lo suficientemente bueno. El "lento" fue un descargo de responsabilidad, y un "pasamanos" que puede ayudar al autor de la pregunta a sentirse más cómodo aplicando el método. Si no conoce el enfoque analítico, una simulación puede ayudarlo a aprender por su cuenta o ayudarlo a decidir si necesita pedir ayuda.
EngrStudent

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.