8 votos

Simulación de Fisher ' prueba exacta de s está subestimando el poder

Resumen: Mi simulaciones no coinciden con mi poder de cálculo.

(Esta pregunta se ha convertido en bastante largo, así que usted no puede leer en la parte inferior. Creo que es un tamaño de la muestra problema).

Me estoy quedando algunas simulaciones para ayudar a diseñar un estudio, y estoy corriendo en algo que me confunde.

Hay dos grupos tratados y no tratados, y el resultado es que se caiga.

Tenemos un estimado de choque de la tasa de 0,1 en el grupo sin tratar, y creo que nos puede traer esto a 0.08. Un pequeño (y no viables) tamaño de la muestra es de 100 por grupo.

Así que me funcione la energía.prop.de prueba() para estimar el poder.

power.prop.test(p1=0.1, p2=0.08, n=100)

> power.prop.test(p1=0.1, p2=0.08, n=100)                                                        

     Two-sample comparison of proportions power calculation 

              n = 100
             p1 = 0.1
             p2 = 0.08
      sig.level = 0.05
          power = 0.07122973
    alternative = two.sided

 NOTE: n is number in *each* group 

Entonces me encontré con una simulación, porque quería explorar cómo a menudo nos había tomado la decisión equivocada en cuanto al mejor tratamiento.

library(Exact)

#Create a data frame called d, populate it with the numbers above.
set.seed(12345)
nTreated <- 100
nUntreated <- 100
probTreated <- 0.1
probUntreated <- 0.08

d <- data.frame(id = 1:10000)
d$nTreated <- nTreated
d$nUntreated <- nUntreated
d$probTreated <- probTreated 
d$probUntreated <- probUntreated


#Generate some random results using rbinom()
d$treatedCrashes <- apply(cbind(d$nTreated, d$probTreated), 1, 
                      function(x)  sum(rbinom(x[1], 1, x[2])))

d$untreatedCrashes <- apply(cbind(d$nUntreated, d$probUntreated), 1, 
                      function(x)  sum(rbinom(x[1], 1, 
                                              x[2])))


#Do fisher's exact test on each replication:
d$fisher <- apply(cbind(d$nTreated - d$treatedCrashes, 
                        d$treatedCrashes,
                        d$nUntreated - d$untreatedCrashes, 
                        d$untreatedCrashes), 1, 
                          function(x)  fisher.test(matrix(x, 
                                                        nrow=2))$p.value)
#test power
mean(d$fisher < 0.05)

Y me sale el 4,8% de la potencia, que es menor que la potencia.prop.función de prueba, dijo, Y es menor que 0.05, lo que parece una especie de mal.

>     mean(d$fisher < 0.05)
[1] 0.0478

Es esto acerca de que la muestra es pequeña aproximación? Es un estúpido error de codificación? (Creo que no lo es, pero muchas veces he estado equivocado acerca de que antes). Es algo que no he pensado?

En respuesta a la sugerencia de que es porque la prueba exacta de Fisher está condicionado en los márgenes, volví a ejecutar el modelo con la estrella de Barnard de la prueba (exactamente en la biblioteca). (Pero he reducido a 1000 replicaciones, como este tomó 40 minutos).

d$exact <- apply(cbind(d$nTreated - d$treatedCrashes, 
                         d$treatedCrashes,
                         d$nUntreated - d$untreatedCrashes, 
                         d$untreatedCrashes), 1, 
                       function(x)  exact.test(matrix(x, nrow=2), to.plot=F, cond.row=T)$p.value)
d$exact <- lapply(d$exact, function(x) x[1][[1]])

mean(d$exact < 0.05)      

> mean(d$exact < 0.05)                      
[1] 0.049                

Me tienen casi la misma potencia.

Sin embargo, también corrí una prueba exacta para poder usar el poder.exacto.función test (), también en la Exacta de la biblioteca, lo cual da una muy similar nivel de potencia:

> power.exact.test(p1=0.1, p2=0.08, n1=100, n2=100,simulation=T, nsim=1000, method="Boschloo")
$power
[1] 0.045

$alternative
[1] "two.sided"

$method
[1] "Boschloo"

Lo que me hace pensar que es un tamaño de la muestra problema.

7voto

alexs77 Puntos 36

La Prueba Exacta de Fisher es conservador (es decir, la tasa de falsos positivos para el valor nominal de 0,05 prueba es menor que 0.05, cuando la hipótesis nula es verdadera). Lo que usted está buscando aquí es casualidad. Decir que una prueba es "exacta", no significa que sea de la talla correcta, pero que la interpretación del valor p en muestras pequeñas es correcta.

He aquí una referencia de la universidad de notas de la conferencia en bioestadística

http://emersonstatistics.com/courses/formal/b517_2012/b517L13-2012-11-26.pdf

5voto

jasonmray Puntos 1303

De Fisher prueba condicional en ambas márgenes de la tabla; la simulación es condicional en un margen.

[Tienes razón, hay más:

(1) el primer cálculo con el poder.prop.la prueba utiliza la aproximación asintótica de la distribución Binomial a la Normal, de modo que no dan exactamente la misma respuesta como una prueba exacta.

(2) Cualquier prueba exacta será conservador porque sólo hay un número finito de posibles tablas de contingencia y usted no puede encontrar un subconjunto para formar el rechazo a la región con exactamente un 5% de probabilidad bajo la hipótesis nula, por lo que tendrá que conformarse con un poco menos (@AdamO la respuesta).

(3) Existen diferentes pruebas exactas formado por el condicionamiento en el gran total, el total de fila, la columna total, o ambos de fila y columna de totales. La elección de un acondicionamiento diferente medio de esquema (a) pedir a una pregunta de la prueba, y (b) el cambio en el número de posibles tablas de contingencia (por lo que las pruebas de que la condición de la mayoría tienden a ser más conservadores - por ejemplo, Fisher).

(4) también Hay diferentes pruebas estadísticas que se pueden utilizar, que no se da necesariamente en el mismo orden de posibles tablas bajo la hipótesis nula.

(5) Y cuando se está simulando, no hay simulación de error a tener en cuenta (@Maarten de la respuesta).]

2voto

RGA Puntos 113

No hay aleatoriedad en la simulación de Monte Carlo (como debe ser), por lo que incluso si la verdadera tasa de rechazo es exactamente .05 y no hay errores en el programa, usted todavía será probabilidades de encontrar las pequeñas desviaciones de ese número. Si se va a repetir la simulación de Monte Carlo con 10.000 replicaciones muchas veces, y la prueba funcionó exactamente como debería, entonces sería de esperar encontrar que (aproximadamente) el 95% de estas simulaciones resultaría en tasas de rechazo entre el 4,6% y 5.4%. Estos límites se basan en el 2.5$^{\mathrm{th}}$ y 97.5$^{\mathrm{th}}$ percentiles de una distribución binomial con n=10 000 y p=.05. Así que el hecho de que se encontró una tasa de rechazo de 4.8% en una simulación con 10.000 replicaciones no proporciona todo lo que una fuerte evidencia en contra de la prueba exacta de Fisher. Como AdamO señaló, tendrás en toda la probabilidad de encontrar la tasa de rechazo en menos del 5%, incluso si aumenta el número de repeticiones, pero la simulación actual no tiene suficientes repeticiones para encontrar de forma segura de ese fenómeno.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X