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

Entradas

La correlación más pequeña que te parecería relevante detectar, de −0.98 a 0.98 y distinta de 0. El signo no cambia el tamaño de muestra.

Probabilidad de concluir que hay correlación cuando no la hay; habitualmente 0.05.

Bilateral salvo que la dirección de la correlación esté fijada de antemano por el diseño, no por los datos.

Probabilidad de detectar la correlación si realmente existe; habitualmente 0.80 o 0.90.

Proporción de pares que esperas perder o excluir (0.1 = 10 %); déjalo vacío si no prevés pérdidas.

Si ya tienes una muestra, captura su número de pares (4 o más) y verás el poder que alcanzas con ella; déjalo vacío para el cálculo directo.

Ejemplo cargado

Ejemplo ilustrativo: se planea un estudio para detectar una correlación de 0.30 entre el recuento de plaquetas y los días de fiebre, con α = 0.05 bilateral, poder del 80 % y 10 % de pérdidas previstas (datos ficticios).

Datos ilustrativos, no reales.

Resultados

Cuantil de α (z)

1.960

Cuantil del poder (z)

0.842

z de Fisher de r (C)

0.3095

Pares necesarios

85

valor exacto 84.93

Pares según pwr.r.test

85

comparación (corrección de sesgo y cuantil t)

Pares con pérdidas previstas

95

valor exacto 94.36

Poder con los pares disponibles

sin n disponible

Interpretación

Para detectar una correlación de al menos 0.30 con un poder de 80 % y α = 0.050 (bilateral) se requieren 85 pares de observaciones.

La transformación z de Fisher da C = 0.3095 y un tamaño exacto de 84.93 pares. El paquete pwr de R, que corrige el sesgo de C y usa el cuantil de la t, pide 85: las dos rutas responden a la misma pregunta y la diferencia es de redondeo, no de método.

Previendo un 10 % de pérdidas o exclusiones, hay que reclutar 95 pares para terminar con 85 analizables.

Si ya cuentas con una muestra, captura su número de pares y la calculadora te dirá qué poder alcanzas con ella para esta correlación.

  • Las cifras dependen por entero de la correlación que se suponga: tómala de estudios previos o de un piloto y documenta su origen en el protocolo. La fórmula supone además pares independientes de una normal bivariada.
Poder frente al número de pares, con el tamaño calculado y el poder objetivo marcadosTamaño calculado 85 Pares de observaciones (n); Poder objetivo 80 %.PoderPoder por la fórmula clásica0 %25 %50 %75 %100 %50100150Pares de observaciones (n)Poder objetivoTamaño calculado
Poder frente al número de pares, con el tamaño calculado y el poder objetivo marcados

Explicación

El coeficiente de correlación r no se reparte como una normal: su distribución se apelmaza contra 1 conforme la correlación crece. Fisher (1915, 1921) resolvió el problema con un cambio de escala, C = ½·ln((1 + r)/(1 − r)), que sí es casi normal y cuyo error estándar depende solo del tamaño de muestra: 1/√(n − 3).

Con esa escala, el cálculo del tamaño de muestra es el de siempre: se pide que la distancia entre el valor nulo (C = 0) y el valor que se quiere detectar cubra z de α más z del poder, en unidades de error estándar. De ahí sale n = ((z + z)/C)² + 3, la fórmula que aparece en los manuales de investigación clínica.

Lo que cuenta es la magnitud de la correlación, no su signo: detectar r = −0.30 cuesta exactamente lo mismo que detectar r = 0.30. Y el costo crece muy deprisa cuando la correlación es pequeña, porque C ≈ r para valores bajos y n va con 1/C²: pasar de r = 0.30 a r = 0.10 multiplica el tamaño por nueve.

El paquete `pwr` de R resuelve el mismo problema con dos refinamientos: corrige el sesgo de C y usa el cuantil de la t en vez del de la normal. Da uno o dos sujetos menos, y aquí aparece como comparación para que el resultado sea reproducible en cualquiera de las dos rutas. La calculadora informa cuándo las dos cifras difieren tras redondear.

Ecuaciones

C=artanh⁡(r)=12ln⁡1+r1−r,SE⁡(C)=1n−3C=\operatorname{artanh}(r)=\tfrac{1}{2}\ln\frac{1+r}{1-r},\qquad \se(C)=\frac{1}{\sqrt{n-3}}
rr
correlación de Pearson que se quiere poder detectar
CC
transformación z de Fisher de r, casi normal
nn
número de pares de observaciones
Transformación z de Fisher (1915, 1921); exige pares independientes de una normal bivariada.
n=(z1−α/k+z1−βC)2+3n=\left(\frac{z_{1-\alpha/k}+z_{1-\beta}}{C}\right)^{2}+3
z1−α/kz_{1-\alpha/k}
cuantil normal de α, en la cola que corresponda al contraste
kk
2 si el contraste es bilateral, 1 si es unilateral
z1−βz_{1-\beta}
cuantil normal del poder
Fórmula clásica: el 3 devuelve los grados de libertad que gasta la transformación. Con hipótesis bilateral α se reparte entre las dos colas (k = 2) y con hipótesis unilateral se concentra en una sola (k = 1), que es lo que abarata el estudio.
1−β=Φ(∣C∣n−3−z1−α/k),naj=⌈n1−L⌉1-\beta=\Phi\left(|C|\sqrt{n-3}-z_{1-\alpha/k}\right),\qquad n_{aj}=\left\lceil\frac{n}{1-L}\right\rceil
Φ\Phi
función de distribución de la normal estándar
LL
pérdidas previstas, como proporción
⌈  ⌉\lceil\;\rceil
techo: el redondeo hacia arriba se aplica una sola vez, al final
Modo inverso (poder con el n disponible) y ajuste por pérdidas de Lwanga y Lemeshow (1991).

Código R

# Sample size to detect a correlation (Fisher's z transformation) - 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)

r <- 0.3                      # correlation worth detecting (not 0, |r| <= 0.98)
alfa <- 0.05                # significance level
lateralidad <- "bilateral"  # "bilateral" or "unilateral"
poder <- 0.8              # target power
perdidas <- 0.1        # expected losses (0-0.5)
n_dado <- 0            # pairs already available (inverse mode); 0 = not given

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

# Fisher (1915, 1921): atanh(r) is nearly normal with standard error 1/sqrt(n - 3)
c_fisher <- atanh(r)                               # 0.5 * log((1 + r) / (1 - r))
n_clasico <- ((z_alfa + z_beta) / c_fisher)^2 + 3
n_ajustado <- n_clasico / (1 - perdidas)           # Lwanga & Lemeshow (1991)

# pwr adds the bias correction r/(2*(n - 1)) and uses the t quantile instead of
# the normal one, so it lands one or two subjects below the classic formula.
# With a very large r and a modest power its uniroot finds no sign change (the
# four pairs of the lower bound already exceed the power) and it stops: that
# combination is reported as NA instead of aborting the whole script.
alternativa <- if (tside == 2) "two.sided" else if (r > 0) "greater" else "less"
n_pwr <- tryCatch(pwr.r.test(r = r, sig.level = alfa, power = poder, alternative = alternativa)$n,
                  error = function(e) NA_real_)

# Inverse mode: power reached with the pairs already available.
poder_dado <- if (n_dado >= 4) pnorm(abs(c_fisher) * sqrt(n_dado - 3) - z_alfa) else NA_real_

# Values travel WITHOUT rounding: the interface takes the ceiling once, at the end.
res <- list(z_alfa = z_alfa, z_beta = z_beta, c_fisher = c_fisher, n_clasico = n_clasico,
            n_pwr = n_pwr, n_ajustado = n_ajustado, poder_dado = poder_dado)
cat(toJSON(res, auto_unbox = TRUE, digits = NA))

# Equivalent in RStudio: presize::prec_cor(r = r, conf.width = 0.2, conf.level = 1 - alfa, method = "fisher")

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 una correlación de Pearson de 0.30 con un poder de 80 % y α = 0.050 (bilateral), mediante la transformación z de Fisher [1,2]: 85 pares de observaciones. Se añadió un 10 % por pérdidas o exclusiones previstas, con lo que el reclutamiento previsto asciende a 95 pares. El resultado se contrastó con la función pwr.r.test del paquete pwr [4], que da 85 pares. Los cálculos se realizaron con la calculadora «Muestra para una correlación» de Bioestadística abierta (Cuerpo Académico UDG-CA-1190, https://udgca1190.com.mx/herramientas/bioestadistica/muestra-correlacion), 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 Fisher RA. Frequency distribution of the values of the correlation coefficient in samples from an indefinitely large population. Biometrika. 1915;10(4):507–521. doi:10.1093/biomet/10.4.507 Fuente original
  2. 02 Fisher RA. On the “probable error” of a coefficient of correlation deduced from a small sample. Metron. 1921;1:3–32. Fuente original
  3. 03 Cohen J. Statistical Power Analysis for the Behavioral Sciences. 2.ª ed. Hillsdale, NJ: Lawrence Erlbaum Associates; 1988. Complementaria
  4. 04 Champely S. pwr: Basic Functions for Power Analysis. R package version 1.3-0. CRAN; 2020. Complementaria
  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
  6. 06 Altman DG. Practical Statistics for Medical Research. London: Chapman & Hall; 1991. Lectura didáctica