← Índice de Bioestadística abierta
Cálculo instantáneo en el navegador · verificable con R Activa

Entradas

El cambio medio más pequeño, entre la primera y la segunda medición, que cambiaría una decisión clínica. El signo no altera el resultado.

Desviación estándar de las diferencias dentro de cada par. Es el dato que manda: si lo tienes, deja vacíos σ y ρ.

Desviación estándar de cada medición por separado. Solo se usa si no capturaste la DE de las diferencias, y entonces hace falta también la correlación.

Correlación esperada entre la primera y la segunda medición del mismo participante. Solo se usa junto con σ. Admite de 0 a 0.98.

Probabilidad de concluir que hay cambio cuando no lo hay. Convencionalmente 0.05; admite de 0.001 a 0.20.

Bilateral detecta cambios en cualquier dirección y es lo habitual. Unilateral solo tiene sentido si una sola dirección es de interés y se decidió antes de ver los datos.

Probabilidad de detectar el cambio si realmente existe. Convencionalmente 0.80 o 0.90; admite de 0.50 a 0.99.

Proporción de pares que se espera perder (una de las dos mediciones falta). El total se divide entre (1 − pérdidas).

Opcional. Si ya sabes cuántos pares completos vas a tener, escríbelo y la calculadora te dirá qué poder alcanzarías. Déjalo vacío (o en 0) para el cálculo normal.

Ejemplo cargado

Ejemplo ilustrativo: detectar un descenso medio de 0.5 puntos en una escala clínica medida antes y después, con una desviación estándar de las diferencias de 1.5 puntos, α = 0.05 bilateral, poder 0.80 y 10 % de pérdidas previstas (datos ficticios).

Datos ilustrativos, no reales.

Resultados

DE de las diferencias (σ_d)

1.5

capturada

z del nivel de significación

1.960

z del poder

0.842

d de Cohen (Δ/σ_d)

0.333

Pares necesarios

73

t no central · sin redondear: 72.58

Pares (aproximación normal)

73

normal con corrección de Guenther · sin redondear: 72.56

Pares ajustados por pérdidas

81

10 % · sin redondear: 80.65

Poder con los pares disponibles

no aplica

Poder con los pares disponibles (aproximación normal)

no aplica

Interpretación

Para detectar un cambio medio de 0.5 (en las unidades de la escala; d de Cohen = 0.333) con poder 80 % y α = 0.050 (Bilateral) se requieren 73 pares.

La desviación estándar de las diferencias se tomó directamente de lo capturado: 1.5.

La fórmula normal con la corrección de Guenther da 73 pares; se reporta la solución exacta de la t no central, idéntica a power.t.test(type = "paired") de R, que es la que sostiene el cálculo.

Previendo 10 % de pérdidas, conviene reclutar 81 pares para terminar el estudio con los 73 que exige el cálculo.

Si ya sabes cuántos pares completos vas a tener, escríbelo en «modo inverso» y verás qué poder alcanzarías con esa cifra.

  • Las cifras dependen por completo de los supuestos que capturaste (el cambio que importa y la variabilidad de las diferencias): tómalos de estudios previos o de un piloto y declara su origen en el protocolo.
Poder frente al número de paresPares: 73; Poder: 80 %.PoderPoder exacto (t no central)0 %25 %50 %75 %100 %50100ParesPoder objetivo: 80 %n elegido: 73
Poder frente al número de pares

Explicación

En un diseño pareado cada participante es su propio control: se mide antes y después, o con las dos técnicas que se comparan. Lo que se analiza no son dos grupos, sino una sola columna de diferencias, y la prueba t de una muestra contrasta si su media es cero. Por eso el tamaño de muestra se cuenta en PARES, no en mediciones.

La cantidad que manda no es la variabilidad de las mediciones, sino la de las diferencias. Si las dos mediciones de una misma persona se parecen mucho, las diferencias varían poco y hacen falta muy pocos pares; si son casi independientes, el diseño pareado pierde su ventaja. La relación entre ambas es σ_d = σ·√(2(1 − ρ)): con ρ = 0.5 la desviación de las diferencias coincide con la de cada medición, y por encima de 0.5 el pareo empieza a rendir.

Esta calculadora acepta las dos rutas. Si el artículo del que partes reporta la desviación estándar de las diferencias, escríbela: es el dato exacto y manda sobre cualquier otra cosa. Si solo reporta la desviación de cada medición, captúrala junto con la correlación supuesta y la calculadora deriva σ_d. Ese ρ es un supuesto, no un dato, y conviene justificarlo y poner a prueba el resultado con valores vecinos.

El resultado principal es la solución exacta basada en la distribución t no central, la misma que devuelve power.t.test(type = "paired") en R. La aproximación normal con la corrección de Guenther (1981) se muestra al lado como fila didáctica; su corrección es la mitad de la de dos muestras porque aquí solo hay una varianza que estimar. Y como en cualquier estudio habrá pares incompletos, el ajuste por pérdidas divide el total entre (1 − L).

Ecuaciones

1−β  =  P ⁣(Tn−1,λ′>tn−1,  1−α/k),λ=n ∣δ∣σd1-\beta \;=\; P\!\left(T'_{n-1,\lambda} > t_{n-1,\;1-\alpha/k}\right), \qquad \lambda = \frac{\sqrt{n}\,|\delta|}{\sigma_d}
δ\delta
media de las diferencias que se quiere detectar
σd\sigma_d
desviación estándar de las diferencias
nn
número de pares
λ\lambda
parámetro de no centralidad
Tn−1,λ′T'_{n-1,\lambda}
distribución t no central con n − 1 grados de libertad
kk
2 si el contraste es bilateral, 1 si es unilateral
Solución exacta: n es el menor número de pares que cumple la igualdad. Coincide con power.t.test(type = "paired", tol = 1e-10) de R, que resuelve esta misma ecuación.
σd  =  σ2 (1−ρ)\sigma_d \;=\; \sigma\sqrt{2\,(1-\rho)}
σ\sigma
desviación estándar de cada medición
ρ\rho
correlación entre las dos mediciones
Ruta alternativa cuando el estudio de partida no reporta la desviación de las diferencias. Con ρ = 0.5 resulta σ_d = σ; con ρ → 1 las diferencias se anulan, y por eso se bloquea ρ ≥ 0.99.
n  =  (z1−α/k+z1−β)2σd2δ2  +  z1−α/k22,1−β  ≈  Φ ⁣(n ∣δ∣σd−z1−α/k)naj  =  ⌈n1−L⌉\begin{gathered} n \;=\; \frac{\left(z_{1-\alpha/k}+z_{1-\beta}\right)^2\sigma_d^2}{\delta^2} \;+\; \frac{z_{1-\alpha/k}^2}{2}, \qquad 1-\beta \;\approx\; \Phi\!\left(\frac{\sqrt{n}\,|\delta|}{\sigma_d} - z_{1-\alpha/k}\right) \\ n_{aj} \;=\; \left\lceil\frac{n}{1-L}\right\rceil \end{gathered}
z1−α/kz_{1-\alpha/k}
cuantil normal del nivel de significación
z1−βz_{1-\beta}
cuantil normal del poder
Φ\Phi
función de distribución normal estándar
kk
2 si el contraste es bilateral, 1 si es unilateral
LL
proporción de pérdidas previstas
najn_{aj}
pares ajustados por pérdidas
⌈  ⌉\lceil\;\rceil
techo: el redondeo hacia arriba se aplica una sola vez, al final
Aproximación normal de Guenther (1981) para una muestra y su modo inverso. El ajuste por pérdidas sigue a Lwanga y Lemeshow (1991); el techo se aplica una sola vez, al final, y el valor sin redondear queda en el detalle de la celda. Los pares son un solo grupo, así que aquí no hay techos que sumar.

Código R

# Sample size for paired means, exact non-central t - Bioestadistica abierta, UDG-CA-1190
# Runs as is in R, RStudio or webR; prints the results as JSON at the end.
library(jsonlite)

delta       <- 0.5         # mean of the within-pair differences that matters
de_dif      <- 1.5        # SD of the DIFFERENCES; 0 = not captured, then it is derived below
sigma       <- 0         # SD of each measurement; only used when de_dif is not given (0 = not captured)
rho         <- 0           # correlation between the two measurements; only used together with sigma
alfa        <- 0.05
lateralidad <- "bilateral"   # "bilateral" or "unilateral"
poder       <- 0.8         # target power (1 - beta)
perdidas    <- 0.1      # expected losses, 0 to 0.5
n_dado      <- 0        # inverse mode: pairs already available; 0 = not given

# The paired t test only needs the SD of the differences. When it is not reported,
# it follows from the SD of each measurement and their correlation: var(A - B) = 2*sigma^2*(1 - rho).
de_dif <- if (de_dif > 0) de_dif else sigma * sqrt(2 * (1 - rho))

tside   <- if (lateralidad == "bilateral") 2 else 1
z_alfa  <- qnorm(alfa/tside, lower.tail = FALSE)
z_beta  <- qnorm(poder)
d_cohen <- abs(delta)/de_dif

# Exact power of the paired t test: non-central t with nu = n - 1 and ncp = sqrt(n)*|delta|/de_dif.
# It is the body power.t.test evaluates with type = "paired" (tsample = 1).
poder_de <- function(n) {
  nu <- pmax(1e-07, n - 1)
  pt(qt(alfa/tside, nu, lower.tail = FALSE), nu, ncp = sqrt(n) * abs(delta)/de_dif, lower.tail = FALSE)
}

# Smallest number of PAIRS reaching the target power. Two guards before calling R:
# fewer than 2 pairs is not a sample size, and an effect so small that even 1e7 pairs
# falls short is reported as "not defined" instead of a made-up number.
n <- if (poder_de(2) >= poder) 2 else
     if (poder_de(1e7) < poder) NA_real_ else
     power.t.test(delta = abs(delta), sd = de_dif, sig.level = alfa, power = poder,
                  type = "paired",
                  alternative = if (tside == 2) "two.sided" else "one.sided",
                  tol = 1e-10)$n

# Classical normal approximation with Guenther's (1981) one-sample correction, as a teaching row
n_normal <- (z_alfa + z_beta)^2 * de_dif^2 / delta^2 + z_alfa^2/2

n_ajustado <- n / (1 - perdidas)   # Lwanga & Lemeshow 1991; the interface takes the ceiling

# Inverse mode: power actually reached with n_dado pairs
poder_dado <- if (n_dado >= 2) poder_de(n_dado) else NA_real_
poder_dado_normal <- if (n_dado >= 2)
  pnorm(sqrt(n_dado) * abs(delta)/de_dif - z_alfa) else NA_real_

res <- list(de_dif = de_dif, z_alfa = z_alfa, z_beta = z_beta, d_cohen = d_cohen,
            n = n, n_normal = n_normal, n_ajustado = n_ajustado,
            poder_dado = poder_dado, poder_dado_normal = poder_dado_normal)
cat(toJSON(res, auto_unbox = TRUE, digits = NA))

# Equivalent in RStudio (not run here): pwr::pwr.t.test(d = d_cohen, power = poder, type = "paired")

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 detectar un cambio medio de 0.5 (en las unidades de la escala) en un diseño de medidas pareadas, donde se tomó una desviación estándar de las diferencias de 1.5 (d de Cohen = 0.333), con α = 0.050 (Bilateral) y un poder de 80 %, mediante la solución exacta basada en la distribución t no central [1], equivalente a power.t.test(type = "paired") de R; la aproximación normal con la corrección de Guenther [2] se reporta como comparación y la convención de tamaños del efecto sigue a Cohen [3]. Se requieren 73 pares. Se añadió 10 % por pérdidas previstas, de modo que el total de pares a reclutar asciende a 81. El procedimiento sigue las recomendaciones habituales de diseño [4, 5]. Los cálculos se realizaron con la calculadora «Muestra para medias pareadas» de Bioestadística abierta (Cuerpo Académico UDG-CA-1190, https://udgca1190.com.mx/herramientas/bioestadistica/muestra-medias-pareadas), 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

  1. 01 Student. The probable error of a mean. Biometrika. 1908;6(1):1–25. doi:10.1093/biomet/6.1.1 Fuente original
  2. 02 Guenther WC. Sample size formulas for normal theory T tests. The American Statistician. 1981;35(4):243–244. doi:10.1080/00031305.1981.10479363 Fuente original
  3. 03 Cohen J. Statistical Power Analysis for the Behavioral Sciences. 2.ª ed. Hillsdale, NJ: Lawrence Erlbaum Associates; 1988. Complementaria
  4. 04 Altman DG. Practical Statistics for Medical Research. London: Chapman & Hall; 1991. Lectura didáctica
  5. 05 Hulley SB, Cummings SR, Browner WS, Grady DG, Newman TB. Designing Clinical Research. 4.ª ed. Philadelphia: Lippincott Williams & Wilkins; 2013. Lectura didáctica