Cálculo de potencia para prueba de razón de probabilidad

8

Tengo dos variables aleatorias de Poisson independientes, y , con y . Quiero probar versus la alternativa .X1X2X1Pois(λ1)X2Pois(λ2)H0:λ1=λ2H1:λ1λ2

Ya obtuve estimaciones de máxima verosimilitud bajo hipótesis nula y alternativa (modelo), y en base a las que calculé el estadístico de prueba de razón de verosimilitud (LRT) (códigos R que se dan a continuación).

Ahora estoy interesado en calcular la potencia de la prueba en función de:

  1. Alfa fijo (error tipo 1) = 0.05.
  2. Usando diferentes tamaños de muestra (n), digamos n = 5, 10, 20, 50, 100.
  3. Combinación diferente de y , que cambiará las estadísticas LRT (calculadas como se muestra a continuación).λ1λ2LRTstat

Aquí está mi código R:

X1 = rpois(λ1); X2 = rpois(λ2)
Xbar = (X1+X2)/2
LLRNum = dpois(X1, X1) * dpois(X2, X2)
LLRDenom = dpois(X1, Xbar) * dpois(X2, Xbar)
LRTstat = 2*log(LLRNum/LLRDenom)

A partir de aquí, ¿cómo podría proceder con el cálculo de potencia (preferiblemente en R)?

Adán
fuente

Respuestas:

9

Puedes hacer esto usando simulación.

Escriba una función que haga su prueba y acepte las lambdas y los tamaños de muestra como argumentos (tiene un buen comienzo arriba).

Ahora, para un conjunto determinado de lambdas y tamaños de muestra, ejecute la función varias veces (la función de replicación en R es excelente para eso). Entonces el poder es solo la proporción de veces que rechaza la hipótesis nula, puede usar la función media para calcular la proporción y la prueba de prop. Para dar un intervalo de confianza en el poder.

Aquí hay un código de ejemplo:

tmpfunc1 <- function(l1, l2=l1, n1=10, n2=n1) {
    x1 <- rpois(n1, l1)
    x2 <- rpois(n2, l2)
    m1 <- mean(x1)
    m2 <- mean(x2)
    m <- mean( c(x1,x2) )

    ll <- sum( dpois(x1, m1, log=TRUE) ) + sum( dpois(x2, m2, log=TRUE) ) - 
            sum( dpois(x1, m, log=TRUE) ) - sum( dpois(x2, m, log=TRUE) )
    pchisq(2*ll, 1, lower=FALSE)
}

# verify under null n=10

out1 <- replicate(10000, tmpfunc1(3))
mean(out1 <= 0.05)
hist(out1)
prop.test( sum(out1<=0.05), 10000 )$conf.int

# power for l1=3, l2=3.5, n1=n2=10
out2 <- replicate(10000, tmpfunc1(3,3.5))
mean(out2 <= 0.05)
hist(out2)

# power for l1=3, l2=3.5, n1=n2=50
out3 <- replicate(10000, tmpfunc1(3,3.5,n1=50))
mean(out3 <= 0.05)
hist(out3)

Mis resultados (su diferencia con una semilla diferente, pero deberían ser similares) mostraron una tasa de error tipo I (alfa) de 0.0496 (IC 95% 0.0455-0.0541) que está cerca de 0.05, se puede obtener más precisión al aumentar el valor de 10000 en el comando replicar. Los poderes que calculé fueron: 9.86% y 28.6%. Los histogramas no son estrictamente necesarios, pero me gusta ver los patrones.

Greg Snow
fuente
He creado una función (LRT.POIS) con parámetros, nSim, Lambda1, Lambda2, pero de aquí en adelante estoy un poco perdido.
Adam
2
Agregué un código de ejemplo para mostrar el proceso básico.
Greg Snow