11 votos

Cálculo del tamaño de la muestra para la regresión logística univariante

¿Cómo se calcula el tamaño de la muestra necesaria para un estudio en el que a una cohorte de sujetos se les medirá una única variable continua en el momento de una intervención quirúrgica y dos años después se les clasificará como resultado funcional o resultado deteriorado?

Nos gustaría ver si esa medida podría haber predicho el mal resultado. En algún momento podríamos querer derivar un punto de corte en la variable continua por encima del cual intentaríamos intervenir para disminuir la probabilidad del resultado malo.

¿Alguna idea? Cualquier implementación de R.

7voto

palmsey Puntos 3799

Los cálculos del tamaño de la muestra para la regresión logística son complejos. No intentaré resumirlo aquí. Las soluciones razonablemente accesibles a este problema se encuentran en:

Hsieh FY. Tablas de tamaño de muestra para la regresión logística. Statistics in Medicine. 1989 Jul;8(7):795-802.

Hsieh FY, et al. Un método sencillo de cálculo del tamaño de la muestra para la regresión lineal y logística. Statistics in Medicine. 1998 Jul 30;17(14):1623-34.

En el último capítulo (sección 8.5, págs. 339-347) de la obra de Hosmer y Lemeshow se puede encontrar una discusión accesible de los problemas con cálculos de ejemplo Regresión logística aplicada .

7voto

icelava Puntos 548

Por lo general, me resulta más fácil y rápido realizar una simulación. Los artículos tardan mucho tiempo en leerse, entenderse y finalmente llegar a la conclusión de que no son aplicables en el caso especial que a uno le interesa.

Por lo tanto, yo simplemente elegiría un número de sujetos, simularía la covariable que le interesa (distribuida como usted cree que será), simularía resultados buenos/malos basándose en la forma funcional que usted plantea (¿efectos de umbral de la covariable? ¿no linealidad?) con el tamaño de efecto mínimo (clínicamente) significativo que le gustaría detectar, pasaría el resultado por su análisis y vería si el efecto se encuentra en su alfa. Vuelva a ejecutar esto 10.000 veces y observe si encontró el efecto en el 80% de las simulaciones (o cualquier otra potencia que necesite). Ajuste el número de sujetos y repita hasta que tenga una potencia con la que esté satisfecho.

Esto tiene la ventaja de ser muy general, por lo que no está limitado a una forma funcional específica o a un número o distribución específica de covariables. Puede incluir los abandonos, véase el comentario de chl más arriba, ya sea al azar o influidos por la covariable o el resultado. Básicamente codificas el análisis que vas a hacer en la muestra final de antemano, lo que a veces ayuda a centrar mi pensamiento en el diseño del estudio. Y se hace fácilmente en R (¡vectorizar!).

4voto

MHG Puntos 81

A raíz del post de Stephan Kolassa (no puedo añadirlo como comentario), tengo un código alternativo para una simulación. Éste utiliza la misma estructura básica, pero está un poco más desglosado, por lo que quizás sea un poco más fácil de leer. También se basa en el código de Kleinman y Horton para simular la regresión logística.

nn es el número de la muestra. La covariable debe tener una distribución normal continua y estar estandarizada con una media de 0 y una sd de 1. Utilizamos rnorm(nn) para generarla. Seleccionamos un odds ratio y lo almacenamos en odds.ratio. También elegimos un número para el intercepto. La elección de este número rige la proporción de la muestra que experimenta el "evento" (por ejemplo, 0,1, 0,4, 0,5). Tiene que jugar con este número hasta que consiga la proporción correcta. El siguiente código le da una proporción de 0,1 con un tamaño de muestra de 950 y una OR de 1,5:

nn <- 950
runs <- 10000
intercept <- log(9)
odds.ratio <- 1.5
beta <- log(odds.ratio)
proportion  <-  replicate(
              n = runs,
              expr = {
                  xtest <- rnorm(nn)
                  linpred <- intercept + (xtest * beta)
                  prob <- exp(linpred)/(1 + exp(linpred))
                  runis <- runif(length(xtest),0,1)
                  ytest <- ifelse(runis < prob,1,0)
                  prop <- length(which(ytest <= 0.5))/length(ytest)
                  }
            )
summary(proportion)

summary(proportion) confirma que la proporción es ~ 0,1

A continuación, utilizando las mismas variables, se calcula la potencia a lo largo de 10.000 carreras:

result <-  replicate(
              n = runs,
              expr = {
                  xtest <- rnorm(nn)
                  linpred <- intercept + (xtest * beta)
                  prob <- exp(linpred)/(1 + exp(linpred))
                  runis <- runif(length(xtest),0,1)
                  ytest <- ifelse(runis < prob,1,0)
                  summary(model <- glm(ytest ~ xtest,  family = "binomial"))$coefficients[2,4] < .05
                  }
            )
print(sum(result)/runs)

Creo que este código es correcto - lo he cotejado con los ejemplos dados en Hsieh, 1998 (tabla 2), y parece coincidir con los tres ejemplos dados allí. También lo he comprobado con el ejemplo de las páginas 342 y 343 de Hosmer y Lemeshow, en el que se encontró una potencia de 0,75 (en comparación con el 0,8 de Hosmer y Lemeshow). Así que puede ser que en algunas circunstancias este enfoque subestime la potencia. Sin embargo, cuando he ejecutado el mismo ejemplo en este calculadora en línea He comprobado que está de acuerdo conmigo y no con el resultado de Hosmer y Lemeshow.

Si alguien puede decirnos por qué es así, me interesaría saberlo.

3voto

Mike Green Puntos 457

una pregunta sencilla sobre el tamaño de la muestra es: ¿qué tamaño de muestra se necesita para obtener un intervalo de confianza del 95% no mayor que 2d para la media [desconocida] de la distribución de datos? otra variante es: ¿qué tamaño de muestra se necesita para tener una potencia de 0,9 en $\theta = 1$ al probar H $_0: \theta = 0$ . no parece especificar ningún criterio para elegir el tamaño de la muestra.

En realidad, parece que su estudio se llevará a cabo de forma secuencial. en ese caso, puede valer la pena hacer que eso sea una parte explícita del experimento. el muestreo secuencial puede ser a menudo más eficiente que un experimento de tamaño de muestra fijo [se necesitan menos observaciones, por término medio].

farrel: añado esto en respuesta a tu comentario.

Para llegar a un tamaño de muestra, se suele especificar algún tipo de criterio de precisión para una estimación [como la longitud de un IC] O la potencia en una alternativa específica de una prueba que se va a realizar con los datos. parece que ha mencionado ambos criterios. no hay nada malo en ello, en principio: sólo tiene que hacer dos cálculos del tamaño de la muestra -uno para lograr la precisión de la estimación deseada- y otro para obtener la potencia deseada en la alternativa indicada. entonces se requiere el mayor de los dos tamaños de muestra. Por cierto, aparte de decir que la potencia es del 80%, no parece haber mencionado qué prueba tiene previsto realizar, ni la alternativa para la que desea la potencia del 80%].

en cuanto al uso del análisis secuencial: si los sujetos se inscriben en el estudio al mismo tiempo, entonces tiene sentido un tamaño de muestra fijo. pero si los sujetos son pocos y distantes entre sí, puede llevar uno o dos años [o más] conseguir el número necesario de inscritos. por lo tanto, el ensayo podría durar tres o cuatro años [o más]. en ese caso, un esquema secuencial ofrece la posibilidad de detenerse antes que eso, si el efecto o los efectos que se buscan se vuelven estadísticamente significativos antes en el ensayo.

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