Herramientas · Bioestadística abierta
Tamaño de muestra para comparar dos proporciones independientes (fórmula de Fleiss)
Escribe las dos proporciones que esperas, el nivel de significación y el poder, y obtén cuántos participantes hacen falta en cada grupo, con y sin corrección de continuidad, ajustados por las pérdidas previstas, además de la curva de poder, la interpretación en lenguaje llano y el código de R equivalente.
https://udgca1190.com.mx/herramientas/bioestadistica/muestra-dos-proporciones
Este enlace no incluye los datos pegados: son demasiado largos para una URL.
Resultados
z de α (z₁₋α/₂)
1.960
z del poder (z₁₋β)
0.842
n₁ de Fleiss sin corrección
121
fórmula de Fleiss · exacto 120.47
n₂ de Fleiss sin corrección
121
fórmula de Fleiss · exacto 120.47
n₁ con corrección de continuidad
134
Fleiss, Tytun y Ury · exacto 133.47
n₂ con corrección de continuidad
134
Fleiss, Tytun y Ury · exacto 133.47
Participantes en el grupo 1 (n₁)
134
cifra reportada · exacto 133.47
Participantes en el grupo 2 (n₂)
134
cifra reportada · exacto 133.47
Total a estudiar
268
suma de los dos grupos redondeados · exacto 266.94
Total a reclutar con las pérdidas previstas
298
suma de los dos grupos redondeados · exacto 296.61
Comparación: power.prop.test de R
121
solo con grupos iguales · exacto 120.47
h de Cohen (transformación arcoseno)
-0.364
Comparación: pwr::pwr.2p.test a partir de h
119
solo con grupos iguales · exacto 118.55
Poder alcanzable con los participantes disponibles
No aplica
sin corrección de continuidad
Interpretación
Para detectar una proporción de 70.0 % frente a una de 85.0 % con un poder de 80 % y α = 0.05 (bilateral) se requieren 134 participantes en el grupo 1 y 134 en el grupo 2, 268 en total.
La cifra reportada lleva la corrección de continuidad de Fleiss, Tytun y Ury, que aproxima lo que pedirá la prueba exacta de Fisher: 134 y 134 participantes. Sin corregir, la fórmula de Fleiss —que aproxima la χ² de Pearson— pediría 121 y 121. Reporta la que corresponda a la prueba que vas a usar.
Con grupos iguales, power.prop.test de R resuelve la misma ecuación sin corregir y devuelve 121 por grupo. La alternativa de Cohen parte de la transformación arcoseno: h = -0.364 y 119 por grupo. Son dos aproximaciones al mismo problema, así que una diferencia de unos pocos participantes es normal.
Previendo un 10 % de pérdidas durante el seguimiento, el objetivo de reclutamiento sube a 298 participantes en total, 149 y 149 por grupo.
Si ya sabes a cuánta gente puedes estudiar, escribe ese número en el campo de participantes disponibles y la calculadora dirá qué poder alcanzas con él.
- Las cifras dependen por completo de las proporciones que supusiste: tómalas de estudios previos, de un piloto o de la diferencia mínima clínicamente importante, y documenta su origen en Métodos. Un cambio pequeño en la diferencia esperada cambia mucho el tamaño de muestra.
Explicación
Antes de un ensayo o de un estudio comparativo hay que decidir a cuánta gente se va a estudiar. La pregunta que responde esta calculadora es: si el desenlace ocurre en una proporción p₁ de un grupo y en una proporción p₂ del otro, ¿cuántos participantes necesito en cada grupo para que la prueba estadística detecte esa diferencia con la probabilidad que yo exijo? Esa probabilidad es el poder, y la probabilidad de declarar una diferencia que no existe es α.
La fórmula clásica es la de Fleiss: suma el error tolerado bajo la hipótesis nula (la varianza agrupada, con las dos proporciones mezcladas) y el que se tolera bajo la hipótesis alternativa (las dos varianzas por separado), y divide todo entre el cuadrado de la diferencia que se quiere detectar. Lo que manda es esa diferencia: pasar de 0.70 a 0.85 pide unos cientos de participantes; pasar de 0.70 a 0.72 pide decenas de miles.
La corrección de continuidad de Fleiss, Tytun y Ury añade un margen porque la variable real es discreta (se cuentan personas) y la fórmula usa una curva continua. El tamaño corregido aproxima lo que pedirá la prueba exacta de Fisher; el tamaño sin corregir, lo que pedirá la χ² de Pearson. Reporta el que corresponda a la prueba que vas a usar y dilo en Métodos; aquí se muestran los dos.
La razón de asignación r = n₂/n₁ permite grupos desiguales (por ejemplo dos controles por caso). Repartir por mitades siempre da el total más pequeño: cualquier otro reparto exige más participantes en total para el mismo poder. Las pérdidas previstas se cubren dividiendo entre 1 − L al final, y el redondeo hacia arriba se aplica una sola vez, por grupo, porque no se recluta a media persona.
Todas estas cifras dependen por completo de las proporciones que supongas. No son datos: son una apuesta informada que debe venir de estudios previos, de un piloto o de la diferencia mínima que consideres clínicamente importante. Documenta de dónde salieron; un tamaño de muestra sin esa justificación no es reproducible.
Ecuaciones
- proporciones esperadas en el grupo 1 y en el grupo 2
- complemento de p₁ (y q₂ = 1 − p₂)
- razón de asignación entre los dos grupos
- proporción agrupada bajo la hipótesis nula
- cuantil normal del nivel de significación
- 2 si el contraste es bilateral, 1 si es unilateral
- cuantil normal del poder
- tamaño sin corregir que da la ecuación anterior
- función de distribución acumulada de la normal estándar
- 2 si el contraste es bilateral, 1 si es unilateral
- tamaño del efecto de Cohen para dos proporciones
- 2 si el contraste es bilateral, 1 si es unilateral
- proporción de pérdidas previstas durante el seguimiento
Código R
# Sample size for two independent proportions (Fleiss) - Bioestadistica abierta, UDG-CA-1190
# Runs as is in R, RStudio or webR; prints the results as JSON at the end.
library(jsonlite)
library(pwr)
p1 <- 0.7; p2 <- 0.85 # proportions expected in group 1 and in group 2
alfa <- 0.05 # significance level
lateralidad <- "bilateral" # "bilateral" or "unilateral"
poder <- 0.8 # target power, 1 - beta
r <- 1 # allocation ratio n2/n1 (1 = equal groups)
correccion <- "si" # "si" = report the continuity-corrected n
perdidas <- 0.1 # expected losses to follow-up, 0 to 0.5
n_dado <- 0 # inverse mode: n1 already available; 0 = not used
alternative <- if (lateralidad == "bilateral") "two.sided" else "one.sided"
tside <- if (lateralidad == "bilateral") 2 else 1
z_alfa <- qnorm(alfa / tside, lower.tail = FALSE)
z_beta <- qnorm(poder)
# Fleiss (1981; Fleiss, Levin & Paik 2003, section 4.2) written out by hand so that
# any allocation ratio is allowed: pooled variance under H0, separate variances under H1.
d <- abs(p1 - p2)
q1 <- 1 - p1
q2 <- 1 - p2
pbar <- (p1 + r * p2) / (r + 1)
qbar <- 1 - pbar
n1_fleiss <- (z_alfa * sqrt((r + 1) * pbar * qbar) + z_beta * sqrt(r * p1 * q1 + p2 * q2))^2 / (r * d^2)
n2_fleiss <- r * n1_fleiss
# Continuity correction of Fleiss, Tytun & Ury (1980): the corrected n approximates
# Fisher's exact test, the uncorrected one approximates Pearson's chi-squared.
n1_cc <- n1_fleiss / 4 * (1 + sqrt(1 + 2 * (r + 1) / (r * n1_fleiss * d)))^2
n2_cc <- r * n1_cc
n1 <- if (correccion == "si") n1_cc else n1_fleiss
n2 <- r * n1
n_total <- n1 + n2
n_ajustado <- n_total / (1 - perdidas) # Lwanga & Lemeshow 1991; the interface takes the ceiling
# Same problem solved by base R. It assumes equal groups, so with r != 1 there is
# nothing to compare against; tryCatch keeps an unsolvable design from stopping the script.
n_ppt <- if (r == 1) {
tryCatch(power.prop.test(p1 = p1, p2 = p2, sig.level = alfa, power = poder,
alternative = alternative, tol = 1e-10)$n,
error = function(e) NA_real_)
} else NA_real_
# Cohen's h (arcsine transformation) and the n that pwr derives from it. pwr has no
# "one.sided" level: the one-sided test is asked for with "greater" and h > 0, so the
# magnitude of h is what travels, exactly as pwr itself does with "two.sided".
h_cohen <- ES.h(p1, p2)
alt_pwr <- if (lateralidad == "bilateral") "two.sided" else "greater"
n_pwr_h <- if (r == 1) {
tryCatch(pwr.2p.test(h = abs(h_cohen), sig.level = alfa, power = poder,
alternative = alt_pwr)$n,
error = function(e) NA_real_)
} else NA_real_
# Inverse mode: power attainable with n1 = n_dado and n2 = r * n_dado, by the same
# normal formula of Fleiss without the continuity correction.
poder_dado <- if (n_dado >= 2) {
pnorm((d * sqrt(r * n_dado) - z_alfa * sqrt((r + 1) * pbar * qbar)) / sqrt(r * p1 * q1 + p2 * q2))
} else NA_real_
res <- list(z_alfa = z_alfa, z_beta = z_beta,
n1_fleiss = n1_fleiss, n2_fleiss = n2_fleiss,
n1_cc = n1_cc, n2_cc = n2_cc,
n1 = n1, n2 = n2, n_total = n_total, n_ajustado = n_ajustado,
n_ppt = n_ppt, h_cohen = h_cohen, n_pwr_h = n_pwr_h,
poder_dado = poder_dado)
cat(toJSON(res, auto_unbox = TRUE, digits = NA))
# Equivalent in RStudio (not run in the browser):
# epiR::epi.sscompb(treat = 0.85, control = 0.70, n = NA, power = 0.80, r = 1, conf.level = 0.95)
Este es el mismo código que valida la calculadora: cópialo y ejecútalo en R o RStudio para reproducir el resultado.
La verificación con R dentro del navegador llegará en una próxima versión; mientras tanto, copia el código y ejecútalo en RStudio.
Métodos para manuscrito
El tamaño de muestra se calculó para comparar dos proporciones independientes (70.0 % frente a 85.0 %, razón de asignación 1), suponiendo que esas proporciones provienen de estudios previos o de un piloto, con α = 0.05 (bilateral) y un poder de 80 %, mediante la fórmula de Fleiss para dos proporciones independientes con la corrección de continuidad de Fleiss, Tytun y Ury [1,2]; se requieren 134 y 134 participantes por grupo, 268 en total. Se añadió un 10 % por pérdidas previstas [7], de modo que el objetivo de reclutamiento es de 298 participantes. Los cálculos se realizaron con la calculadora «Tamaño de muestra (dos proporciones)» de Bioestadística abierta (Cuerpo Académico UDG-CA-1190, https://udgca1190.com.mx/herramientas/bioestadistica/muestra-dos-proporciones), verificada contra R.
Párrafo listo para la sección de Métodos; los números entre corchetes remiten a la lista de referencias.
Referencias
- 01 Fleiss JL, Tytun A, Ury HK. A simple approximation for calculating sample sizes for comparing independent proportions. Biometrics. 1980;36(2):343–346. doi:10.2307/2529990 PMID: 26625475 Fuente original
- 02 Fleiss JL, Levin B, Paik MC. Statistical Methods for Rates and Proportions. 3.ª ed. Hoboken, NJ: John Wiley & Sons; 2003. doi:10.1002/0471445428 Fuente original
- 03 Casagrande JT, Pike MC, Smith PG. An improved approximate formula for calculating sample sizes for comparing two binomial distributions. Biometrics. 1978;34(3):483–486. doi:10.2307/2530613 PMID: 719125 Complementaria
- 04 Lachin JM. Introduction to sample size determination and power analysis for clinical trials. Controlled Clinical Trials. 1981;2(2):93–113. doi:10.1016/0197-2456(81)90001-5 PMID: 7273794 Complementaria
- 05 Cohen J. Statistical Power Analysis for the Behavioral Sciences. 2.ª ed. Hillsdale, NJ: Lawrence Erlbaum Associates; 1988. Complementaria
- 06 Champely S. pwr: Basic Functions for Power Analysis. R package version 1.3-0. CRAN; 2020. Complementaria
- 07 Lwanga SK, Lemeshow S. Sample Size Determination in Health Studies: A Practical Manual. Geneva: World Health Organization; 1991. Lectura didáctica
- 08 Hulley SB, Cummings SR, Browner WS, Grady DG, Newman TB. Designing Clinical Research. 4.ª ed. Philadelphia: Lippincott Williams & Wilkins; 2013. Lectura didáctica