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.±
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.